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 6ca9fac9f7e9fe5144594f55d03946f2c13f7b47..5619cf46045c7d17f0a92adef083e6c13d2b0388 100644 |
--- a/content/child/service_worker/service_worker_dispatcher.cc |
+++ b/content/child/service_worker/service_worker_dispatcher.cc |
@@ -24,6 +24,7 @@ |
#include "content/common/service_worker/service_worker_types.h" |
#include "content/public/common/content_constants.h" |
#include "third_party/WebKit/public/platform/WebString.h" |
+#include "third_party/WebKit/public/platform/modules/serviceworker/WebNavigationPreloadState.h" |
#include "third_party/WebKit/public/platform/modules/serviceworker/WebServiceWorkerProviderClient.h" |
#include "url/url_constants.h" |
@@ -81,6 +82,8 @@ void ServiceWorkerDispatcher::OnMessageReceived(const IPC::Message& msg) { |
OnDidGetRegistrationForReady) |
IPC_MESSAGE_HANDLER(ServiceWorkerMsg_DidEnableNavigationPreload, |
OnDidEnableNavigationPreload) |
+ IPC_MESSAGE_HANDLER(ServiceWorkerMsg_DidGetNavigationPreloadState, |
+ OnDidGetNavigationPreloadState) |
IPC_MESSAGE_HANDLER(ServiceWorkerMsg_ServiceWorkerRegistrationError, |
OnRegistrationError) |
IPC_MESSAGE_HANDLER(ServiceWorkerMsg_ServiceWorkerUpdateError, |
@@ -93,6 +96,8 @@ void ServiceWorkerDispatcher::OnMessageReceived(const IPC::Message& msg) { |
OnGetRegistrationsError) |
IPC_MESSAGE_HANDLER(ServiceWorkerMsg_EnableNavigationPreloadError, |
OnEnableNavigationPreloadError) |
+ IPC_MESSAGE_HANDLER(ServiceWorkerMsg_GetNavigationPreloadStateError, |
+ OnGetNavigationPreloadStateError) |
IPC_MESSAGE_HANDLER(ServiceWorkerMsg_ServiceWorkerStateChanged, |
OnServiceWorkerStateChanged) |
IPC_MESSAGE_HANDLER(ServiceWorkerMsg_SetVersionAttributes, |
@@ -222,6 +227,17 @@ void ServiceWorkerDispatcher::EnableNavigationPreload( |
CurrentWorkerId(), request_id, provider_id, registration_id, enable)); |
} |
+void ServiceWorkerDispatcher::GetNavigationPreloadState( |
+ int provider_id, |
+ int64_t registration_id, |
+ std::unique_ptr<WebGetNavigationPreloadStateCallbacks> callbacks) { |
+ DCHECK(callbacks); |
+ int request_id = |
+ get_navigation_preload_state_callbacks_.Add(callbacks.release()); |
+ thread_safe_sender_->Send(new ServiceWorkerHostMsg_GetNavigationPreloadState( |
+ CurrentWorkerId(), request_id, provider_id, registration_id)); |
+} |
+ |
void ServiceWorkerDispatcher::AddProviderContext( |
ServiceWorkerProviderContext* provider_context) { |
DCHECK(provider_context); |
@@ -547,6 +563,20 @@ void ServiceWorkerDispatcher::OnDidEnableNavigationPreload(int thread_id, |
enable_navigation_preload_callbacks_.Remove(request_id); |
} |
+void ServiceWorkerDispatcher::OnDidGetNavigationPreloadState(int thread_id, |
+ int request_id, |
+ bool enabled) { |
+ WebGetNavigationPreloadStateCallbacks* callbacks = |
+ get_navigation_preload_state_callbacks_.Lookup(request_id); |
+ DCHECK(callbacks); |
+ if (!callbacks) |
+ return; |
+ // TODO(falken): Implement populating headerValue. |
+ callbacks->onSuccess( |
+ blink::WebNavigationPreloadState(enabled, blink::WebString())); |
+ get_navigation_preload_state_callbacks_.Remove(request_id); |
+} |
+ |
void ServiceWorkerDispatcher::OnRegistrationError( |
int thread_id, |
int request_id, |
@@ -674,6 +704,21 @@ void ServiceWorkerDispatcher::OnEnableNavigationPreloadError( |
enable_navigation_preload_callbacks_.Remove(request_id); |
} |
+void ServiceWorkerDispatcher::OnGetNavigationPreloadStateError( |
+ int thread_id, |
+ int request_id, |
+ WebServiceWorkerError::ErrorType error_type, |
+ const std::string& message) { |
+ WebGetNavigationPreloadStateCallbacks* callbacks = |
+ get_navigation_preload_state_callbacks_.Lookup(request_id); |
+ DCHECK(callbacks); |
+ if (!callbacks) |
+ return; |
+ callbacks->onError( |
+ WebServiceWorkerError(error_type, blink::WebString::fromUTF8(message))); |
+ get_navigation_preload_state_callbacks_.Remove(request_id); |
+} |
+ |
void ServiceWorkerDispatcher::OnServiceWorkerStateChanged( |
int thread_id, |
int handle_id, |