| Index: content/browser/service_worker/service_worker_provider_host.cc | 
| diff --git a/content/browser/service_worker/service_worker_provider_host.cc b/content/browser/service_worker/service_worker_provider_host.cc | 
| index c36829aa959e0490b0c4f40d31f5a873e09697af..7bbc833d7b7a9fe1cf1a1387ddce46eb5a891223 100644 | 
| --- a/content/browser/service_worker/service_worker_provider_host.cc | 
| +++ b/content/browser/service_worker/service_worker_provider_host.cc | 
| @@ -52,17 +52,20 @@ ServiceWorkerProviderHost::OneShotGetReadyCallback::~OneShotGetReadyCallback() { | 
| std::unique_ptr<ServiceWorkerProviderHost> | 
| ServiceWorkerProviderHost::PreCreateNavigationHost( | 
| base::WeakPtr<ServiceWorkerContextCore> context, | 
| +    const MojoURLLoaderFactoryGetter& url_loader_factory_getter, | 
| bool are_ancestors_secure) { | 
| CHECK(IsBrowserSideNavigationEnabled()); | 
| // Generate a new browser-assigned id for the host. | 
| int provider_id = g_next_navigation_provider_id--; | 
| -  return std::unique_ptr<ServiceWorkerProviderHost>( | 
| -      new ServiceWorkerProviderHost( | 
| +  std::unique_ptr<ServiceWorkerProviderHost> host( | 
| +      base::MakeUnique<ServiceWorkerProviderHost>( | 
| ChildProcessHost::kInvalidUniqueID, MSG_ROUTING_NONE, provider_id, | 
| SERVICE_WORKER_PROVIDER_FOR_WINDOW, | 
| are_ancestors_secure ? FrameSecurityLevel::SECURE | 
| : FrameSecurityLevel::INSECURE, | 
| context, nullptr)); | 
| +  host->url_loader_factory_getter_ = url_loader_factory_getter; | 
| +  return host; | 
| } | 
|  | 
| ServiceWorkerProviderHost::ServiceWorkerProviderHost( | 
| @@ -82,7 +85,10 @@ ServiceWorkerProviderHost::ServiceWorkerProviderHost( | 
| parent_frame_security_level_(parent_frame_security_level), | 
| context_(context), | 
| dispatcher_host_(dispatcher_host), | 
| -      allow_association_(true) { | 
| +      allow_association_(true), | 
| +      url_loader_factory_getter_( | 
| +          dispatcher_host_ ? dispatcher_host_->url_loader_factory_getter() | 
| +                           : MojoURLLoaderFactoryGetter()) { | 
| DCHECK_NE(SERVICE_WORKER_PROVIDER_UNKNOWN, provider_type_); | 
|  | 
| // PlzNavigate | 
| @@ -341,14 +347,12 @@ ServiceWorkerProviderHost::CreateRequestHandler( | 
| } | 
| if (ServiceWorkerUtils::IsMainResourceType(resource_type) || | 
| controlling_version()) { | 
| -    // |dispatcher_host_| may be null in some unittests. | 
| return std::unique_ptr<ServiceWorkerRequestHandler>( | 
| new ServiceWorkerControlleeRequestHandler( | 
| context_, AsWeakPtr(), blob_storage_context, request_mode, | 
| credentials_mode, redirect_mode, resource_type, | 
| request_context_type, frame_type, body, | 
| -            dispatcher_host_ ? dispatcher_host_->url_loader_factory_getter() | 
| -                             : MojoURLLoaderFactoryGetter())); | 
| +            url_loader_factory_getter_)); | 
| } | 
| return std::unique_ptr<ServiceWorkerRequestHandler>(); | 
| } | 
| @@ -458,6 +462,7 @@ void ServiceWorkerProviderHost::PrepareForCrossSiteTransfer() { | 
| provider_id_ = kInvalidServiceWorkerProviderId; | 
| provider_type_ = SERVICE_WORKER_PROVIDER_UNKNOWN; | 
| dispatcher_host_ = nullptr; | 
| +  url_loader_factory_getter_ = MojoURLLoaderFactoryGetter(); | 
| } | 
|  | 
| void ServiceWorkerProviderHost::CompleteCrossSiteTransfer( | 
| @@ -661,9 +666,11 @@ void ServiceWorkerProviderHost::FinalizeInitialization( | 
| int process_id, | 
| int frame_routing_id, | 
| ServiceWorkerDispatcherHost* dispatcher_host) { | 
| +  DCHECK(dispatcher_host); | 
| render_process_id_ = process_id; | 
| route_id_ = frame_routing_id; | 
| dispatcher_host_ = dispatcher_host; | 
| +  url_loader_factory_getter_ = dispatcher_host_->url_loader_factory_getter(); | 
|  | 
| for (const GURL& pattern : associated_patterns_) | 
| IncreaseProcessReference(pattern); | 
| @@ -673,7 +680,7 @@ void ServiceWorkerProviderHost::FinalizeInitialization( | 
|  | 
| if (associated_registration_.get()) { | 
| SendAssociateRegistrationMessage(); | 
| -    if (dispatcher_host_ && associated_registration_->active_version()) { | 
| +    if (associated_registration_->active_version()) { | 
| Send(new ServiceWorkerMsg_SetControllerServiceWorker( | 
| render_thread_id_, provider_id(), | 
| GetOrCreateServiceWorkerHandle( | 
|  |