| 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 base::string16& message) { |
| 667 WebEnableNavigationPreloadCallbacks* callbacks = |
| 668 enable_navigation_preload_callbacks_.Lookup(request_id); |
| 669 DCHECK(callbacks); |
| 670 if (!callbacks) |
| 671 return; |
| 672 callbacks->onError(WebServiceWorkerError(error_type, message)); |
| 673 enable_navigation_preload_callbacks_.Remove(request_id); |
| 674 } |
| 675 |
| 635 void ServiceWorkerDispatcher::OnServiceWorkerStateChanged( | 676 void ServiceWorkerDispatcher::OnServiceWorkerStateChanged( |
| 636 int thread_id, | 677 int thread_id, |
| 637 int handle_id, | 678 int handle_id, |
| 638 blink::WebServiceWorkerState state) { | 679 blink::WebServiceWorkerState state) { |
| 639 TRACE_EVENT2("ServiceWorker", | 680 TRACE_EVENT2("ServiceWorker", |
| 640 "ServiceWorkerDispatcher::OnServiceWorkerStateChanged", | 681 "ServiceWorkerDispatcher::OnServiceWorkerStateChanged", |
| 641 "Thread ID", thread_id, | 682 "Thread ID", thread_id, |
| 642 "State", state); | 683 "State", state); |
| 643 WorkerObjectMap::iterator worker = service_workers_.find(handle_id); | 684 WorkerObjectMap::iterator worker = service_workers_.find(handle_id); |
| 644 if (worker != service_workers_.end()) | 685 if (worker != service_workers_.end()) |
| (...skipping 130 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 775 return ServiceWorkerRegistrationHandleReference::Adopt( | 816 return ServiceWorkerRegistrationHandleReference::Adopt( |
| 776 info, thread_safe_sender_.get()); | 817 info, thread_safe_sender_.get()); |
| 777 } | 818 } |
| 778 | 819 |
| 779 std::unique_ptr<ServiceWorkerHandleReference> ServiceWorkerDispatcher::Adopt( | 820 std::unique_ptr<ServiceWorkerHandleReference> ServiceWorkerDispatcher::Adopt( |
| 780 const ServiceWorkerObjectInfo& info) { | 821 const ServiceWorkerObjectInfo& info) { |
| 781 return ServiceWorkerHandleReference::Adopt(info, thread_safe_sender_.get()); | 822 return ServiceWorkerHandleReference::Adopt(info, thread_safe_sender_.get()); |
| 782 } | 823 } |
| 783 | 824 |
| 784 } // namespace content | 825 } // namespace content |
| OLD | NEW |