Index: content/browser/service_worker/service_worker_dispatcher_host.cc |
diff --git a/content/browser/service_worker/service_worker_dispatcher_host.cc b/content/browser/service_worker/service_worker_dispatcher_host.cc |
index 2c19cabaf95d343fb674a4d76c1941bdd3ac7b8a..99f640e0396da77362ce29b52d20dba08fff9f52 100644 |
--- a/content/browser/service_worker/service_worker_dispatcher_host.cc |
+++ b/content/browser/service_worker/service_worker_dispatcher_host.cc |
@@ -171,6 +171,10 @@ bool ServiceWorkerDispatcherHost::OnMessageReceived( |
OnGetRegistrations) |
IPC_MESSAGE_HANDLER(ServiceWorkerHostMsg_GetRegistrationForReady, |
OnGetRegistrationForReady) |
+ IPC_MESSAGE_HANDLER(ServiceWorkerHostMsg_SetNavigationPreload, |
+ OnSetNavigationPreload) |
+ IPC_MESSAGE_HANDLER(ServiceWorkerHostMsg_GetNavigationPreload, |
+ OnGetNavigationPreload) |
IPC_MESSAGE_HANDLER(ServiceWorkerHostMsg_ProviderCreated, |
OnProviderCreated) |
IPC_MESSAGE_HANDLER(ServiceWorkerHostMsg_ProviderDestroyed, |
@@ -699,6 +703,46 @@ void ServiceWorkerDispatcherHost::OnGetRegistrationForReady( |
} |
} |
+void ServiceWorkerDispatcherHost::OnSetNavigationPreload( |
+ int thread_id, |
+ int request_id, |
+ int handle_id, |
+ const std::string& value) { |
+ LOG(ERROR) << "ServiceWorkerDispatcherHost::OnSetNavigationPreload: value=" |
+ << value; |
+ ServiceWorkerHandle* handle = handles_.Lookup(handle_id); |
+ if (!handle) { |
+ bad_message::ReceivedBadMessage(this, |
+ bad_message::SWDH_POST_MESSAGE /* XXX */); |
+ return; |
+ } |
+ ServiceWorkerVersion* version = handle->version(); |
+ if (version->is_navigation_preload_enabled() && |
+ version->navigation_preload_value() == value) { |
+ Send(new ServiceWorkerMsg_DidSetNavigationPreload(thread_id, request_id)); |
+ return; |
+ } |
+ handle->version()->set_navigation_preload_enabled(true, value); |
+ Send(new ServiceWorkerMsg_DidSetNavigationPreload(thread_id, request_id)); |
+ // TODO(falken): Persist the value in storage. |
+} |
+ |
+void ServiceWorkerDispatcherHost::OnGetNavigationPreload(int thread_id, |
+ int request_id, |
+ int handle_id) { |
+ LOG(ERROR) << "ServiceWorkerDispatcherHost::OnGetNavigationPreload"; |
+ ServiceWorkerHandle* handle = handles_.Lookup(handle_id); |
+ if (!handle) { |
+ bad_message::ReceivedBadMessage(this, |
+ bad_message::SWDH_POST_MESSAGE /* XXX */); |
+ return; |
+ } |
+ const ServiceWorkerVersion* version = handle->version(); |
+ Send(new ServiceWorkerMsg_DidGetNavigationPreload( |
+ thread_id, request_id, version->is_navigation_preload_enabled(), |
+ version->navigation_preload_value())); |
+} |
+ |
void ServiceWorkerDispatcherHost::OnPostMessageToWorker( |
int handle_id, |
int provider_id, |