mirror of
				https://bitbucket.org/chromiumembedded/cef
				synced 2025-06-05 21:39:12 +02:00 
			
		
		
		
	
		
			
				
	
	
		
			256 lines
		
	
	
		
			12 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
			
		
		
	
	
			256 lines
		
	
	
		
			12 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
diff --git content/browser/devtools/devtools_http_handler.cc content/browser/devtools/devtools_http_handler.cc
 | 
						|
index a24477b920c5f..4a62dddd15ec7 100644
 | 
						|
--- content/browser/devtools/devtools_http_handler.cc
 | 
						|
+++ content/browser/devtools/devtools_http_handler.cc
 | 
						|
@@ -596,7 +596,7 @@ void DevToolsHttpHandler::OnJsonRequest(
 | 
						|
     base::Value::Dict version;
 | 
						|
     version.Set("Protocol-Version", DevToolsAgentHost::GetProtocolVersion());
 | 
						|
     version.Set("WebKit-Version", GetWebKitVersion());
 | 
						|
-    version.Set("Browser", GetContentClient()->browser()->GetProduct());
 | 
						|
+    version.Set("Browser", GetContentClient()->browser()->GetChromeProduct());
 | 
						|
     version.Set("User-Agent", GetContentClient()->browser()->GetUserAgent());
 | 
						|
     version.Set("V8-Version", V8_VERSION_STRING);
 | 
						|
     std::string host = info.GetHeaderValue("host");
 | 
						|
diff --git content/browser/loader/navigation_url_loader_impl.cc content/browser/loader/navigation_url_loader_impl.cc
 | 
						|
index 6ff681f94dcba..82b93e6d3052a 100644
 | 
						|
--- content/browser/loader/navigation_url_loader_impl.cc
 | 
						|
+++ content/browser/loader/navigation_url_loader_impl.cc
 | 
						|
@@ -854,7 +854,7 @@ NavigationURLLoaderImpl::CreateNonNetworkLoaderFactory(
 | 
						|
   mojo::PendingRemote<network::mojom::URLLoaderFactory>
 | 
						|
       terminal_external_protocol;
 | 
						|
   bool handled = GetContentClient()->browser()->HandleExternalProtocol(
 | 
						|
-      resource_request.url, std::move(web_contents_getter),
 | 
						|
+      resource_request.url, web_contents_getter,
 | 
						|
       frame_tree_node->frame_tree_node_id(), navigation_ui_data,
 | 
						|
       request_info.is_primary_main_frame,
 | 
						|
       frame_tree_node->IsInFencedFrameTree(), request_info.sandbox_flags,
 | 
						|
@@ -866,6 +866,21 @@ NavigationURLLoaderImpl::CreateNonNetworkLoaderFactory(
 | 
						|
                 *request_info.initiator_document_token)
 | 
						|
           : nullptr,
 | 
						|
       &terminal_external_protocol);
 | 
						|
+
 | 
						|
+  if (!handled) {
 | 
						|
+    handled = GetContentClient()->browser()->HandleExternalProtocol(
 | 
						|
+        web_contents_getter, frame_tree_node->frame_tree_node_id(),
 | 
						|
+        navigation_ui_data, request_info.is_primary_main_frame,
 | 
						|
+        frame_tree_node->IsInFencedFrameTree(), request_info.sandbox_flags,
 | 
						|
+        resource_request, initiating_origin,
 | 
						|
+        request_info.initiator_document_token
 | 
						|
+            ? RenderFrameHostImpl::FromDocumentToken(
 | 
						|
+                  request_info.initiator_process_id,
 | 
						|
+                  *request_info.initiator_document_token)
 | 
						|
+            : nullptr,
 | 
						|
+        &terminal_external_protocol);
 | 
						|
+  }
 | 
						|
+
 | 
						|
   if (terminal_external_protocol) {
 | 
						|
     return std::make_pair(
 | 
						|
         /*is_cacheable=*/false,
 | 
						|
diff --git content/public/browser/content_browser_client.cc content/public/browser/content_browser_client.cc
 | 
						|
index 8df62dd712ad5..b191ea472448a 100644
 | 
						|
--- content/public/browser/content_browser_client.cc
 | 
						|
+++ content/public/browser/content_browser_client.cc
 | 
						|
@@ -1104,7 +1104,7 @@ ContentBrowserClient::CreateURLLoaderHandlerForServiceWorkerNavigationPreload(
 | 
						|
 void ContentBrowserClient::OnNetworkServiceCreated(
 | 
						|
     network::mojom::NetworkService* network_service) {}
 | 
						|
 
 | 
						|
-void ContentBrowserClient::ConfigureNetworkContextParams(
 | 
						|
+bool ContentBrowserClient::ConfigureNetworkContextParams(
 | 
						|
     BrowserContext* context,
 | 
						|
     bool in_memory,
 | 
						|
     const base::FilePath& relative_partition_path,
 | 
						|
@@ -1113,6 +1113,7 @@ void ContentBrowserClient::ConfigureNetworkContextParams(
 | 
						|
         cert_verifier_creation_params) {
 | 
						|
   network_context_params->user_agent = GetUserAgentBasedOnPolicy(context);
 | 
						|
   network_context_params->accept_language = "en-us,en";
 | 
						|
+  return true;
 | 
						|
 }
 | 
						|
 
 | 
						|
 std::vector<base::FilePath>
 | 
						|
diff --git content/public/browser/content_browser_client.h content/public/browser/content_browser_client.h
 | 
						|
index 8f457dd1d2afb..6df18f193039e 100644
 | 
						|
--- content/public/browser/content_browser_client.h
 | 
						|
+++ content/public/browser/content_browser_client.h
 | 
						|
@@ -2094,7 +2094,7 @@ class CONTENT_EXPORT ContentBrowserClient {
 | 
						|
   //
 | 
						|
   // If |relative_partition_path| is the empty string, it means this needs to
 | 
						|
   // create the default NetworkContext for the BrowserContext.
 | 
						|
-  virtual void ConfigureNetworkContextParams(
 | 
						|
+  virtual bool ConfigureNetworkContextParams(
 | 
						|
       BrowserContext* context,
 | 
						|
       bool in_memory,
 | 
						|
       const base::FilePath& relative_partition_path,
 | 
						|
@@ -2307,6 +2307,21 @@ class CONTENT_EXPORT ContentBrowserClient {
 | 
						|
       RenderFrameHost* initiator_document,
 | 
						|
       mojo::PendingRemote<network::mojom::URLLoaderFactory>* out_factory);
 | 
						|
 
 | 
						|
+  // Same as above, but exposing the whole ResourceRequest object.
 | 
						|
+  virtual bool HandleExternalProtocol(
 | 
						|
+      base::RepeatingCallback<WebContents*()> web_contents_getter,
 | 
						|
+      int frame_tree_node_id,
 | 
						|
+      NavigationUIData* navigation_data,
 | 
						|
+      bool is_primary_main_frame,
 | 
						|
+      bool is_in_fenced_frame_tree,
 | 
						|
+      network::mojom::WebSandboxFlags sandbox_flags,
 | 
						|
+      const network::ResourceRequest& request,
 | 
						|
+      const std::optional<url::Origin>& initiating_origin,
 | 
						|
+      RenderFrameHost* initiator_document,
 | 
						|
+      mojo::PendingRemote<network::mojom::URLLoaderFactory>* out_factory) {
 | 
						|
+    return false;
 | 
						|
+  }
 | 
						|
+
 | 
						|
   // Creates an OverlayWindow to be used for video or Picture-in-Picture.
 | 
						|
   // This window will house the content shown when in Picture-in-Picture mode.
 | 
						|
   // This will return a new OverlayWindow.
 | 
						|
@@ -2364,6 +2379,10 @@ class CONTENT_EXPORT ContentBrowserClient {
 | 
						|
   // Used as part of the user agent string.
 | 
						|
   virtual std::string GetProduct();
 | 
						|
 
 | 
						|
+  // Returns the Chrome-specific product string. This is used for compatibility
 | 
						|
+  // purposes with external tools like Selenium.
 | 
						|
+  virtual std::string GetChromeProduct() { return GetProduct(); }
 | 
						|
+
 | 
						|
   // Returns the user agent. This can also return the reduced user agent, based
 | 
						|
   // on blink::features::kUserAgentReduction. Content may cache this value.
 | 
						|
   virtual std::string GetUserAgent();
 | 
						|
diff --git content/public/renderer/content_renderer_client.h content/public/renderer/content_renderer_client.h
 | 
						|
index 7a9334a6cb0c7..031f5eb442331 100644
 | 
						|
--- content/public/renderer/content_renderer_client.h
 | 
						|
+++ content/public/renderer/content_renderer_client.h
 | 
						|
@@ -108,6 +108,9 @@ class CONTENT_EXPORT ContentRendererClient {
 | 
						|
   // a crash handler (such as crashpad) is already in use.
 | 
						|
   virtual void SetUpWebAssemblyTrapHandler();
 | 
						|
 
 | 
						|
+  // Notifies that the RenderThread can now send sync IPC messages.
 | 
						|
+  virtual void RenderThreadConnected() {}
 | 
						|
+
 | 
						|
   // Notifies that a new RenderFrame has been created.
 | 
						|
   virtual void RenderFrameCreated(RenderFrame* render_frame) {}
 | 
						|
 
 | 
						|
@@ -339,6 +342,10 @@ class CONTENT_EXPORT ContentRendererClient {
 | 
						|
   // This method may invalidate the frame.
 | 
						|
   virtual void RunScriptsAtDocumentIdle(RenderFrame* render_frame) {}
 | 
						|
 
 | 
						|
+  // Notifies that a DevTools agent has attached or detached.
 | 
						|
+  virtual void DevToolsAgentAttached() {}
 | 
						|
+  virtual void DevToolsAgentDetached() {}
 | 
						|
+
 | 
						|
   // Allows subclasses to enable some runtime features before Blink has
 | 
						|
   // started.
 | 
						|
   virtual void SetRuntimeFeaturesDefaultsBeforeBlinkInitialization() {}
 | 
						|
diff --git content/renderer/render_thread_impl.cc content/renderer/render_thread_impl.cc
 | 
						|
index c977c0ed18151..fa6241f2c761d 100644
 | 
						|
--- content/renderer/render_thread_impl.cc
 | 
						|
+++ content/renderer/render_thread_impl.cc
 | 
						|
@@ -556,6 +556,8 @@ void RenderThreadImpl::Init() {
 | 
						|
       GetContentClient()->renderer()->CreateURLLoaderThrottleProvider(
 | 
						|
           blink::URLLoaderThrottleProviderType::kFrame);
 | 
						|
 
 | 
						|
+  GetContentClient()->renderer()->RenderThreadConnected();
 | 
						|
+
 | 
						|
   GetAssociatedInterfaceRegistry()->AddInterface<mojom::Renderer>(
 | 
						|
       base::BindRepeating(&RenderThreadImpl::OnRendererInterfaceReceiver,
 | 
						|
                           base::Unretained(this)));
 | 
						|
diff --git content/renderer/renderer_blink_platform_impl.cc content/renderer/renderer_blink_platform_impl.cc
 | 
						|
index 32f322e1ef607..f4aabab498e88 100644
 | 
						|
--- content/renderer/renderer_blink_platform_impl.cc
 | 
						|
+++ content/renderer/renderer_blink_platform_impl.cc
 | 
						|
@@ -1000,6 +1000,15 @@ SkBitmap* RendererBlinkPlatformImpl::GetSadPageBitmap() {
 | 
						|
 
 | 
						|
 //------------------------------------------------------------------------------
 | 
						|
 
 | 
						|
+void RendererBlinkPlatformImpl::DevToolsAgentAttached() {
 | 
						|
+  GetContentClient()->renderer()->DevToolsAgentAttached();
 | 
						|
+}
 | 
						|
+void RendererBlinkPlatformImpl::DevToolsAgentDetached() {
 | 
						|
+  GetContentClient()->renderer()->DevToolsAgentDetached();
 | 
						|
+}
 | 
						|
+
 | 
						|
+//------------------------------------------------------------------------------
 | 
						|
+
 | 
						|
 std::unique_ptr<blink::WebV8ValueConverter>
 | 
						|
 RendererBlinkPlatformImpl::CreateWebV8ValueConverter() {
 | 
						|
   return std::make_unique<V8ValueConverterImpl>();
 | 
						|
diff --git content/renderer/renderer_blink_platform_impl.h content/renderer/renderer_blink_platform_impl.h
 | 
						|
index 8a8faf056bee0..03edc844d5d6e 100644
 | 
						|
--- content/renderer/renderer_blink_platform_impl.h
 | 
						|
+++ content/renderer/renderer_blink_platform_impl.h
 | 
						|
@@ -238,6 +238,9 @@ class CONTENT_EXPORT RendererBlinkPlatformImpl : public BlinkPlatformImpl {
 | 
						|
   InertAndMinimumIntervalOfUserLevelMemoryPressureSignal() override;
 | 
						|
 #endif  // BUILDFLAG(IS_ANDROID)
 | 
						|
 
 | 
						|
+  void DevToolsAgentAttached() override;
 | 
						|
+  void DevToolsAgentDetached() override;
 | 
						|
+
 | 
						|
   // Tells this platform that the renderer is locked to a site (i.e., a scheme
 | 
						|
   // plus eTLD+1, such as https://google.com), or to a more specific origin.
 | 
						|
   void SetIsLockedToSite();
 | 
						|
diff --git content/shell/browser/shell_content_browser_client.cc content/shell/browser/shell_content_browser_client.cc
 | 
						|
index feb037de8a1ad..77d6079e85912 100644
 | 
						|
--- content/shell/browser/shell_content_browser_client.cc
 | 
						|
+++ content/shell/browser/shell_content_browser_client.cc
 | 
						|
@@ -736,7 +736,7 @@ void ShellContentBrowserClient::OnNetworkServiceCreated(
 | 
						|
 #endif
 | 
						|
 }
 | 
						|
 
 | 
						|
-void ShellContentBrowserClient::ConfigureNetworkContextParams(
 | 
						|
+bool ShellContentBrowserClient::ConfigureNetworkContextParams(
 | 
						|
     BrowserContext* context,
 | 
						|
     bool in_memory,
 | 
						|
     const base::FilePath& relative_partition_path,
 | 
						|
@@ -745,6 +745,7 @@ void ShellContentBrowserClient::ConfigureNetworkContextParams(
 | 
						|
         cert_verifier_creation_params) {
 | 
						|
   ConfigureNetworkContextParamsForShell(context, network_context_params,
 | 
						|
                                         cert_verifier_creation_params);
 | 
						|
+  return true;
 | 
						|
 }
 | 
						|
 
 | 
						|
 std::vector<base::FilePath>
 | 
						|
diff --git content/shell/browser/shell_content_browser_client.h content/shell/browser/shell_content_browser_client.h
 | 
						|
index 281435690f2b9..6d3cc5b627bb3 100644
 | 
						|
--- content/shell/browser/shell_content_browser_client.h
 | 
						|
+++ content/shell/browser/shell_content_browser_client.h
 | 
						|
@@ -148,7 +148,7 @@ class ShellContentBrowserClient : public ContentBrowserClient {
 | 
						|
   GetGeolocationSystemPermissionManager() override;
 | 
						|
   void OnNetworkServiceCreated(
 | 
						|
       network::mojom::NetworkService* network_service) override;
 | 
						|
-  void ConfigureNetworkContextParams(
 | 
						|
+  bool ConfigureNetworkContextParams(
 | 
						|
       BrowserContext* context,
 | 
						|
       bool in_memory,
 | 
						|
       const base::FilePath& relative_partition_path,
 | 
						|
diff --git headless/lib/browser/headless_content_browser_client.cc headless/lib/browser/headless_content_browser_client.cc
 | 
						|
index 77cf03ca44be9..43928ef67393b 100644
 | 
						|
--- headless/lib/browser/headless_content_browser_client.cc
 | 
						|
+++ headless/lib/browser/headless_content_browser_client.cc
 | 
						|
@@ -301,7 +301,7 @@ bool HeadlessContentBrowserClient::IsSharedStorageSelectURLAllowed(
 | 
						|
   return true;
 | 
						|
 }
 | 
						|
 
 | 
						|
-void HeadlessContentBrowserClient::ConfigureNetworkContextParams(
 | 
						|
+bool HeadlessContentBrowserClient::ConfigureNetworkContextParams(
 | 
						|
     content::BrowserContext* context,
 | 
						|
     bool in_memory,
 | 
						|
     const base::FilePath& relative_partition_path,
 | 
						|
@@ -311,6 +311,7 @@ void HeadlessContentBrowserClient::ConfigureNetworkContextParams(
 | 
						|
   HeadlessBrowserContextImpl::From(context)->ConfigureNetworkContextParams(
 | 
						|
       in_memory, relative_partition_path, network_context_params,
 | 
						|
       cert_verifier_creation_params);
 | 
						|
+  return true;
 | 
						|
 }
 | 
						|
 
 | 
						|
 std::string HeadlessContentBrowserClient::GetProduct() {
 | 
						|
diff --git headless/lib/browser/headless_content_browser_client.h headless/lib/browser/headless_content_browser_client.h
 | 
						|
index eae1297164eb0..abab2091ace5f 100644
 | 
						|
--- headless/lib/browser/headless_content_browser_client.h
 | 
						|
+++ headless/lib/browser/headless_content_browser_client.h
 | 
						|
@@ -85,7 +85,7 @@ class HeadlessContentBrowserClient : public content::ContentBrowserClient {
 | 
						|
       std::string* out_debug_message,
 | 
						|
       bool* out_block_is_site_setting_specific) override;
 | 
						|
 
 | 
						|
-  void ConfigureNetworkContextParams(
 | 
						|
+  bool ConfigureNetworkContextParams(
 | 
						|
       content::BrowserContext* context,
 | 
						|
       bool in_memory,
 | 
						|
       const base::FilePath& relative_partition_path,
 |