mirror of
https://bitbucket.org/chromiumembedded/cef
synced 2024-12-13 01:56:20 +01:00
185 lines
9.0 KiB
Diff
185 lines
9.0 KiB
Diff
diff --git content/browser/devtools/devtools_http_handler.cc content/browser/devtools/devtools_http_handler.cc
|
|
index fc87fd9a6ffca..99c6b27018e13 100644
|
|
--- content/browser/devtools/devtools_http_handler.cc
|
|
+++ content/browser/devtools/devtools_http_handler.cc
|
|
@@ -576,7 +576,7 @@ void DevToolsHttpHandler::OnJsonRequest(
|
|
version.SetString("Protocol-Version",
|
|
DevToolsAgentHost::GetProtocolVersion());
|
|
version.SetString("WebKit-Version", GetWebKitVersion());
|
|
- version.SetString("Browser", GetContentClient()->browser()->GetProduct());
|
|
+ version.SetString("Browser", GetContentClient()->browser()->GetChromeProduct());
|
|
version.SetString("User-Agent",
|
|
GetContentClient()->browser()->GetUserAgent());
|
|
version.SetString("V8-Version", V8_VERSION_STRING);
|
|
diff --git content/browser/loader/navigation_url_loader_impl.cc content/browser/loader/navigation_url_loader_impl.cc
|
|
index b5c2dc992fb19..868661c86c39a 100644
|
|
--- content/browser/loader/navigation_url_loader_impl.cc
|
|
+++ content/browser/loader/navigation_url_loader_impl.cc
|
|
@@ -665,6 +665,14 @@ NavigationURLLoaderImpl::PrepareForNonInterceptedRequest(
|
|
resource_request_->has_user_gesture, initiating_origin,
|
|
initiator_document_.AsRenderFrameHostIfValid(), &loader_factory);
|
|
|
|
+ if (!handled) {
|
|
+ handled = GetContentClient()->browser()->HandleExternalProtocol(
|
|
+ web_contents_getter_, frame_tree_node_id_,
|
|
+ navigation_ui_data_.get(), request_info_->sandbox_flags,
|
|
+ *resource_request_, initiating_origin,
|
|
+ initiator_document_.AsRenderFrameHostIfValid(), &loader_factory);
|
|
+ }
|
|
+
|
|
if (loader_factory) {
|
|
factory = base::MakeRefCounted<network::WrapperSharedURLLoaderFactory>(
|
|
std::move(loader_factory));
|
|
diff --git content/public/browser/content_browser_client.cc content/public/browser/content_browser_client.cc
|
|
index 0e2c7f92937f1..31bb164e25bf6 100644
|
|
--- content/public/browser/content_browser_client.cc
|
|
+++ content/public/browser/content_browser_client.cc
|
|
@@ -11,7 +11,7 @@
|
|
// declarations instead of including more headers. If that is infeasible, adjust
|
|
// the limit. For more info, see
|
|
// https://chromium.googlesource.com/chromium/src/+/HEAD/docs/wmax_tokens.md
|
|
-#pragma clang max_tokens_here 850000
|
|
+// #pragma clang max_tokens_here 850000
|
|
|
|
#include <utility>
|
|
|
|
@@ -883,7 +883,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,
|
|
@@ -892,6 +892,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 aa125be3640fe..bf5dec73a5287 100644
|
|
--- content/public/browser/content_browser_client.h
|
|
+++ content/public/browser/content_browser_client.h
|
|
@@ -34,6 +34,7 @@
|
|
#include "content/public/browser/login_delegate.h"
|
|
#include "content/public/browser/mojo_binder_policy_map.h"
|
|
#include "content/public/browser/storage_partition_config.h"
|
|
+#include "content/public/browser/web_contents.h"
|
|
#include "content/public/browser/web_ui_browser_interface_broker_registry.h"
|
|
#include "content/public/common/alternative_error_page_override_info.mojom.h"
|
|
#include "content/public/common/main_function_params.h"
|
|
@@ -1658,7 +1659,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,
|
|
@@ -1859,6 +1860,17 @@ 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(
|
|
+ WebContents::Getter web_contents_getter,
|
|
+ int frame_tree_node_id,
|
|
+ NavigationUIData* navigation_data,
|
|
+ network::mojom::WebSandboxFlags sandbox_flags,
|
|
+ const network::ResourceRequest& request,
|
|
+ const absl::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 document
|
|
// Picture-in-Picture respectively. This window will house the content shown
|
|
// when in Picture-in-Picture mode. This will return a new OverlayWindow.
|
|
@@ -1920,6 +1932,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 63ead7f8ab838..11f606368d9e8 100644
|
|
--- content/public/renderer/content_renderer_client.h
|
|
+++ content/public/renderer/content_renderer_client.h
|
|
@@ -88,6 +88,9 @@ class CONTENT_EXPORT ContentRendererClient {
|
|
// binding requests from RenderProcessHost::BindReceiver().
|
|
virtual void ExposeInterfacesToBrowser(mojo::BinderMap* binders) {}
|
|
|
|
+ // 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) {}
|
|
|
|
@@ -303,6 +306,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 0b42cba866722..d2f0841bd9069 100644
|
|
--- content/renderer/render_thread_impl.cc
|
|
+++ content/renderer/render_thread_impl.cc
|
|
@@ -656,6 +656,8 @@ void RenderThreadImpl::Init() {
|
|
GetContentClient()->renderer()->CreateURLLoaderThrottleProvider(
|
|
blink::URLLoaderThrottleProviderType::kFrame);
|
|
|
|
+ GetContentClient()->renderer()->RenderThreadConnected();
|
|
+
|
|
GetAssociatedInterfaceRegistry()->AddInterface(base::BindRepeating(
|
|
&RenderThreadImpl::OnRendererInterfaceReceiver, base::Unretained(this)));
|
|
|
|
diff --git content/renderer/renderer_blink_platform_impl.cc content/renderer/renderer_blink_platform_impl.cc
|
|
index a64d78c9d8112..0551db7f7d4cc 100644
|
|
--- content/renderer/renderer_blink_platform_impl.cc
|
|
+++ content/renderer/renderer_blink_platform_impl.cc
|
|
@@ -1090,6 +1090,15 @@ SkBitmap* RendererBlinkPlatformImpl::GetSadPageBitmap() {
|
|
|
|
//------------------------------------------------------------------------------
|
|
|
|
+void RendererBlinkPlatformImpl::DevToolsAgentAttached() {
|
|
+ GetContentClient()->renderer()->DevToolsAgentAttached();
|
|
+}
|
|
+void RendererBlinkPlatformImpl::DevToolsAgentDetached() {
|
|
+ GetContentClient()->renderer()->DevToolsAgentDetached();
|
|
+}
|
|
+
|
|
+//------------------------------------------------------------------------------
|
|
+
|
|
mojo::SharedRemote<blink::mojom::CodeCacheHost>
|
|
RendererBlinkPlatformImpl::GetCodeCacheHost() {
|
|
base::AutoLock lock(code_cache_host_lock_);
|
|
diff --git content/renderer/renderer_blink_platform_impl.h content/renderer/renderer_blink_platform_impl.h
|
|
index 10c96d3915e64..060087d2436ea 100644
|
|
--- content/renderer/renderer_blink_platform_impl.h
|
|
+++ content/renderer/renderer_blink_platform_impl.h
|
|
@@ -261,6 +261,9 @@ class CONTENT_EXPORT RendererBlinkPlatformImpl : public BlinkPlatformImpl {
|
|
blink::WebVector<blink::WebContentSecurityPolicyHeader>* csp) override;
|
|
base::PlatformThreadId GetIOThreadId() const override;
|
|
|
|
+ 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();
|