Index: content/renderer/service_worker/service_worker_context_client.cc |
diff --git a/content/renderer/service_worker/service_worker_context_client.cc b/content/renderer/service_worker/service_worker_context_client.cc |
index 60821cc41360dee0f721d75a029affa6f6a55120..84e6ae5e82c2cf77f612b98968247dec6e9dcb38 100644 |
--- a/content/renderer/service_worker/service_worker_context_client.cc |
+++ b/content/renderer/service_worker/service_worker_context_client.cc |
@@ -100,6 +100,8 @@ class WebServiceWorkerNetworkProviderImpl |
// Service workers are only available in secure contexts, so all requests |
// are initiated in a secure context. |
extra_data->set_initiated_in_secure_context(true); |
+ extra_data->set_url_loader_factory_override( |
+ provider_->script_loader_factory()); |
request.SetExtraData(extra_data.release()); |
} |
@@ -554,6 +556,7 @@ ServiceWorkerContextClient::ServiceWorkerContextClient( |
const GURL& script_url, |
mojom::ServiceWorkerEventDispatcherRequest dispatcher_request, |
mojom::EmbeddedWorkerInstanceHostAssociatedPtrInfo instance_host, |
+ mojom::ServiceWorkerProviderClientInfoPtr provider_client_info, |
std::unique_ptr<EmbeddedWorkerInstanceClientImpl> embedded_worker_client) |
: embedded_worker_id_(embedded_worker_id), |
service_worker_version_id_(service_worker_version_id), |
@@ -575,6 +578,11 @@ ServiceWorkerContextClient::ServiceWorkerContextClient( |
"ServiceWorkerContextClient::StartingWorkerContext", |
this, |
"PrepareWorker"); |
+ // Create a content::ServiceWorkerNetworkProvider for this data source so |
+ // we can observe its requests. |
+ pending_network_provider_ = base::MakeUnique<ServiceWorkerNetworkProvider>( |
+ std::move(provider_client_info)); |
+ provider_context_ = pending_network_provider_->context(); |
} |
ServiceWorkerContextClient::~ServiceWorkerContextClient() {} |
@@ -716,9 +724,7 @@ void ServiceWorkerContextClient::WorkerContextStarted( |
SetRegistrationInServiceWorkerGlobalScope(registration_info, version_attrs); |
- (*instance_host_) |
- ->OnThreadStarted(WorkerThread::GetCurrentId(), |
- provider_context_->provider_id()); |
+ (*instance_host_)->OnThreadStarted(WorkerThread::GetCurrentId()); |
TRACE_EVENT_ASYNC_STEP_INTO0( |
"ServiceWorker", |
@@ -1094,23 +1100,9 @@ void ServiceWorkerContextClient::DidHandlePaymentRequestEvent( |
std::unique_ptr<blink::WebServiceWorkerNetworkProvider> |
ServiceWorkerContextClient::CreateServiceWorkerNetworkProvider() { |
DCHECK(main_thread_task_runner_->RunsTasksInCurrentSequence()); |
- |
- // Create a content::ServiceWorkerNetworkProvider for this data source so |
- // we can observe its requests. |
- std::unique_ptr<ServiceWorkerNetworkProvider> provider = |
- base::MakeUnique<ServiceWorkerNetworkProvider>( |
- MSG_ROUTING_NONE, SERVICE_WORKER_PROVIDER_FOR_CONTROLLER, |
- true /* is_parent_frame_secure */); |
- provider_context_ = provider->context(); |
- network_provider_id_ = provider->provider_id(); |
- |
- // Tell the network provider about which version to load. |
- provider->SetServiceWorkerVersionId(service_worker_version_id_, |
- embedded_worker_id_); |
- |
// Blink is responsible for deleting the returned object. |
return base::MakeUnique<WebServiceWorkerNetworkProviderImpl>( |
- std::move(provider)); |
+ std::move(pending_network_provider_)); |
} |
std::unique_ptr<blink::WebWorkerFetchContext> |
@@ -1126,7 +1118,7 @@ ServiceWorkerContextClient::CreateServiceWorkerFetchContext() { |
// Blink is responsible for deleting the returned object. |
return base::MakeUnique<ServiceWorkerFetchContextImpl>( |
script_url_, worker_url_loader_factory_provider.PassInterface(), |
- network_provider_id_); |
+ provider_context_->provider_id()); |
} |
std::unique_ptr<blink::WebServiceWorkerProvider> |