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/child/service_worker/service_worker_dispatcher.h" | 5 #include "content/child/service_worker/service_worker_dispatcher.h" |
6 | 6 |
7 #include <stddef.h> | 7 #include <stddef.h> |
8 #include <utility> | 8 #include <utility> |
9 | 9 |
10 #include "base/lazy_instance.h" | 10 #include "base/lazy_instance.h" |
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
72 IPC_MESSAGE_HANDLER(ServiceWorkerMsg_ServiceWorkerRegistered, OnRegistered) | 72 IPC_MESSAGE_HANDLER(ServiceWorkerMsg_ServiceWorkerRegistered, OnRegistered) |
73 IPC_MESSAGE_HANDLER(ServiceWorkerMsg_ServiceWorkerUpdated, OnUpdated) | 73 IPC_MESSAGE_HANDLER(ServiceWorkerMsg_ServiceWorkerUpdated, OnUpdated) |
74 IPC_MESSAGE_HANDLER(ServiceWorkerMsg_ServiceWorkerUnregistered, | 74 IPC_MESSAGE_HANDLER(ServiceWorkerMsg_ServiceWorkerUnregistered, |
75 OnUnregistered) | 75 OnUnregistered) |
76 IPC_MESSAGE_HANDLER(ServiceWorkerMsg_DidGetRegistration, | 76 IPC_MESSAGE_HANDLER(ServiceWorkerMsg_DidGetRegistration, |
77 OnDidGetRegistration) | 77 OnDidGetRegistration) |
78 IPC_MESSAGE_HANDLER(ServiceWorkerMsg_DidGetRegistrations, | 78 IPC_MESSAGE_HANDLER(ServiceWorkerMsg_DidGetRegistrations, |
79 OnDidGetRegistrations) | 79 OnDidGetRegistrations) |
80 IPC_MESSAGE_HANDLER(ServiceWorkerMsg_DidGetRegistrationForReady, | 80 IPC_MESSAGE_HANDLER(ServiceWorkerMsg_DidGetRegistrationForReady, |
81 OnDidGetRegistrationForReady) | 81 OnDidGetRegistrationForReady) |
| 82 IPC_MESSAGE_HANDLER(ServiceWorkerMsg_DidEnableNavigationPreload, |
| 83 OnDidEnableNavigationPreload) |
82 IPC_MESSAGE_HANDLER(ServiceWorkerMsg_ServiceWorkerRegistrationError, | 84 IPC_MESSAGE_HANDLER(ServiceWorkerMsg_ServiceWorkerRegistrationError, |
83 OnRegistrationError) | 85 OnRegistrationError) |
84 IPC_MESSAGE_HANDLER(ServiceWorkerMsg_ServiceWorkerUpdateError, | 86 IPC_MESSAGE_HANDLER(ServiceWorkerMsg_ServiceWorkerUpdateError, |
85 OnUpdateError) | 87 OnUpdateError) |
86 IPC_MESSAGE_HANDLER(ServiceWorkerMsg_ServiceWorkerUnregistrationError, | 88 IPC_MESSAGE_HANDLER(ServiceWorkerMsg_ServiceWorkerUnregistrationError, |
87 OnUnregistrationError) | 89 OnUnregistrationError) |
88 IPC_MESSAGE_HANDLER(ServiceWorkerMsg_ServiceWorkerGetRegistrationError, | 90 IPC_MESSAGE_HANDLER(ServiceWorkerMsg_ServiceWorkerGetRegistrationError, |
89 OnGetRegistrationError) | 91 OnGetRegistrationError) |
90 IPC_MESSAGE_HANDLER(ServiceWorkerMsg_ServiceWorkerGetRegistrationsError, | 92 IPC_MESSAGE_HANDLER(ServiceWorkerMsg_ServiceWorkerGetRegistrationsError, |
91 OnGetRegistrationsError) | 93 OnGetRegistrationsError) |
| 94 IPC_MESSAGE_HANDLER(ServiceWorkerMsg_EnableNavigationPreloadError, |
| 95 OnEnableNavigationPreloadError) |
92 IPC_MESSAGE_HANDLER(ServiceWorkerMsg_ServiceWorkerStateChanged, | 96 IPC_MESSAGE_HANDLER(ServiceWorkerMsg_ServiceWorkerStateChanged, |
93 OnServiceWorkerStateChanged) | 97 OnServiceWorkerStateChanged) |
94 IPC_MESSAGE_HANDLER(ServiceWorkerMsg_SetVersionAttributes, | 98 IPC_MESSAGE_HANDLER(ServiceWorkerMsg_SetVersionAttributes, |
95 OnSetVersionAttributes) | 99 OnSetVersionAttributes) |
96 IPC_MESSAGE_HANDLER(ServiceWorkerMsg_UpdateFound, | 100 IPC_MESSAGE_HANDLER(ServiceWorkerMsg_UpdateFound, |
97 OnUpdateFound) | 101 OnUpdateFound) |
98 IPC_MESSAGE_HANDLER(ServiceWorkerMsg_SetControllerServiceWorker, | 102 IPC_MESSAGE_HANDLER(ServiceWorkerMsg_SetControllerServiceWorker, |
99 OnSetControllerServiceWorker) | 103 OnSetControllerServiceWorker) |
100 IPC_MESSAGE_HANDLER(ServiceWorkerMsg_MessageToDocument, | 104 IPC_MESSAGE_HANDLER(ServiceWorkerMsg_MessageToDocument, |
101 OnPostMessage) | 105 OnPostMessage) |
(...skipping 97 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
199 int provider_id, | 203 int provider_id, |
200 WebServiceWorkerGetRegistrationForReadyCallbacks* callbacks) { | 204 WebServiceWorkerGetRegistrationForReadyCallbacks* callbacks) { |
201 int request_id = get_for_ready_callbacks_.Add(callbacks); | 205 int request_id = get_for_ready_callbacks_.Add(callbacks); |
202 TRACE_EVENT_ASYNC_BEGIN0("ServiceWorker", | 206 TRACE_EVENT_ASYNC_BEGIN0("ServiceWorker", |
203 "ServiceWorkerDispatcher::GetRegistrationForReady", | 207 "ServiceWorkerDispatcher::GetRegistrationForReady", |
204 request_id); | 208 request_id); |
205 thread_safe_sender_->Send(new ServiceWorkerHostMsg_GetRegistrationForReady( | 209 thread_safe_sender_->Send(new ServiceWorkerHostMsg_GetRegistrationForReady( |
206 CurrentWorkerId(), request_id, provider_id)); | 210 CurrentWorkerId(), request_id, provider_id)); |
207 } | 211 } |
208 | 212 |
| 213 void ServiceWorkerDispatcher::EnableNavigationPreload( |
| 214 int provider_id, |
| 215 int64_t registration_id, |
| 216 bool enable, |
| 217 std::unique_ptr<WebEnableNavigationPreloadCallbacks> callbacks) { |
| 218 DCHECK(callbacks); |
| 219 int request_id = |
| 220 enable_navigation_preload_callbacks_.Add(callbacks.release()); |
| 221 thread_safe_sender_->Send(new ServiceWorkerHostMsg_EnableNavigationPreload( |
| 222 CurrentWorkerId(), request_id, provider_id, registration_id, enable)); |
| 223 } |
| 224 |
209 void ServiceWorkerDispatcher::AddProviderContext( | 225 void ServiceWorkerDispatcher::AddProviderContext( |
210 ServiceWorkerProviderContext* provider_context) { | 226 ServiceWorkerProviderContext* provider_context) { |
211 DCHECK(provider_context); | 227 DCHECK(provider_context); |
212 int provider_id = provider_context->provider_id(); | 228 int provider_id = provider_context->provider_id(); |
213 DCHECK(!base::ContainsKey(provider_contexts_, provider_id)); | 229 DCHECK(!base::ContainsKey(provider_contexts_, provider_id)); |
214 provider_contexts_[provider_id] = provider_context; | 230 provider_contexts_[provider_id] = provider_context; |
215 } | 231 } |
216 | 232 |
217 void ServiceWorkerDispatcher::RemoveProviderContext( | 233 void ServiceWorkerDispatcher::RemoveProviderContext( |
218 ServiceWorkerProviderContext* provider_context) { | 234 ServiceWorkerProviderContext* provider_context) { |
(...skipping 294 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
513 get_for_ready_callbacks_.Lookup(request_id); | 529 get_for_ready_callbacks_.Lookup(request_id); |
514 DCHECK(callbacks); | 530 DCHECK(callbacks); |
515 if (!callbacks) | 531 if (!callbacks) |
516 return; | 532 return; |
517 | 533 |
518 callbacks->onSuccess(WebServiceWorkerRegistrationImpl::CreateHandle( | 534 callbacks->onSuccess(WebServiceWorkerRegistrationImpl::CreateHandle( |
519 GetOrAdoptRegistration(info, attrs))); | 535 GetOrAdoptRegistration(info, attrs))); |
520 get_for_ready_callbacks_.Remove(request_id); | 536 get_for_ready_callbacks_.Remove(request_id); |
521 } | 537 } |
522 | 538 |
| 539 void ServiceWorkerDispatcher::OnDidEnableNavigationPreload(int thread_id, |
| 540 int request_id) { |
| 541 WebEnableNavigationPreloadCallbacks* callbacks = |
| 542 enable_navigation_preload_callbacks_.Lookup(request_id); |
| 543 DCHECK(callbacks); |
| 544 if (!callbacks) |
| 545 return; |
| 546 callbacks->onSuccess(); |
| 547 enable_navigation_preload_callbacks_.Remove(request_id); |
| 548 } |
| 549 |
523 void ServiceWorkerDispatcher::OnRegistrationError( | 550 void ServiceWorkerDispatcher::OnRegistrationError( |
524 int thread_id, | 551 int thread_id, |
525 int request_id, | 552 int request_id, |
526 WebServiceWorkerError::ErrorType error_type, | 553 WebServiceWorkerError::ErrorType error_type, |
527 const base::string16& message) { | 554 const base::string16& message) { |
528 TRACE_EVENT_ASYNC_STEP_INTO0("ServiceWorker", | 555 TRACE_EVENT_ASYNC_STEP_INTO0("ServiceWorker", |
529 "ServiceWorkerDispatcher::RegisterServiceWorker", | 556 "ServiceWorkerDispatcher::RegisterServiceWorker", |
530 request_id, | 557 request_id, |
531 "OnRegistrationError"); | 558 "OnRegistrationError"); |
532 TRACE_EVENT_ASYNC_END0("ServiceWorker", | 559 TRACE_EVENT_ASYNC_END0("ServiceWorker", |
(...skipping 92 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
625 WebServiceWorkerGetRegistrationsCallbacks* callbacks = | 652 WebServiceWorkerGetRegistrationsCallbacks* callbacks = |
626 pending_get_registrations_callbacks_.Lookup(request_id); | 653 pending_get_registrations_callbacks_.Lookup(request_id); |
627 DCHECK(callbacks); | 654 DCHECK(callbacks); |
628 if (!callbacks) | 655 if (!callbacks) |
629 return; | 656 return; |
630 | 657 |
631 callbacks->onError(WebServiceWorkerError(error_type, message)); | 658 callbacks->onError(WebServiceWorkerError(error_type, message)); |
632 pending_get_registrations_callbacks_.Remove(request_id); | 659 pending_get_registrations_callbacks_.Remove(request_id); |
633 } | 660 } |
634 | 661 |
| 662 void ServiceWorkerDispatcher::OnEnableNavigationPreloadError( |
| 663 int thread_id, |
| 664 int request_id, |
| 665 WebServiceWorkerError::ErrorType error_type, |
| 666 const std::string& message) { |
| 667 WebEnableNavigationPreloadCallbacks* callbacks = |
| 668 enable_navigation_preload_callbacks_.Lookup(request_id); |
| 669 DCHECK(callbacks); |
| 670 if (!callbacks) |
| 671 return; |
| 672 callbacks->onError( |
| 673 WebServiceWorkerError(error_type, blink::WebString::fromUTF8(message))); |
| 674 enable_navigation_preload_callbacks_.Remove(request_id); |
| 675 } |
| 676 |
635 void ServiceWorkerDispatcher::OnServiceWorkerStateChanged( | 677 void ServiceWorkerDispatcher::OnServiceWorkerStateChanged( |
636 int thread_id, | 678 int thread_id, |
637 int handle_id, | 679 int handle_id, |
638 blink::WebServiceWorkerState state) { | 680 blink::WebServiceWorkerState state) { |
639 TRACE_EVENT2("ServiceWorker", | 681 TRACE_EVENT2("ServiceWorker", |
640 "ServiceWorkerDispatcher::OnServiceWorkerStateChanged", | 682 "ServiceWorkerDispatcher::OnServiceWorkerStateChanged", |
641 "Thread ID", thread_id, | 683 "Thread ID", thread_id, |
642 "State", state); | 684 "State", state); |
643 WorkerObjectMap::iterator worker = service_workers_.find(handle_id); | 685 WorkerObjectMap::iterator worker = service_workers_.find(handle_id); |
644 if (worker != service_workers_.end()) | 686 if (worker != service_workers_.end()) |
(...skipping 130 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
775 return ServiceWorkerRegistrationHandleReference::Adopt( | 817 return ServiceWorkerRegistrationHandleReference::Adopt( |
776 info, thread_safe_sender_.get()); | 818 info, thread_safe_sender_.get()); |
777 } | 819 } |
778 | 820 |
779 std::unique_ptr<ServiceWorkerHandleReference> ServiceWorkerDispatcher::Adopt( | 821 std::unique_ptr<ServiceWorkerHandleReference> ServiceWorkerDispatcher::Adopt( |
780 const ServiceWorkerObjectInfo& info) { | 822 const ServiceWorkerObjectInfo& info) { |
781 return ServiceWorkerHandleReference::Adopt(info, thread_safe_sender_.get()); | 823 return ServiceWorkerHandleReference::Adopt(info, thread_safe_sender_.get()); |
782 } | 824 } |
783 | 825 |
784 } // namespace content | 826 } // namespace content |
OLD | NEW |