summaryrefslogtreecommitdiffstats
path: root/src/core/content_browser_client_qt.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/core/content_browser_client_qt.cpp')
-rw-r--r--src/core/content_browser_client_qt.cpp75
1 files changed, 57 insertions, 18 deletions
diff --git a/src/core/content_browser_client_qt.cpp b/src/core/content_browser_client_qt.cpp
index e0ce3558c..4da4f72e4 100644
--- a/src/core/content_browser_client_qt.cpp
+++ b/src/core/content_browser_client_qt.cpp
@@ -55,6 +55,12 @@
#include "components/navigation_interception/intercept_navigation_throttle.h"
#include "components/navigation_interception/navigation_params.h"
#include "components/network_hints/browser/simple_network_hints_handler_impl.h"
+#include "components/performance_manager/embedder/performance_manager_registry.h"
+#include "components/performance_manager/graph/process_node_impl.h"
+#include "components/performance_manager/performance_manager_impl.h"
+#include "components/performance_manager/public/mojom/coordination_unit.mojom.h"
+#include "components/performance_manager/public/performance_manager.h"
+#include "components/performance_manager/render_process_user_data.h"
#include "components/spellcheck/spellcheck_buildflags.h"
#include "content/browser/renderer_host/render_view_host_delegate.h"
#include "content/browser/web_contents/web_contents_impl.h"
@@ -160,6 +166,7 @@
#include "content/public/browser/file_url_loader.h"
#include "extensions/browser/extension_message_filter.h"
#include "extensions/browser/guest_view/extensions_guest_view_message_filter.h"
+#include "extensions/browser/url_loader_factory_manager.h"
#include "extensions/common/constants.h"
#include "common/extensions/extensions_client_qt.h"
@@ -293,14 +300,6 @@ scoped_refptr<content::QuotaPermissionContext> ContentBrowserClientQt::CreateQuo
return new QuotaPermissionContextQt;
}
-void ContentBrowserClientQt::GetQuotaSettings(content::BrowserContext* context,
- content::StoragePartition* partition,
- base::OnceCallback<void(base::Optional<storage::QuotaSettings>)> callback)
-{
- storage::GetNominalDynamicSettings(partition->GetPath(), context->IsOffTheRecord(),
- storage::GetDefaultDeviceInfoHelper(), std::move(callback));
-}
-
void ContentBrowserClientQt::AllowCertificateError(content::WebContents *webContents,
int cert_error,
const net::SSLInfo &ssl_info,
@@ -436,7 +435,6 @@ public:
if (!web_contents)
return;
CreateForWebContents(web_contents);
-
}
static ServiceDriver* FromRenderFrameHost(content::RenderFrameHost *renderFrameHost)
{
@@ -445,17 +443,17 @@ public:
return nullptr;
return FromWebContents(web_contents);
}
- static void BindInsecureInputService(blink::mojom::InsecureInputServiceRequest request, content::RenderFrameHost *render_frame_host)
+ static void BindInsecureInputService(content::RenderFrameHost *render_frame_host, mojo::PendingReceiver<blink::mojom::InsecureInputService> receiver)
{
CreateForRenderFrameHost(render_frame_host);
ServiceDriver *driver = FromRenderFrameHost(render_frame_host);
if (driver)
- driver->BindInsecureInputServiceRequest(std::move(request));
+ driver->BindInsecureInputServiceReceiver(std::move(receiver));
}
- void BindInsecureInputServiceRequest(blink::mojom::InsecureInputServiceRequest request)
+ void BindInsecureInputServiceReceiver(mojo::PendingReceiver<blink::mojom::InsecureInputService> receiver)
{
- m_insecureInputServiceBindings.AddBinding(this, std::move(request));
+ m_receivers.Add(this, std::move(receiver));
}
// blink::mojom::InsecureInputService:
@@ -466,7 +464,7 @@ private:
WEB_CONTENTS_USER_DATA_KEY_DECL();
explicit ServiceDriver(content::WebContents* /*web_contents*/) { }
friend class content::WebContentsUserData<ServiceDriver>;
- mojo::BindingSet<blink::mojom::InsecureInputService> m_insecureInputServiceBindings;
+ mojo::ReceiverSet<blink::mojom::InsecureInputService> m_receivers;
};
WEB_CONTENTS_USER_DATA_KEY_IMPL(ServiceDriver)
@@ -475,7 +473,6 @@ void ContentBrowserClientQt::InitFrameInterfaces()
{
m_frameInterfaces = std::make_unique<service_manager::BinderRegistry>();
m_frameInterfacesParameterized = std::make_unique<service_manager::BinderRegistryWithArgs<content::RenderFrameHost*>>();
- m_frameInterfacesParameterized->AddInterface(base::BindRepeating(&ServiceDriver::BindInsecureInputService));
}
void ContentBrowserClientQt::BindInterfaceRequestFromFrame(content::RenderFrameHost* render_frame_host,
@@ -511,9 +508,40 @@ void ContentBrowserClientQt::RegisterBrowserInterfaceBindersForFrame(
service_manager::BinderMapWithContext<content::RenderFrameHost *> *map)
{
Q_UNUSED(render_frame_host);
+ map->Add<blink::mojom::InsecureInputService>(base::BindRepeating(&ServiceDriver::BindInsecureInputService));
map->Add<network_hints::mojom::NetworkHintsHandler>(base::BindRepeating(&BindNetworkHintsHandler));
}
+namespace {
+void BindProcessNode(int render_process_host_id,
+ mojo::PendingReceiver<performance_manager::mojom::ProcessCoordinationUnit> receiver)
+{
+ content::RenderProcessHost *render_process_host = content::RenderProcessHost::FromID(render_process_host_id);
+ if (!render_process_host)
+ return;
+
+ performance_manager::RenderProcessUserData *user_data =
+ performance_manager::RenderProcessUserData::GetForRenderProcessHost(render_process_host);
+
+ DCHECK(performance_manager::PerformanceManagerImpl::IsAvailable());
+ performance_manager::PerformanceManagerImpl::CallOnGraphImpl(
+ FROM_HERE, base::BindOnce(&performance_manager::ProcessNodeImpl::Bind,
+ base::Unretained(user_data->process_node()),
+ std::move(receiver)));
+}
+} // namespace
+
+void ContentBrowserClientQt::ExposeInterfacesToRenderer(service_manager::BinderRegistry *registry,
+ blink::AssociatedInterfaceRegistry *associated_registry,
+ content::RenderProcessHost *render_process_host)
+{
+ Q_UNUSED(associated_registry);
+ registry->AddInterface(base::BindRepeating(&BindProcessNode, render_process_host->GetID()),
+ base::SequencedTaskRunnerHandle::Get());
+
+ performance_manager::PerformanceManagerRegistry::GetInstance()->CreateProcessNodeForRenderProcessHost(render_process_host);
+}
+
void ContentBrowserClientQt::RunServiceInstance(const service_manager::Identity &identity,
mojo::PendingReceiver<service_manager::mojom::Service> *receiver)
{
@@ -596,11 +624,10 @@ bool ContentBrowserClientQt::ShouldEnableStrictSiteIsolation()
return false;
}
-bool ContentBrowserClientQt::WillCreateRestrictedCookieManager(
- network::mojom::RestrictedCookieManagerRole role,
+bool ContentBrowserClientQt::WillCreateRestrictedCookieManager(network::mojom::RestrictedCookieManagerRole role,
content::BrowserContext *browser_context,
const url::Origin & /*origin*/,
- const GURL & /*site_for_cookies*/,
+ const net::SiteForCookies & /*site_for_cookies*/,
const url::Origin & /*top_frame_origin*/,
bool is_service_worker,
int process_id,
@@ -898,6 +925,17 @@ bool ContentBrowserClientQt::ShouldTreatURLSchemeAsFirstPartyWhenTopLevel(base::
#endif
}
+void ContentBrowserClientQt::OverrideURLLoaderFactoryParams(content::BrowserContext *browser_context,
+ const url::Origin &origin,
+ bool is_for_isolated_world,
+ network::mojom::URLLoaderFactoryParams *factory_params)
+{
+#if BUILDFLAG(ENABLE_EXTENSIONS)
+ extensions::URLLoaderFactoryManager::OverrideURLLoaderFactoryParams(
+ browser_context, origin, is_for_isolated_world, factory_params);
+#endif
+}
+
std::string ContentBrowserClientQt::getUserAgent()
{
// Mention the Chromium version we're based on to get passed stupid UA-string-based feature detection (several WebRTC demos need this)
@@ -1071,6 +1109,7 @@ bool ContentBrowserClientQt::WillCreateURLLoaderFactory(
mojo::PendingReceiver<network::mojom::URLLoaderFactory> *factory_receiver,
mojo::PendingRemote<network::mojom::TrustedURLLoaderHeaderClient> *header_client,
bool *bypass_redirect_checks,
+ bool *disable_secure_dns,
network::mojom::URLLoaderFactoryOverridePtr *factory_override)
{
auto *web_contents = content::WebContents::FromRenderFrameHost(frame);