* chore: bump chromium in DEPS to 99e60beb593ecf98f8a441e3f03a13b68cfcb311 * update patches * chore: bump chromium in DEPS to b1abadda21f417ba5e8276c4dd779d31445d16cd * update patches * 2146532: gtkui: Fix standalone Ozone/Wayland configuration https://chromium-review.googlesource.com/c/chromium/src/+/2146532 * 2145152: Pass source URL when setting a cookie https://chromium-review.googlesource.com/c/chromium/src/+/2145152 * lint * chore: bump chromium in DEPS to 8897189f1da5a3670bbe32d343767fd71f80d779 * chore: bump chromium in DEPS to 8ac51eeee93a02ed5b81f47e28627079edeecde0 * chore: bump chromium in DEPS to e897b8003f3a5f3c8d654eee9b03c513046ae7ea * chore: bump chromium in DEPS to 7b80f9c82122600291d041c530698616a4716cdf * Update patches * Move definition of WebInputEvent enums into mojo https://chromium-review.googlesource.com/c/chromium/src/+/2152777 * update patches Co-authored-by: Electron Bot <anonymous@electronjs.org> Co-authored-by: Jeremy Apthorp <nornagon@nornagon.net> Co-authored-by: John Kleinschmidt <jkleinsc@github.com>
		
			
				
	
	
		
			121 lines
		
	
	
	
		
			6 KiB
			
		
	
	
	
		
			Diff
		
	
	
	
	
	
			
		
		
	
	
			121 lines
		
	
	
	
		
			6 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 a513a74fa4f5f022b5fb269560953c3f0dd6a6d5..4569b87200227a889c10dfc4f4c337eab5b46950 100644
 | 
						|
--- a/chrome/renderer/chrome_content_renderer_client.cc
 | 
						|
+++ b/chrome/renderer/chrome_content_renderer_client.cc
 | 
						|
@@ -1288,6 +1288,25 @@ bool ChromeContentRendererClient::AllowPopup() {
 | 
						|
 #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 77cf178fd26bb6abd4666ccb4b0c5eea4dff3413..68bc006ef8aa3e39e9e2131782611f9b06e22197 100644
 | 
						|
--- a/chrome/renderer/chrome_content_renderer_client.h
 | 
						|
+++ b/chrome/renderer/chrome_content_renderer_client.h
 | 
						|
@@ -126,6 +126,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;
 | 
						|
   void WillSendRequest(blink::WebLocalFrame* frame,
 | 
						|
                        ui::PageTransition transition_type,
 | 
						|
                        const blink::WebURL& url,
 | 
						|
diff --git a/content/public/renderer/content_renderer_client.cc b/content/public/renderer/content_renderer_client.cc
 | 
						|
index 045b6ccd9b75baa6d48e262adba9986599e4a79a..1b42aaa81ec0963ade99533c6cff8410bac32992 100644
 | 
						|
--- a/content/public/renderer/content_renderer_client.cc
 | 
						|
+++ b/content/public/renderer/content_renderer_client.cc
 | 
						|
@@ -105,6 +105,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 bb990768e528ae66b340402084e9785eb1deb132..5e73a1cc9d3c35e7e69ac4ae1cbe7c20d399613e 100644
 | 
						|
--- a/content/public/renderer/content_renderer_client.h
 | 
						|
+++ b/content/public/renderer/content_renderer_client.h
 | 
						|
@@ -217,6 +217,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. The |attach_same_site_cookies| output parameter
 | 
						|
diff --git a/content/renderer/render_frame_impl.cc b/content/renderer/render_frame_impl.cc
 | 
						|
index 98fdc44b00c641992b194629f73072da7e5d1b17..80e283d18261f4a9676acd291fc5296467bdbb98 100644
 | 
						|
--- a/content/renderer/render_frame_impl.cc
 | 
						|
+++ b/content/renderer/render_frame_impl.cc
 | 
						|
@@ -5695,6 +5695,23 @@ void RenderFrameImpl::BeginNavigation(
 | 
						|
     int cumulative_bindings = RenderProcess::current()->GetEnabledBindings();
 | 
						|
     bool should_fork = HasWebUIScheme(url) || HasWebUIScheme(old_url) ||
 | 
						|
                        (cumulative_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.
 |