Index: content/browser/service_worker/service_worker_fetch_dispatcher.cc |
diff --git a/content/browser/service_worker/service_worker_fetch_dispatcher.cc b/content/browser/service_worker/service_worker_fetch_dispatcher.cc |
index f26bb19ff3ed0398fe4fe9c6758ba319ac276d02..3749e2a12c40bec5e50a4ee9474be8ccbffbafbd 100644 |
--- a/content/browser/service_worker/service_worker_fetch_dispatcher.cc |
+++ b/content/browser/service_worker/service_worker_fetch_dispatcher.cc |
@@ -281,7 +281,8 @@ void ServiceWorkerFetchDispatcher::Complete( |
} |
void ServiceWorkerFetchDispatcher::MaybeStartNavigationPreload( |
- net::URLRequest* original_request) { |
+ net::URLRequest* original_request, |
+ base::WeakPtr<ServiceWorkerProviderHost> provider_host) { |
if (resource_type_ != RESOURCE_TYPE_MAIN_FRAME && |
resource_type_ != RESOURCE_TYPE_SUB_FRAME) { |
return; |
@@ -297,19 +298,20 @@ void ServiceWorkerFetchDispatcher::MaybeStartNavigationPreload( |
// Origin-Trial for NavigationPreload. |
return; |
} |
- if (IsBrowserSideNavigationEnabled()) { |
- // TODO(horo): Support NavigationPreload with PlzNavigate. |
- NOTIMPLEMENTED(); |
- return; |
- } |
const ResourceRequestInfoImpl* original_info = |
ResourceRequestInfoImpl::ForRequest(original_request); |
- if (!original_info->filter()) |
- return; |
+ ResourceMessageFilter* filter = original_info->filter(); |
+ if (!filter) { |
+ DCHECK(IsBrowserSideNavigationEnabled()); |
+ if (!provider_host) |
+ return; |
+ filter = provider_host->resource_filter_for_navigation_preload(); |
+ } |
+ DCHECK(filter); |
+ |
mojom::URLLoaderFactoryPtr factory; |
- URLLoaderFactoryImpl::Create(original_info->filter(), |
- mojo::GetProxy(&factory)); |
+ URLLoaderFactoryImpl::Create(filter, mojo::GetProxy(&factory)); |
preload_handle_ = mojom::FetchEventPreloadHandle::New(); |