69f1731bbb
* chore: bump chromium in DEPS to cbdeef954dfc34e94c8ca9cf72ad326b4a121158 * chore: bump chromium in DEPS to 29723f905baeab1d4228eef2c31cdb341ebeffe0 * chore: bump chromium in DEPS to 44d6d78e852137fff58c14ed26ab1e803e5bf822 * update patches * chore: bump chromium in DEPS to 8a3a0fccb39d6b8334c9a0496c0d5056e50cdb3f * chore: update patches * refactor: fix PrintBackend::CreateInstance() calls Refs: https://chromium-review.googlesource.com/c/chromium/src/+/2354541 * chore: bump chromium in DEPS to b9ebec3bcb1cabdd1426f367636f54cc98e0500e * chore: remove patches to code that was deleted upstream CL: https://chromium-review.googlesource.com/c/chromium/src/+/2360314 * Remove uses of kCGColorSpaceITUR_2020_PQ_EOTF/HLG CL: https://chromium-review.googlesource.com/c/chromium/src/+/2363950 just garden variety code shear * chore: update patch indices * Move ColorModel to //printing/mojom/print.mojom https://chromium-review.googlesource.com/c/chromium/src/+/2355083 sync with printing ColorModel changes: moved to mojo, different naming scheme * chore: bump chromium in DEPS to 56c4b4d2ce5ba941acd2e0fdb5100e8a48847134 * chore: bump chromium in DEPS to 130501f220b684a79dc82c17e236e63ac1f2a093 * Convert PrintHostMsg_DidGetPrintedPagesCount to Mojo https://chromium-review.googlesource.com/c/chromium/src/+/2326857 Update argument list to Print() * chore: update patch indices * DumpAccTree: convert utf16 to utf8 in PropertyFilter https://chromium-review.googlesource.com/c/chromium/src/+/2360218 * chore: bump chromium in DEPS to 3058368c6646e0dc8be6f8ea838b0343428b7998 * chore: bump chromium in DEPS to f51b4e6555364363c61438dac7afd988c8347bfc * chore: bump chromium in DEPS to 2dcc6f8fc23ac41b2499eb69dee0b4017e9d1046 * update patches * chore: bump chromium in DEPS to 2d8e98ecedc7e4905540b053bc1c87e964715be5 * update patches * 2345900: Move content::RecordContentToVisibleTimeRequest struct to mojo https://chromium-review.googlesource.com/c/chromium/src/+/2345900 * update patches * 2345900: Move content::RecordContentToVisibleTimeRequest struct to mojo https://chromium-review.googlesource.com/c/chromium/src/+/2345900 * 2367394: Remove net::LOAD_DO_NOT_SEND_COOKIES and net::LOAD_DO_NOT_SEND_AUTH_DATA. https://chromium-review.googlesource.com/c/chromium/src/+/2367394 * 2373227: [XProto] Consolidate all <X11/*> includes to //ui/gfx/x/x11.h https://chromium-review.googlesource.com/c/chromium/src/+/2373227 * fixup! 2373227: [XProto] Consolidate all <X11/*> includes to //ui/gfx/x/x11.h * chore: bump chromium in DEPS to c090e3f960520cbd2328608b97f87238c76d6143 * update patches * chore: bump chromium in DEPS to 13a25e0a755de9a14271022c595f3d2e29829e1a * chore: bump chromium in DEPS to 6adbb767b012c41efaeab0d1bdbb3eefed0977bc * chore: bump chromium in DEPS to 339ec5455c5932ef1322ea9953a6349b0732199e * chore: bump chromium in DEPS to 20291807c33f7ef4ef4f57d62075e099b027bfe6 * chore: bump chromium in DEPS to 226fbd1b8b17d4ac84fdb9548ef3a1c646878d47 * update patches * fixup disable_color_correct_rendering patch * chore: bump chromium in DEPS to 577c45979cad4359f2e206d68efd9317d3d79315 * update patches * viz: Rename RenderPass to CompositorRenderPass (and related types). https://chromium-review.googlesource.com/c/chromium/src/+/2380730 * chore: bump chromium in DEPS to 37e2ad5303f2c03a1b5d8eda65341bf2561196cd * update patches * add kOmitCookies_Electron * update patch * chore: bump chromium in DEPS to 256e42409ea63a7e71016de07818a983a97db463 * update patches * fix worker script ready hook https://chromium-review.googlesource.com/c/chromium/src/+/2335713 * Fixup printing page ranges patch * [printing] Move PrintMsg_PrintPages_Params to print.mojom https://chromium-review.googlesource.com/c/chromium/src/+/2340854 * Add MIME sniffer overloads that take base::StringPieces https://chromium-review.googlesource.com/c/chromium/src/+/2382896 * [printing] Move PrintHostMsg_PreviewIds to print.mojom https://chromium-review.googlesource.com/c/chromium/src/+/2379455 * fixup test due to new DCHECK https://chromium-review.googlesource.com/c/chromium/src/+/2333750 * stop sending cookies when useSessionCookies is false * chore: bump chromium in DEPS to dd429dbc556449951ee8160d8a4d61fd95a139d5 * update patches * chore: bump chromium in DEPS to 5202bde3f9f44c2065f5dacf27e7000dd19e4e4d * chore: bump chromium in DEPS to 099e8e07b89da65932431bb0fd51b6f7f5344c19 * chore: bump chromium in DEPS to 104e5da2a43b759732d5b94bfc750b3a9a639653 * chore: bump chromium in DEPS to a4519ce657af25834e355315fd7fefa77b13426a * update patches * Make FileURLLoaderFactory always owned by its |receivers_|. https://chromium-review.googlesource.com/c/chromium/src/+/2337411 * Make FileURLLoaderFactory always owned by its |receivers_|. https://chromium-review.googlesource.com/c/chromium/src/+/2337411 * chore: bump chromium in DEPS to 1b62e9e8c8eaf6b8e3a9c77ee67a4c1bfa6a4d6b * chore: update patches * fixup! Make FileURLLoaderFactory always owned by its |receivers_|. * chore: update patches - mac: Disable CoreServices _CSCheckFix. https://chromium-review.googlesource.com/c/chromium/src/+/2401334 - [XProto] Remove bad DCHECK in x11_error_tracker.cc https://chromium-review.googlesource.com/c/chromium/src/+/2402304 - Move content/browser/frame_host/* over to content/browser/renderer_host/ https://chromium-review.googlesource.com/c/chromium/src/+/2401303 * Refactor WebContentSettingsClient to dedupe AllowXYZ methods https://chromium-review.googlesource.com/c/chromium/src/+/2353552 * Introduce NonNetworkURLLoaderFactoryBase class. https://chromium-review.googlesource.com/c/chromium/src/+/2357559 * [XProto] Remove usage of all Xlib headers https://chromium-review.googlesource.com/c/chromium/src/+/2392140 * fixup! chore: update patches * chore: bump chromium in DEPS to c1df55fbeb8207d036a604f59e4ea4e8ee79930a * chore: update patches * Move content::WebPreferences struct to Blink https://chromium-review.googlesource.com/c/chromium/src/+/2397670 * chore: bump chromium in DEPS to 57a23ec4884fff6c2f8d9b8536131cdc9b551ec2 * Set appid on Pip windows. https://chromium-review.googlesource.com/c/chromium/src/+/2388274 * fixup! Set appid on Pip windows. * fix: add a patch to remove deprecated factory * chore: bump chromium in DEPS to 1a9ddb7ea43955877823d5c4dcbf241b64228635 * fix compilation on windows * chore: bump chromium in DEPS to 234e6c6a77f61ffad9335099d9b13892cf88fd44 * chore: update patches * chore: bump chromium in DEPS to 7631eb0a9f57a8a47d3c28e1d265961b3a4d6b2b * chore: update patches * chore: bump chromium in DEPS to f9c34cd485845b95c2d17a7f55fdf92cda9a1b3a * chore: update patches * chore: implement GetSurveyAPIKey Refs: https://chromium-review.googlesource.com/c/chromium/src/+/2362182 * chore: replace CreateWebUIURLLoader with CreateWebUIURLLoaderFactory Refs: https://chromium-review.googlesource.com/c/chromium/src/+/2358309 * chore: bump chromium in DEPS to 5bdbd2373da884adf41c087be1465fcc344d168c * chore: update node patches for common.gypi * chore: update patches * chore: non_network_url_loader_factory_base was moved Refs: https://chromium-review.googlesource.com/c/chromium/src/+/2357431 * 2415752: Reland "Reland "OOR-CORS: Remove BlinkCORS supporting code outside Blink"" Refs: https://chromium-review.googlesource.com/c/chromium/src/+/2415752 * chore: bump chromium in DEPS to b943d006a33ec5bc1743792d64724693eb357083 * fix: replace x11::None with x11::Window::None * chore: update patches * chore: update patches * fix: cast x11::Window to int * 2402123: Use end date when deleting http auth cache Refs: https://chromium-review.googlesource.com/c/chromium/src/+/2402123 * 2320268: Migrate DragHostMsg_StartDragging to Mojo Refs: https://chromium-review.googlesource.com/c/chromium/src/+/2320268 * 2401303: Move content/browser/frame_host/* over to content/browser/renderer_host/ https://chromium-review.googlesource.com/c/chromium/src/+/2401303 * chore: fix lint * chore: fix build * Update config.yml Co-authored-by: Electron Bot <anonymous@electronjs.org> Co-authored-by: Charles Kerr <charles@charleskerr.com> Co-authored-by: Jeremy Rose <nornagon@nornagon.net> Co-authored-by: John Kleinschmidt <jkleinsc@github.com> Co-authored-by: deepak1556 <hop2deep@gmail.com> Co-authored-by: Samuel Attard <samuel.r.attard@gmail.com> Co-authored-by: Samuel Attard <sattard@slack-corp.com>
109 lines
5.3 KiB
Diff
109 lines
5.3 KiB
Diff
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
From: Andy Locascio <andy@slack-corp.com>
|
|
Date: Tue, 18 Feb 2020 14:35:04 -0800
|
|
Subject: content: allow embedder to prevent locking scheme registry
|
|
|
|
The //content layer requires all schemes to be registered during startup,
|
|
because Add*Scheme aren't threadsafe. However, Electron exposes the option to
|
|
register additional schemes via JavaScript in the main process before the app
|
|
is ready, but after the //content layer has already locked the registry.
|
|
|
|
This allows embedders to optionally keep the scheme registry unlocked, and it
|
|
is their responsibility to ensure that it is not accessed in a way that would
|
|
cause potential thread-safety issues.
|
|
|
|
Previously upstreamed patch: https://chromium-review.googlesource.com/c/chromium/src/+/1637040
|
|
|
|
This change was lost during upstream refactor in
|
|
https://chromium-review.googlesource.com/c/chromium/src/+/1901591, we should try
|
|
re-submitting the patch.
|
|
|
|
diff --git a/content/app/content_main_runner_impl.cc b/content/app/content_main_runner_impl.cc
|
|
index 2491c673cfe97a35119009b9030daaae66bea718..30e9e2cb3acfe1852e26fdf21b441746d999f4e2 100644
|
|
--- a/content/app/content_main_runner_impl.cc
|
|
+++ b/content/app/content_main_runner_impl.cc
|
|
@@ -645,7 +645,7 @@ int ContentMainRunnerImpl::Initialize(const ContentMainParams& params) {
|
|
}
|
|
#endif
|
|
|
|
- RegisterContentSchemes();
|
|
+ RegisterContentSchemes(delegate_->ShouldLockSchemeRegistry());
|
|
ContentClientInitializer::Set(process_type, delegate_);
|
|
|
|
#if !defined(OS_ANDROID)
|
|
diff --git a/content/common/url_schemes.cc b/content/common/url_schemes.cc
|
|
index dc37f121130d83e200d73dd1ad566847548ac0fd..63080c1bc486a488841fc5d2081f4d5d4a00bde3 100644
|
|
--- a/content/common/url_schemes.cc
|
|
+++ b/content/common/url_schemes.cc
|
|
@@ -49,7 +49,7 @@ std::vector<std::string>& GetMutableServiceWorkerSchemes() {
|
|
|
|
} // namespace
|
|
|
|
-void RegisterContentSchemes() {
|
|
+void RegisterContentSchemes(bool should_lock_registry) {
|
|
// On Android and in tests, schemes may have been registered already.
|
|
if (g_registered_url_schemes)
|
|
return;
|
|
@@ -106,7 +106,8 @@ void RegisterContentSchemes() {
|
|
// threadsafe so must be called when GURL isn't used on any other thread. This
|
|
// is really easy to mess up, so we say that all calls to Add*Scheme in Chrome
|
|
// must be inside this function.
|
|
- url::LockSchemeRegistries();
|
|
+ if (should_lock_registry)
|
|
+ url::LockSchemeRegistries();
|
|
|
|
// Combine the default savable schemes with the additional ones given.
|
|
GetMutableSavableSchemes().assign(std::begin(kDefaultSavableSchemes),
|
|
diff --git a/content/common/url_schemes.h b/content/common/url_schemes.h
|
|
index 3038f9d25798f36811b6398f8cc0e7d83ecc41b0..68189c36c47ef85b345b0ccc40c456f889977bee 100644
|
|
--- a/content/common/url_schemes.h
|
|
+++ b/content/common/url_schemes.h
|
|
@@ -16,7 +16,7 @@ namespace content {
|
|
// parsed as "standard" or "referrer" with the src/url/ library, then locks the
|
|
// sets of schemes down. The embedder can add additional schemes by
|
|
// overriding the ContentClient::AddAdditionalSchemes method.
|
|
-CONTENT_EXPORT void RegisterContentSchemes();
|
|
+CONTENT_EXPORT void RegisterContentSchemes(bool should_lock_registry = true);
|
|
|
|
// Re-initializes schemes for tests.
|
|
CONTENT_EXPORT void ReRegisterContentSchemesForTests();
|
|
diff --git a/content/public/app/content_main_delegate.cc b/content/public/app/content_main_delegate.cc
|
|
index e6379748886956da819523200aa35f8f95d523ee..46110a92ba9849112889f3e93c1dccbbd4911dda 100644
|
|
--- a/content/public/app/content_main_delegate.cc
|
|
+++ b/content/public/app/content_main_delegate.cc
|
|
@@ -36,6 +36,10 @@ int ContentMainDelegate::TerminateForFatalInitializationError() {
|
|
return 0;
|
|
}
|
|
|
|
+bool ContentMainDelegate::ShouldLockSchemeRegistry() {
|
|
+ return true;
|
|
+}
|
|
+
|
|
bool ContentMainDelegate::ShouldCreateFeatureList() {
|
|
return true;
|
|
}
|
|
diff --git a/content/public/app/content_main_delegate.h b/content/public/app/content_main_delegate.h
|
|
index abb46995385fccddf8363296fb0253624a4111c7..715d0818c03cfa7e5b9877b3ab83d1488f2f040f 100644
|
|
--- a/content/public/app/content_main_delegate.h
|
|
+++ b/content/public/app/content_main_delegate.h
|
|
@@ -65,6 +65,20 @@ class CONTENT_EXPORT ContentMainDelegate {
|
|
// returning initialization error code. Default behavior is CHECK(false).
|
|
virtual int TerminateForFatalInitializationError();
|
|
|
|
+ // Allows the embedder to prevent locking the scheme registry. The scheme
|
|
+ // registry is the list of URL schemes we recognize, with some additional
|
|
+ // information about each scheme such as whether it expects a host. The
|
|
+ // scheme registry is not thread-safe, so by default it is locked before any
|
|
+ // threads are created to ensure single-threaded access. An embedder can
|
|
+ // override this to prevent the scheme registry from being locked during
|
|
+ // startup, but if they do so then they are responsible for making sure that
|
|
+ // the registry is only accessed in a thread-safe way, and for calling
|
|
+ // url::LockSchemeRegistries() when initialization is complete. If possible,
|
|
+ // prefer registering additional schemes through
|
|
+ // ContentClient::AddAdditionalSchemes over preventing the scheme registry
|
|
+ // from being locked.
|
|
+ virtual bool ShouldLockSchemeRegistry();
|
|
+
|
|
// Allows the embedder to perform platform-specific initialization before
|
|
// creating the main message loop.
|
|
virtual void PreCreateMainMessageLoop() {}
|