From 0970b75122c51bb621b9435aa558b2c74ff52e9f Mon Sep 17 00:00:00 2001 From: Allan Sandfeld Jensen Date: Thu, 8 Oct 2020 16:01:38 +0200 Subject: Adaptations for Chromium 84 Change-Id: I359805d0bea84147fca6de2e2c7b17b4dcb17bc7 Reviewed-by: Peter Varga --- src/core/content_browser_client_qt.cpp | 88 ++++++++++------------------------ 1 file changed, 26 insertions(+), 62 deletions(-) (limited to 'src/core/content_browser_client_qt.cpp') diff --git a/src/core/content_browser_client_qt.cpp b/src/core/content_browser_client_qt.cpp index d3181c555..a0d46a83a 100644 --- a/src/core/content_browser_client_qt.cpp +++ b/src/core/content_browser_client_qt.cpp @@ -607,23 +607,6 @@ private: WEB_CONTENTS_USER_DATA_KEY_IMPL(ServiceDriver) -void ContentBrowserClientQt::InitFrameInterfaces() -{ - m_frameInterfaces = std::make_unique(); - m_frameInterfacesParameterized = std::make_unique>(); -} - -void ContentBrowserClientQt::BindInterfaceRequestFromFrame(content::RenderFrameHost* render_frame_host, - const std::string& interface_name, - mojo::ScopedMessagePipeHandle interface_pipe) -{ - if (!m_frameInterfaces.get() && !m_frameInterfacesParameterized.get()) - InitFrameInterfaces(); - - if (!m_frameInterfacesParameterized->TryBindInterface(interface_name, &interface_pipe, render_frame_host)) - m_frameInterfaces->TryBindInterface(interface_name, &interface_pipe); -} - void ContentBrowserClientQt::BindHostReceiverForRenderer(content::RenderProcessHost *render_process_host, mojo::GenericPendingReceiver receiver) { @@ -643,41 +626,19 @@ static void BindNetworkHintsHandler(content::RenderFrameHost *frame_host, void ContentBrowserClientQt::RegisterBrowserInterfaceBindersForFrame( content::RenderFrameHost *render_frame_host, - service_manager::BinderMapWithContext *map) + mojo::BinderMapWithContext *map) { Q_UNUSED(render_frame_host); map->Add(base::BindRepeating(&ServiceDriver::BindInsecureInputService)); map->Add(base::BindRepeating(&BindNetworkHintsHandler)); } -namespace { -void BindProcessNode(int render_process_host_id, - mojo::PendingReceiver 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); + performance_manager::PerformanceManagerRegistry::GetInstance()->CreateProcessNodeAndExposeInterfacesToRendererProcess(registry, render_process_host); } void ContentBrowserClientQt::RunServiceInstance(const service_manager::Identity &identity, @@ -788,36 +749,41 @@ bool ContentBrowserClientQt::WillCreateRestrictedCookieManager(network::mojom::R bool ContentBrowserClientQt::AllowAppCache(const GURL &manifest_url, const GURL &first_party, + const base::Optional &top_frame_origin, content::BrowserContext *context) { DCHECK_CURRENTLY_ON(content::BrowserThread::UI); return static_cast(context)->profileAdapter()->cookieStore()->d_func()->canAccessCookies(toQt(first_party), toQt(manifest_url)); } -bool ContentBrowserClientQt::AllowServiceWorkerOnIO(const GURL &scope, +content::AllowServiceWorkerResult +ContentBrowserClientQt::AllowServiceWorkerOnIO(const GURL &scope, const GURL &site_for_cookies, const base::Optional & /*top_frame_origin*/, const GURL & /*script_url*/, - content::ResourceContext *context, - base::RepeatingCallback wc_getter) + content::ResourceContext *context) { DCHECK_CURRENTLY_ON(content::BrowserThread::IO); // FIXME: Chrome also checks if javascript is enabled here to check if has been disabled since the service worker // was started. - return ProfileIODataQt::FromResourceContext(context)->canGetCookies(toQt(site_for_cookies), toQt(scope)); + return ProfileIODataQt::FromResourceContext(context)->canGetCookies(toQt(site_for_cookies), toQt(scope)) + ? content::AllowServiceWorkerResult::Yes() + : content::AllowServiceWorkerResult::No(); } -bool ContentBrowserClientQt::AllowServiceWorkerOnUI(const GURL &scope, +content::AllowServiceWorkerResult +ContentBrowserClientQt::AllowServiceWorkerOnUI(const GURL &scope, const GURL &site_for_cookies, const base::Optional & /*top_frame_origin*/, const GURL & /*script_url*/, - content::BrowserContext *context, - base::RepeatingCallback wc_getter) + content::BrowserContext *context) { DCHECK_CURRENTLY_ON(content::BrowserThread::UI); // FIXME: Chrome also checks if javascript is enabled here to check if has been disabled since the service worker // was started. - return static_cast(context)->profileAdapter()->cookieStore()->d_func()->canAccessCookies(toQt(site_for_cookies), toQt(scope)); + return static_cast(context)->profileAdapter()->cookieStore()->d_func()->canAccessCookies(toQt(site_for_cookies), toQt(scope)) + ? content::AllowServiceWorkerResult::Yes() + : content::AllowServiceWorkerResult::No(); } // We control worker access to FS and indexed-db using cookie permissions, this is mirroring Chromium's logic. @@ -907,7 +873,8 @@ public: const network::mojom::URLResponseHead &response_head, bool *defer, std::vector *to_be_removed_headers, - net::HttpRequestHeaders *modified_headers) override + net::HttpRequestHeaders *modified_headers, + net::HttpRequestHeaders *modified_cors_exempt_headers) override { TranslateUrl(&redirect_info->new_url); } @@ -1109,22 +1076,19 @@ void ContentBrowserClientQt::OnNetworkServiceCreated(network::mojom::NetworkServ SystemNetworkContextManager::GetInstance()->OnNetworkServiceCreated(network_service); } -mojo::Remote ContentBrowserClientQt::CreateNetworkContext( +void ContentBrowserClientQt::ConfigureNetworkContextParams( content::BrowserContext *context, bool in_memory, - const base::FilePath &relative_partition_path) + const base::FilePath &relative_partition_path, + network::mojom::NetworkContextParams *network_context_params, + network::mojom::CertVerifierCreationParams *cert_verifier_creation_params) { - mojo::Remote network_context; - // ### do we need to pass in_memory and relative_partition_path to ProfileIODataQt::CreateNetworkContextParams() ? - network::mojom::NetworkContextParamsPtr context_params = ProfileIODataQt::FromBrowserContext(context)->CreateNetworkContextParams(); - content::GetNetworkService()->CreateNetworkContext( - network_context.BindNewPipeAndPassReceiver(), std::move(context_params)); - - network::mojom::CookieManagerPtrInfo cookie_manager_info; - network_context->GetCookieManager(mojo::MakeRequest(&cookie_manager_info)); - ProfileIODataQt::FromBrowserContext(context)->cookieDelegate()->setMojoCookieManager(std::move(cookie_manager_info)); + ProfileIODataQt::FromBrowserContext(context)->ConfigureNetworkContextParams(in_memory, relative_partition_path, + network_context_params, cert_verifier_creation_params); - return network_context; + mojo::PendingRemote cookie_manager_remote; + network_context_params->cookie_manager = cookie_manager_remote.InitWithNewPipeAndPassReceiver(); + ProfileIODataQt::FromBrowserContext(context)->cookieDelegate()->setMojoCookieManager(std::move(cookie_manager_remote)); } std::vector ContentBrowserClientQt::GetNetworkContextsParentDirectory() -- cgit v1.2.3