Commit bb006d83 authored by arthursonzogni's avatar arthursonzogni Committed by Commit Bot

[COEP] Move CacheStorage binders toward the actual class.

(pure refactor)

Before this patch, the BrowsingInterfaceBinder collected all the
attributes needed to bind the CacheStorage:
 - process,
 - origin
 - COEP
 - COEP_reporter (in the next patch)
and binded it.

After this patch, this work is done by the classes representing the
context on which the CacheStorage is requested:
 - RenderFrameHostImpl,
 - DedicatedWorker,
 - SharedWorker,
 - ServiceWorker

The code is slightly shorter and simpler. It will allow all theses
classes to provide their own COEP and COEP_reporter. This will be used
by the following patch in the branch.

Bug: 1059727, 1031542
Change-Id: Ic142da4f023b20c3ae25e98a179203c8d2bdfc6a
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2096453
Commit-Queue: Arthur Sonzogni <arthursonzogni@chromium.org>
Reviewed-by: default avatarKinuko Yasuda <kinuko@chromium.org>
Cr-Commit-Position: refs/heads/master@{#749160}
parent 151f77f7
...@@ -327,30 +327,6 @@ BindWorkerReceiverForOriginAndFrameId( ...@@ -327,30 +327,6 @@ BindWorkerReceiverForOriginAndFrameId(
base::Unretained(host), method); base::Unretained(host), method);
} }
template <typename WorkerHost, typename Interface>
base::RepeatingCallback<void(const url::Origin&,
mojo::PendingReceiver<Interface>)>
BindWorkerReceiverForOriginAndCOEP(
void (RenderProcessHost::*method)(const network::CrossOriginEmbedderPolicy&,
const url::Origin&,
mojo::PendingReceiver<Interface>),
WorkerHost* host,
const network::CrossOriginEmbedderPolicy& cross_origin_embedder_policy) {
return base::BindRepeating(
[](WorkerHost* host,
void (RenderProcessHost::*method)(
const network::CrossOriginEmbedderPolicy&, const url::Origin&,
mojo::PendingReceiver<Interface>),
const network::CrossOriginEmbedderPolicy& cross_origin_embedder_policy,
const url::Origin& origin, mojo::PendingReceiver<Interface> receiver) {
RenderProcessHost* process_host = host->GetProcessHost();
if (process_host)
(process_host->*method)(cross_origin_embedder_policy, origin,
std::move(receiver));
},
base::Unretained(host), method, cross_origin_embedder_policy);
}
template <typename... Args> template <typename... Args>
void RunOrPostTaskToBindServiceWorkerReceiver( void RunOrPostTaskToBindServiceWorkerReceiver(
ServiceWorkerProviderHost* host, ServiceWorkerProviderHost* host,
...@@ -763,6 +739,8 @@ void PopulateDedicatedWorkerBinders(DedicatedWorkerHost* host, ...@@ -763,6 +739,8 @@ void PopulateDedicatedWorkerBinders(DedicatedWorkerHost* host,
map->Add<blink::mojom::QuicTransportConnector>( map->Add<blink::mojom::QuicTransportConnector>(
base::BindRepeating(&DedicatedWorkerHost::CreateQuicTransportConnector, base::BindRepeating(&DedicatedWorkerHost::CreateQuicTransportConnector,
base::Unretained(host))); base::Unretained(host)));
map->Add<blink::mojom::CacheStorage>(base::BindRepeating(
&DedicatedWorkerHost::BindCacheStorage, base::Unretained(host)));
#if !defined(OS_ANDROID) #if !defined(OS_ANDROID)
map->Add<blink::mojom::SerialService>(base::BindRepeating( map->Add<blink::mojom::SerialService>(base::BindRepeating(
&DedicatedWorkerHost::BindSerialService, base::Unretained(host))); &DedicatedWorkerHost::BindSerialService, base::Unretained(host)));
...@@ -798,12 +776,6 @@ void PopulateBinderMapWithContext( ...@@ -798,12 +776,6 @@ void PopulateBinderMapWithContext(
map->Add<blink::mojom::QuotaDispatcherHost>( map->Add<blink::mojom::QuotaDispatcherHost>(
BindWorkerReceiverForOriginAndFrameId( BindWorkerReceiverForOriginAndFrameId(
&RenderProcessHost::BindQuotaDispatcherHost, host)); &RenderProcessHost::BindQuotaDispatcherHost, host));
// render process host binders taking a Cross-Origin-Embedder-Policy and an
// origin.
map->Add<blink::mojom::CacheStorage>(BindWorkerReceiverForOriginAndCOEP(
&RenderProcessHost::BindCacheStorage, host,
host->cross_origin_embedder_policy()));
} }
void PopulateBinderMap(DedicatedWorkerHost* host, void PopulateBinderMap(DedicatedWorkerHost* host,
...@@ -839,6 +811,8 @@ void PopulateSharedWorkerBinders(SharedWorkerHost* host, ...@@ -839,6 +811,8 @@ void PopulateSharedWorkerBinders(SharedWorkerHost* host,
&SharedWorkerHost::CreateAppCacheBackend, base::Unretained(host))); &SharedWorkerHost::CreateAppCacheBackend, base::Unretained(host)));
map->Add<blink::mojom::QuicTransportConnector>(base::BindRepeating( map->Add<blink::mojom::QuicTransportConnector>(base::BindRepeating(
&SharedWorkerHost::CreateQuicTransportConnector, base::Unretained(host))); &SharedWorkerHost::CreateQuicTransportConnector, base::Unretained(host)));
map->Add<blink::mojom::CacheStorage>(base::BindRepeating(
&SharedWorkerHost::BindCacheStorage, base::Unretained(host)));
// render process host binders // render process host binders
map->Add<media::mojom::VideoDecodePerfHistory>( map->Add<media::mojom::VideoDecodePerfHistory>(
...@@ -872,14 +846,6 @@ void PopulateBinderMapWithContext( ...@@ -872,14 +846,6 @@ void PopulateBinderMapWithContext(
map->Add<blink::mojom::QuotaDispatcherHost>( map->Add<blink::mojom::QuotaDispatcherHost>(
BindWorkerReceiverForOriginAndFrameId( BindWorkerReceiverForOriginAndFrameId(
&RenderProcessHost::BindQuotaDispatcherHost, host)); &RenderProcessHost::BindQuotaDispatcherHost, host));
// render process host binders taking a Cross-Origin-Embedder-Policy and an
// origin.
// TODO(https://crbug.com/1031542): Add support enforcing CORP in
// cache.match() for SharedWorker
map->Add<blink::mojom::CacheStorage>(BindWorkerReceiverForOriginAndCOEP(
&RenderProcessHost::BindCacheStorage, host,
network::CrossOriginEmbedderPolicy()));
} }
void PopulateBinderMap(SharedWorkerHost* host, void PopulateBinderMap(SharedWorkerHost* host,
......
...@@ -394,6 +394,13 @@ void DedicatedWorkerHost::CreateQuicTransportConnector( ...@@ -394,6 +394,13 @@ void DedicatedWorkerHost::CreateQuicTransportConnector(
std::move(receiver)); std::move(receiver));
} }
void DedicatedWorkerHost::BindCacheStorage(
mojo::PendingReceiver<blink::mojom::CacheStorage> receiver) {
DCHECK_CURRENTLY_ON(BrowserThread::UI);
worker_process_host_->BindCacheStorage(cross_origin_embedder_policy_,
worker_origin_, std::move(receiver));
}
void DedicatedWorkerHost::CreateNestedDedicatedWorker( void DedicatedWorkerHost::CreateNestedDedicatedWorker(
mojo::PendingReceiver<blink::mojom::DedicatedWorkerHostFactory> receiver) { mojo::PendingReceiver<blink::mojom::DedicatedWorkerHostFactory> receiver) {
DCHECK_CURRENTLY_ON(BrowserThread::UI); DCHECK_CURRENTLY_ON(BrowserThread::UI);
......
...@@ -80,10 +80,6 @@ class DedicatedWorkerHost final : public blink::mojom::DedicatedWorkerHost, ...@@ -80,10 +80,6 @@ class DedicatedWorkerHost final : public blink::mojom::DedicatedWorkerHost,
RenderProcessHost* GetProcessHost() { return worker_process_host_; } RenderProcessHost* GetProcessHost() { return worker_process_host_; }
const url::Origin& GetWorkerOrigin() { return worker_origin_; } const url::Origin& GetWorkerOrigin() { return worker_origin_; }
const network::CrossOriginEmbedderPolicy& cross_origin_embedder_policy()
const {
return cross_origin_embedder_policy_;
}
void CreateIdleManager( void CreateIdleManager(
mojo::PendingReceiver<blink::mojom::IdleManager> receiver); mojo::PendingReceiver<blink::mojom::IdleManager> receiver);
...@@ -97,6 +93,8 @@ class DedicatedWorkerHost final : public blink::mojom::DedicatedWorkerHost, ...@@ -97,6 +93,8 @@ class DedicatedWorkerHost final : public blink::mojom::DedicatedWorkerHost,
mojo::PendingReceiver<blink::mojom::WebSocketConnector> receiver); mojo::PendingReceiver<blink::mojom::WebSocketConnector> receiver);
void CreateQuicTransportConnector( void CreateQuicTransportConnector(
mojo::PendingReceiver<blink::mojom::QuicTransportConnector> receiver); mojo::PendingReceiver<blink::mojom::QuicTransportConnector> receiver);
void BindCacheStorage(
mojo::PendingReceiver<blink::mojom::CacheStorage> receiver);
#if !defined(OS_ANDROID) #if !defined(OS_ANDROID)
void BindSerialService( void BindSerialService(
......
...@@ -337,6 +337,17 @@ void SharedWorkerHost::CreateQuicTransportConnector( ...@@ -337,6 +337,17 @@ void SharedWorkerHost::CreateQuicTransportConnector(
std::move(receiver)); std::move(receiver));
} }
void SharedWorkerHost::BindCacheStorage(
mojo::PendingReceiver<blink::mojom::CacheStorage> receiver) {
DCHECK_CURRENTLY_ON(BrowserThread::UI);
// TODO(https://crbug.com/1031542): Add support enforcing CORP in
// cache.match() for SharedWorker by providing the correct value here.
network::CrossOriginEmbedderPolicy cross_origin_embedder_policy;
const url::Origin origin = url::Origin::Create(instance().url());
worker_process_host_->BindCacheStorage(cross_origin_embedder_policy, origin,
std::move(receiver));
}
void SharedWorkerHost::Destruct() { void SharedWorkerHost::Destruct() {
// Ask the service to destroy |this| which will terminate the worker. // Ask the service to destroy |this| which will terminate the worker.
service_->DestroyHost(this); service_->DestroyHost(this);
......
...@@ -108,6 +108,8 @@ class CONTENT_EXPORT SharedWorkerHost : public blink::mojom::SharedWorkerHost, ...@@ -108,6 +108,8 @@ class CONTENT_EXPORT SharedWorkerHost : public blink::mojom::SharedWorkerHost,
mojo::PendingReceiver<blink::mojom::AppCacheBackend> receiver); mojo::PendingReceiver<blink::mojom::AppCacheBackend> receiver);
void CreateQuicTransportConnector( void CreateQuicTransportConnector(
mojo::PendingReceiver<blink::mojom::QuicTransportConnector> receiver); mojo::PendingReceiver<blink::mojom::QuicTransportConnector> receiver);
void BindCacheStorage(
mojo::PendingReceiver<blink::mojom::CacheStorage> receiver);
// Causes this instance to be deleted, which will terminate the worker. May // Causes this instance to be deleted, which will terminate the worker. May
// be done based on a UI action. // be done based on a UI action.
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment