Index: content/child/service_worker/service_worker_dispatcher.cc |
diff --git a/content/child/service_worker/service_worker_dispatcher.cc b/content/child/service_worker/service_worker_dispatcher.cc |
index 984468a725342878cf099057958ac33bfaa193ad..6ca9fac9f7e9fe5144594f55d03946f2c13f7b47 100644 |
--- a/content/child/service_worker/service_worker_dispatcher.cc |
+++ b/content/child/service_worker/service_worker_dispatcher.cc |
@@ -79,6 +79,8 @@ void ServiceWorkerDispatcher::OnMessageReceived(const IPC::Message& msg) { |
OnDidGetRegistrations) |
IPC_MESSAGE_HANDLER(ServiceWorkerMsg_DidGetRegistrationForReady, |
OnDidGetRegistrationForReady) |
+ IPC_MESSAGE_HANDLER(ServiceWorkerMsg_DidEnableNavigationPreload, |
+ OnDidEnableNavigationPreload) |
IPC_MESSAGE_HANDLER(ServiceWorkerMsg_ServiceWorkerRegistrationError, |
OnRegistrationError) |
IPC_MESSAGE_HANDLER(ServiceWorkerMsg_ServiceWorkerUpdateError, |
@@ -89,6 +91,8 @@ void ServiceWorkerDispatcher::OnMessageReceived(const IPC::Message& msg) { |
OnGetRegistrationError) |
IPC_MESSAGE_HANDLER(ServiceWorkerMsg_ServiceWorkerGetRegistrationsError, |
OnGetRegistrationsError) |
+ IPC_MESSAGE_HANDLER(ServiceWorkerMsg_EnableNavigationPreloadError, |
+ OnEnableNavigationPreloadError) |
IPC_MESSAGE_HANDLER(ServiceWorkerMsg_ServiceWorkerStateChanged, |
OnServiceWorkerStateChanged) |
IPC_MESSAGE_HANDLER(ServiceWorkerMsg_SetVersionAttributes, |
@@ -206,6 +210,18 @@ void ServiceWorkerDispatcher::GetRegistrationForReady( |
CurrentWorkerId(), request_id, provider_id)); |
} |
+void ServiceWorkerDispatcher::EnableNavigationPreload( |
+ int provider_id, |
+ int64_t registration_id, |
+ bool enable, |
+ std::unique_ptr<WebEnableNavigationPreloadCallbacks> callbacks) { |
+ DCHECK(callbacks); |
+ int request_id = |
+ enable_navigation_preload_callbacks_.Add(callbacks.release()); |
+ thread_safe_sender_->Send(new ServiceWorkerHostMsg_EnableNavigationPreload( |
+ CurrentWorkerId(), request_id, provider_id, registration_id, enable)); |
+} |
+ |
void ServiceWorkerDispatcher::AddProviderContext( |
ServiceWorkerProviderContext* provider_context) { |
DCHECK(provider_context); |
@@ -520,6 +536,17 @@ void ServiceWorkerDispatcher::OnDidGetRegistrationForReady( |
get_for_ready_callbacks_.Remove(request_id); |
} |
+void ServiceWorkerDispatcher::OnDidEnableNavigationPreload(int thread_id, |
+ int request_id) { |
+ WebEnableNavigationPreloadCallbacks* callbacks = |
+ enable_navigation_preload_callbacks_.Lookup(request_id); |
+ DCHECK(callbacks); |
+ if (!callbacks) |
+ return; |
+ callbacks->onSuccess(); |
+ enable_navigation_preload_callbacks_.Remove(request_id); |
+} |
+ |
void ServiceWorkerDispatcher::OnRegistrationError( |
int thread_id, |
int request_id, |
@@ -632,6 +659,21 @@ void ServiceWorkerDispatcher::OnGetRegistrationsError( |
pending_get_registrations_callbacks_.Remove(request_id); |
} |
+void ServiceWorkerDispatcher::OnEnableNavigationPreloadError( |
+ int thread_id, |
+ int request_id, |
+ WebServiceWorkerError::ErrorType error_type, |
+ const std::string& message) { |
+ WebEnableNavigationPreloadCallbacks* callbacks = |
+ enable_navigation_preload_callbacks_.Lookup(request_id); |
+ DCHECK(callbacks); |
+ if (!callbacks) |
+ return; |
+ callbacks->onError( |
+ WebServiceWorkerError(error_type, blink::WebString::fromUTF8(message))); |
+ enable_navigation_preload_callbacks_.Remove(request_id); |
+} |
+ |
void ServiceWorkerDispatcher::OnServiceWorkerStateChanged( |
int thread_id, |
int handle_id, |