OLD | NEW |
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "content/browser/service_worker/service_worker_dispatcher_host.h" | 5 #include "content/browser/service_worker/service_worker_dispatcher_host.h" |
6 | 6 |
7 #include <utility> | 7 #include <utility> |
8 | 8 |
9 #include "base/debug/crash_logging.h" | 9 #include "base/debug/crash_logging.h" |
10 #include "base/logging.h" | 10 #include "base/logging.h" |
(...skipping 153 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
164 IPC_MESSAGE_HANDLER(ServiceWorkerHostMsg_UpdateServiceWorker, | 164 IPC_MESSAGE_HANDLER(ServiceWorkerHostMsg_UpdateServiceWorker, |
165 OnUpdateServiceWorker) | 165 OnUpdateServiceWorker) |
166 IPC_MESSAGE_HANDLER(ServiceWorkerHostMsg_UnregisterServiceWorker, | 166 IPC_MESSAGE_HANDLER(ServiceWorkerHostMsg_UnregisterServiceWorker, |
167 OnUnregisterServiceWorker) | 167 OnUnregisterServiceWorker) |
168 IPC_MESSAGE_HANDLER(ServiceWorkerHostMsg_GetRegistration, | 168 IPC_MESSAGE_HANDLER(ServiceWorkerHostMsg_GetRegistration, |
169 OnGetRegistration) | 169 OnGetRegistration) |
170 IPC_MESSAGE_HANDLER(ServiceWorkerHostMsg_GetRegistrations, | 170 IPC_MESSAGE_HANDLER(ServiceWorkerHostMsg_GetRegistrations, |
171 OnGetRegistrations) | 171 OnGetRegistrations) |
172 IPC_MESSAGE_HANDLER(ServiceWorkerHostMsg_GetRegistrationForReady, | 172 IPC_MESSAGE_HANDLER(ServiceWorkerHostMsg_GetRegistrationForReady, |
173 OnGetRegistrationForReady) | 173 OnGetRegistrationForReady) |
| 174 IPC_MESSAGE_HANDLER(ServiceWorkerHostMsg_SetNavigationPreload, |
| 175 OnSetNavigationPreload) |
| 176 IPC_MESSAGE_HANDLER(ServiceWorkerHostMsg_GetNavigationPreload, |
| 177 OnGetNavigationPreload) |
174 IPC_MESSAGE_HANDLER(ServiceWorkerHostMsg_ProviderCreated, | 178 IPC_MESSAGE_HANDLER(ServiceWorkerHostMsg_ProviderCreated, |
175 OnProviderCreated) | 179 OnProviderCreated) |
176 IPC_MESSAGE_HANDLER(ServiceWorkerHostMsg_ProviderDestroyed, | 180 IPC_MESSAGE_HANDLER(ServiceWorkerHostMsg_ProviderDestroyed, |
177 OnProviderDestroyed) | 181 OnProviderDestroyed) |
178 IPC_MESSAGE_HANDLER(ServiceWorkerHostMsg_SetVersionId, | 182 IPC_MESSAGE_HANDLER(ServiceWorkerHostMsg_SetVersionId, |
179 OnSetHostedVersionId) | 183 OnSetHostedVersionId) |
180 IPC_MESSAGE_HANDLER(ServiceWorkerHostMsg_PostMessageToWorker, | 184 IPC_MESSAGE_HANDLER(ServiceWorkerHostMsg_PostMessageToWorker, |
181 OnPostMessageToWorker) | 185 OnPostMessageToWorker) |
182 IPC_MESSAGE_HANDLER(EmbeddedWorkerHostMsg_WorkerReadyForInspection, | 186 IPC_MESSAGE_HANDLER(EmbeddedWorkerHostMsg_WorkerReadyForInspection, |
183 OnWorkerReadyForInspection) | 187 OnWorkerReadyForInspection) |
(...skipping 508 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
692 "ServiceWorker", "ServiceWorkerDispatcherHost::GetRegistrationForReady", | 696 "ServiceWorker", "ServiceWorkerDispatcherHost::GetRegistrationForReady", |
693 request_id); | 697 request_id); |
694 if (!provider_host->GetRegistrationForReady(base::Bind( | 698 if (!provider_host->GetRegistrationForReady(base::Bind( |
695 &ServiceWorkerDispatcherHost::GetRegistrationForReadyComplete, | 699 &ServiceWorkerDispatcherHost::GetRegistrationForReadyComplete, |
696 this, thread_id, request_id, provider_host->AsWeakPtr()))) { | 700 this, thread_id, request_id, provider_host->AsWeakPtr()))) { |
697 bad_message::ReceivedBadMessage( | 701 bad_message::ReceivedBadMessage( |
698 this, bad_message::SWDH_GET_REGISTRATION_FOR_READY_ALREADY_IN_PROGRESS); | 702 this, bad_message::SWDH_GET_REGISTRATION_FOR_READY_ALREADY_IN_PROGRESS); |
699 } | 703 } |
700 } | 704 } |
701 | 705 |
| 706 void ServiceWorkerDispatcherHost::OnSetNavigationPreload( |
| 707 int thread_id, |
| 708 int request_id, |
| 709 int handle_id, |
| 710 const std::string& value) { |
| 711 LOG(ERROR) << "ServiceWorkerDispatcherHost::OnSetNavigationPreload: value=" |
| 712 << value; |
| 713 ServiceWorkerHandle* handle = handles_.Lookup(handle_id); |
| 714 if (!handle) { |
| 715 bad_message::ReceivedBadMessage(this, |
| 716 bad_message::SWDH_POST_MESSAGE /* XXX */); |
| 717 return; |
| 718 } |
| 719 ServiceWorkerVersion* version = handle->version(); |
| 720 if (version->is_navigation_preload_enabled() && |
| 721 version->navigation_preload_value() == value) { |
| 722 Send(new ServiceWorkerMsg_DidSetNavigationPreload(thread_id, request_id)); |
| 723 return; |
| 724 } |
| 725 handle->version()->set_navigation_preload_enabled(true, value); |
| 726 Send(new ServiceWorkerMsg_DidSetNavigationPreload(thread_id, request_id)); |
| 727 // TODO(falken): Persist the value in storage. |
| 728 } |
| 729 |
| 730 void ServiceWorkerDispatcherHost::OnGetNavigationPreload(int thread_id, |
| 731 int request_id, |
| 732 int handle_id) { |
| 733 LOG(ERROR) << "ServiceWorkerDispatcherHost::OnGetNavigationPreload"; |
| 734 ServiceWorkerHandle* handle = handles_.Lookup(handle_id); |
| 735 if (!handle) { |
| 736 bad_message::ReceivedBadMessage(this, |
| 737 bad_message::SWDH_POST_MESSAGE /* XXX */); |
| 738 return; |
| 739 } |
| 740 const ServiceWorkerVersion* version = handle->version(); |
| 741 Send(new ServiceWorkerMsg_DidGetNavigationPreload( |
| 742 thread_id, request_id, version->is_navigation_preload_enabled(), |
| 743 version->navigation_preload_value())); |
| 744 } |
| 745 |
702 void ServiceWorkerDispatcherHost::OnPostMessageToWorker( | 746 void ServiceWorkerDispatcherHost::OnPostMessageToWorker( |
703 int handle_id, | 747 int handle_id, |
704 int provider_id, | 748 int provider_id, |
705 const base::string16& message, | 749 const base::string16& message, |
706 const url::Origin& source_origin, | 750 const url::Origin& source_origin, |
707 const std::vector<int>& sent_message_ports) { | 751 const std::vector<int>& sent_message_ports) { |
708 TRACE_EVENT0("ServiceWorker", | 752 TRACE_EVENT0("ServiceWorker", |
709 "ServiceWorkerDispatcherHost::OnPostMessageToWorker"); | 753 "ServiceWorkerDispatcherHost::OnPostMessageToWorker"); |
710 if (!GetContext()) | 754 if (!GetContext()) |
711 return; | 755 return; |
(...skipping 743 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1455 if (!handle) { | 1499 if (!handle) { |
1456 bad_message::ReceivedBadMessage(this, | 1500 bad_message::ReceivedBadMessage(this, |
1457 bad_message::SWDH_TERMINATE_BAD_HANDLE); | 1501 bad_message::SWDH_TERMINATE_BAD_HANDLE); |
1458 return; | 1502 return; |
1459 } | 1503 } |
1460 handle->version()->StopWorker( | 1504 handle->version()->StopWorker( |
1461 base::Bind(&ServiceWorkerUtils::NoOpStatusCallback)); | 1505 base::Bind(&ServiceWorkerUtils::NoOpStatusCallback)); |
1462 } | 1506 } |
1463 | 1507 |
1464 } // namespace content | 1508 } // namespace content |
OLD | NEW |