
* chore: bump chromium in DEPS to 91.0.4435.3 * build: add 'use_rts' definition Refs:2694187
* chore: update patches * chore: media_internal_resources becomes resources Refs:2699022
* chore: update patches * refactor: extensions::ViewType moved to mojom Refs:2710351
* chore: might_have_observers has been removed Refs:2667839
* refactor: CertVerifier is not in the network namespace anymore Refs:2689805
* refactor: ExtensionUserScriptManager is now UserScriptManager Refs:2657617
* refactor: content::SiteInstance::GetSiteForURL was removed Refs:2680274
* refactor: MenuItemType was moved to mojom Refs:2071443
* refactor: extensions::ViewType was moved to mojom Refs:2710351
* refacotr: grit::ResourceMap replaced with webui::ResourcePath Refs:2685601
* refactor: blink::MenuItem::Type was moved to mojom Refs:2071443
* refactor: CreateDataPipe deprecated form was removed Refs:2698090
* refactor: DesktopMediaList::Type replaces content::DesktopMediaType_* Refs:2700637
* chore: wire up activation_time in OSR Refs:2638372
* chore: remove deleted file from chromium_src list * chore: fix lint * update patches * chore: bump chromium in DEPS to 91.0.4438.0 * chore: bump chromium in DEPS to 91.0.4439.0 * chore: bump chromium in DEPS to 91.0.4440.0 * chore: bump chromium in DEPS to 91.0.4441.0 * chore: bump chromium in DEPS to 91.0.4442.0 * chore: bump chromium in DEPS to 91.0.4443.0 * chore: bump chromium in DEPS to 91.0.4445.0 * chore: bump chromium in DEPS to 91.0.4446.0 * chore: update patches * fixup gn check * Merge branch 'master' into roller/chromium/master * update to xcode 12.4.0 Needed because of8008deb41c
* 2752406: [LSC] Replace base::string16 with std::u16string in //ui2752406
* 2752406: [LSC] Replace base::string16 with std::u16string in //ui2752406
* 2752932: Associate each AwProxyingURLLoaderFactory with a frame tree node id.2752932
* 2651385: Moving Profile::shared_cors_origin_access_list_ into //content layer.2651385
* 2734095: Introduce StoragePartitionId type to wrap current string representation.2734095
* chore: bump chromium in DEPS to 91.0.4448.0 * Update patches * 2743594: Remove WebSize from blink.2743594
* 2725403: Add URLLoaderClient::OnReceiveEarlyHints()2725403
* 2651385: Moving Profile::shared_cors_origin_access_list_ into //content layer.2651385
* 2721718: Move HostID to extensions::mojom::HostID2721718
* 2733070: Rename observer to URLLoaderNetworkServiceObserver2733070
* Use nogncheck for content/browser/site_instance_impl.h This is needed because //content/browser:browser is not a visible target * 2648046: Introduce alert notification helper .app2648046
* 2752406: [LSC] Replace base::string16 with std::u16string in //ui2752406
* only include mac notifications on mac * add additional skipping of atk toolchain check * 2757472: Reland "Reland "[LSC] Remove base::string16 alias""2757472
* 2757472: Reland "Reland "[LSC] Remove base::string16 alias""2757472
* 2720306: [api] Remove deprecated [Shared]ArrayBuffer API2720306
* Fixup 2721718: Move HostID to extensions::mojom::HostID * fixup 2651385: Moving Profile::shared_cors_origin_access_list_ into //content layer * Fixup 2752406: [LSC] Replace base::string16 with std::u16string in //ui * Fixup 2725403: Add URLLoaderClient::OnReceiveEarlyHints() * update node headers * chore: bump chromium in DEPS to 91.0.4449.0 * Revert "chore: bump chromium in DEPS to 91.0.4449.0" This reverts commitbccafa0289
. * 2693008: Fix loading non-system cursors on Windows on browser_tests2693008
* 2757472: Reland "Reland "[LSC] Remove base::string16 alias""2757472
* undo changes to WebContentsPreferences::GetPreloadPath to fix mac build * fix StrCat issue * incantations for WebContentsPreferences::GetPreloadPath wide strings * bump nan * fix GetAsString maybe? * windows build fixes * more windows build fix * SetAppUserModelID -> wstring * upgrade nan dep in tests * lint * wstrings are cross-platform * linter * only bind setAppUserModelId on windows * fix a messed up merge * well that was an odyssey * backport fcdf35e from v8 to fix nan crash * disable typedarrays-test.js * don't defer in NSWindow creation2707696
* use PartitionAllocator for ArrayBuffers in the main process * fix patches * chore: omit some unnecessary conversions * refactor: make LoginItemSettings::path a wstring * refactor: make ShowTaskDialog take a wstr * Revert "refactor: make LoginItemSettings::path a wstring" This reverts commit9127cff58b
. Co-authored-by: Samuel Attard <samuel.r.attard@gmail.com> Co-authored-by: John Kleinschmidt <jkleinsc@electronjs.org> Co-authored-by: John Kleinschmidt <jkleinsc@github.com> Co-authored-by: Jeremy Rose <nornagon@nornagon.net> Co-authored-by: Jeremy Rose <jeremya@chromium.org> Co-authored-by: Charles Kerr <charles@charleskerr.com>
121 lines
5.9 KiB
Diff
121 lines
5.9 KiB
Diff
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
From: Shelley Vohr <shelley.vohr@gmail.com>
|
|
Date: Tue, 4 Feb 2020 08:59:32 -0700
|
|
Subject: Revert "Remove ContentRendererClient::ShouldFork."
|
|
|
|
This reverts the CL at https://chromium-review.googlesource.com/c/chromium/src/+/1812128.
|
|
We use it to force a new renderer process for navigations, and need to start a new renderer process
|
|
for every navigation to keep Node.js working properly. Once Native Modules in the renderer process
|
|
are required to be NAPI or context aware (Electron v11), this patch can be removed.
|
|
|
|
diff --git a/chrome/renderer/chrome_content_renderer_client.cc b/chrome/renderer/chrome_content_renderer_client.cc
|
|
index 08dda0d5779cefcc0aa2d7d691d8f84137975b5e..d3439ac00ea7e58c2eee210831d38bb8745468cc 100644
|
|
--- a/chrome/renderer/chrome_content_renderer_client.cc
|
|
+++ b/chrome/renderer/chrome_content_renderer_client.cc
|
|
@@ -1282,6 +1282,25 @@ ChromeContentRendererClient::GetProtocolHandlerSecurityLevel() {
|
|
#endif
|
|
}
|
|
|
|
+bool ChromeContentRendererClient::ShouldFork(WebLocalFrame* frame,
|
|
+ const GURL& url,
|
|
+ const std::string& http_method,
|
|
+ bool is_initial_navigation,
|
|
+ bool is_server_redirect) {
|
|
+ DCHECK(!frame->Parent());
|
|
+
|
|
+ // If |url| matches one of the prerendered URLs, stop this navigation and try
|
|
+ // to swap in the prerendered page on the browser process. If the prerendered
|
|
+ // page no longer exists by the time the OpenURL IPC is handled, a normal
|
|
+ // navigation is attempted.
|
|
+ if (prerender_dispatcher_.get() &&
|
|
+ prerender_dispatcher_->IsPrerenderURL(url)) {
|
|
+ return true;
|
|
+ }
|
|
+
|
|
+ return false;
|
|
+}
|
|
+
|
|
void ChromeContentRendererClient::WillSendRequest(
|
|
WebLocalFrame* frame,
|
|
ui::PageTransition transition_type,
|
|
diff --git a/chrome/renderer/chrome_content_renderer_client.h b/chrome/renderer/chrome_content_renderer_client.h
|
|
index 4fb3926576c80881a9230bb91bfe7655fec12df1..988769f833354d16b68dd9ace603d17e157a666a 100644
|
|
--- a/chrome/renderer/chrome_content_renderer_client.h
|
|
+++ b/chrome/renderer/chrome_content_renderer_client.h
|
|
@@ -121,6 +121,11 @@ class ChromeContentRendererClient
|
|
base::SingleThreadTaskRunner* compositor_thread_task_runner) override;
|
|
bool RunIdleHandlerWhenWidgetsHidden() override;
|
|
bool AllowPopup() override;
|
|
+ bool ShouldFork(blink::WebLocalFrame* frame,
|
|
+ const GURL& url,
|
|
+ const std::string& http_method,
|
|
+ bool is_initial_navigation,
|
|
+ bool is_server_redirect) override;
|
|
blink::ProtocolHandlerSecurityLevel GetProtocolHandlerSecurityLevel()
|
|
override;
|
|
void WillSendRequest(blink::WebLocalFrame* frame,
|
|
diff --git a/content/public/renderer/content_renderer_client.cc b/content/public/renderer/content_renderer_client.cc
|
|
index 9745f3208baaf1654c8386c11067958c0e47fd28..8ebebd91eb1216d5ccb4dd31dad0b9772053f2f1 100644
|
|
--- a/content/public/renderer/content_renderer_client.cc
|
|
+++ b/content/public/renderer/content_renderer_client.cc
|
|
@@ -117,6 +117,14 @@ bool ContentRendererClient::HandleNavigation(
|
|
}
|
|
#endif
|
|
|
|
+bool ContentRendererClient::ShouldFork(blink::WebLocalFrame* frame,
|
|
+ const GURL& url,
|
|
+ const std::string& http_method,
|
|
+ bool is_initial_navigation,
|
|
+ bool is_server_redirect) {
|
|
+ return false;
|
|
+}
|
|
+
|
|
void ContentRendererClient::WillSendRequest(
|
|
blink::WebLocalFrame* frame,
|
|
ui::PageTransition transition_type,
|
|
diff --git a/content/public/renderer/content_renderer_client.h b/content/public/renderer/content_renderer_client.h
|
|
index f259835ef4cabb8923f8b0fe9b3f6ae8f2b2b79f..205685f200d54e53829ddc29de3bc07e24ea13b1 100644
|
|
--- a/content/public/renderer/content_renderer_client.h
|
|
+++ b/content/public/renderer/content_renderer_client.h
|
|
@@ -207,6 +207,13 @@ class CONTENT_EXPORT ContentRendererClient {
|
|
bool is_redirect);
|
|
#endif
|
|
|
|
+ // Returns true if we should fork a new process for the given navigation.
|
|
+ virtual bool ShouldFork(blink::WebLocalFrame* frame,
|
|
+ const GURL& url,
|
|
+ const std::string& http_method,
|
|
+ bool is_initial_navigation,
|
|
+ bool is_server_redirect);
|
|
+
|
|
// Notifies the embedder that the given frame is requesting the resource at
|
|
// |url|. If the function returns a valid |new_url|, the request must be
|
|
// updated to use it.
|
|
diff --git a/content/renderer/render_frame_impl.cc b/content/renderer/render_frame_impl.cc
|
|
index be3779de84dbda14c3425c5115da78ab703e9cfb..6dfa89f3117cb7b0165c352feb79e95b4a315061 100644
|
|
--- a/content/renderer/render_frame_impl.cc
|
|
+++ b/content/renderer/render_frame_impl.cc
|
|
@@ -5346,6 +5346,23 @@ void RenderFrameImpl::BeginNavigation(
|
|
// we can do a per-frame check here rather than a process-wide check.
|
|
bool should_fork = HasWebUIScheme(url) || HasWebUIScheme(old_url) ||
|
|
(enabled_bindings_ & kWebUIBindingsPolicyMask);
|
|
+
|
|
+ if (!should_fork && url.SchemeIs(url::kFileScheme)) {
|
|
+ // Fork non-file to file opens (see https://crbug.com/1031119). Note that
|
|
+ // this may fork unnecessarily if another tab (hosting a file or not)
|
|
+ // targeted this one before its initial navigation, but that shouldn't
|
|
+ // cause a problem.
|
|
+ should_fork = !old_url.SchemeIs(url::kFileScheme);
|
|
+ }
|
|
+
|
|
+ if (!should_fork) {
|
|
+ // Give the embedder a chance.
|
|
+ bool is_initial_navigation = render_view_->history_list_length_ == 0;
|
|
+ should_fork = GetContentClient()->renderer()->ShouldFork(
|
|
+ frame_, url, info->url_request.HttpMethod().Utf8(),
|
|
+ is_initial_navigation, false /* is_redirect */);
|
|
+ }
|
|
+
|
|
if (should_fork) {
|
|
OpenURL(std::move(info));
|
|
return; // Suppress the load here.
|