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 fefc7137f6e953a3a34b43563943dc094bab16ab..453bc93f6ff2e476d3b2691edd1bbb8274de3bcf 100644 |
--- a/content/browser/service_worker/service_worker_fetch_dispatcher.cc |
+++ b/content/browser/service_worker/service_worker_fetch_dispatcher.cc |
@@ -12,6 +12,7 @@ |
#include "base/time/time.h" |
#include "base/trace_event/trace_event.h" |
#include "content/browser/service_worker/embedded_worker_status.h" |
+#include "content/browser/service_worker/service_worker_navigation_preload_fetcher.h" |
#include "content/browser/service_worker/service_worker_version.h" |
#include "content/common/service_worker/fetch_event_dispatcher.mojom.h" |
#include "content/common/service_worker/service_worker_messages.h" |
@@ -279,9 +280,20 @@ void ServiceWorkerFetchDispatcher::MaybeStartNavigationPreload( |
} |
if (!version_->navigation_preload_enabled()) |
return; |
- // TODO(horo): Implement this to start the preload request for the navigation |
- // request and set |preload_handle_|. |
- NOTIMPLEMENTED(); |
+ // TODO(horo): Currently NavigationPreload doesn't support request body. |
+ if (!request_->blob_uuid.empty()) |
+ return; |
+ if (!base::CommandLine::ForCurrentProcess()->HasSwitch( |
+ switches::kEnableExperimentalWebPlatformFeatures)) { |
+ // TODO(horo): Check |version_|'s origin_trial_tokens() here if we use |
+ // Origin-Trial for NavigationPreload. |
+ return; |
+ } |
+ // TODO(horo): Pass "Service-Worker-Navigation-Preload" header to |
+ // ServiceWorkerNavigationPreloadFetcher. |
+ // See: https://github.com/w3c/ServiceWorker/issues/920#issuecomment-251150270 |
+ preload_handle_ = |
+ ServiceWorkerNavigationPreloadFetcher::Start(original_request); |
} |
ServiceWorkerMetrics::EventType ServiceWorkerFetchDispatcher::GetEventType() |