| 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 66 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 77 IPC_MESSAGE_HANDLER(ServiceWorkerMsg_DidGetRegistration, | 77 IPC_MESSAGE_HANDLER(ServiceWorkerMsg_DidGetRegistration, |
| 78 OnDidGetRegistration) | 78 OnDidGetRegistration) |
| 79 IPC_MESSAGE_HANDLER(ServiceWorkerMsg_DidGetRegistrations, | 79 IPC_MESSAGE_HANDLER(ServiceWorkerMsg_DidGetRegistrations, |
| 80 OnDidGetRegistrations) | 80 OnDidGetRegistrations) |
| 81 IPC_MESSAGE_HANDLER(ServiceWorkerMsg_DidGetRegistrationForReady, | 81 IPC_MESSAGE_HANDLER(ServiceWorkerMsg_DidGetRegistrationForReady, |
| 82 OnDidGetRegistrationForReady) | 82 OnDidGetRegistrationForReady) |
| 83 IPC_MESSAGE_HANDLER(ServiceWorkerMsg_DidEnableNavigationPreload, | 83 IPC_MESSAGE_HANDLER(ServiceWorkerMsg_DidEnableNavigationPreload, |
| 84 OnDidEnableNavigationPreload) | 84 OnDidEnableNavigationPreload) |
| 85 IPC_MESSAGE_HANDLER(ServiceWorkerMsg_DidGetNavigationPreloadState, | 85 IPC_MESSAGE_HANDLER(ServiceWorkerMsg_DidGetNavigationPreloadState, |
| 86 OnDidGetNavigationPreloadState) | 86 OnDidGetNavigationPreloadState) |
| 87 IPC_MESSAGE_HANDLER(ServiceWorkerMsg_DidSetNavigationPreloadHeader, |
| 88 OnDidSetNavigationPreloadHeader) |
| 87 IPC_MESSAGE_HANDLER(ServiceWorkerMsg_ServiceWorkerRegistrationError, | 89 IPC_MESSAGE_HANDLER(ServiceWorkerMsg_ServiceWorkerRegistrationError, |
| 88 OnRegistrationError) | 90 OnRegistrationError) |
| 89 IPC_MESSAGE_HANDLER(ServiceWorkerMsg_ServiceWorkerUpdateError, | 91 IPC_MESSAGE_HANDLER(ServiceWorkerMsg_ServiceWorkerUpdateError, |
| 90 OnUpdateError) | 92 OnUpdateError) |
| 91 IPC_MESSAGE_HANDLER(ServiceWorkerMsg_ServiceWorkerUnregistrationError, | 93 IPC_MESSAGE_HANDLER(ServiceWorkerMsg_ServiceWorkerUnregistrationError, |
| 92 OnUnregistrationError) | 94 OnUnregistrationError) |
| 93 IPC_MESSAGE_HANDLER(ServiceWorkerMsg_ServiceWorkerGetRegistrationError, | 95 IPC_MESSAGE_HANDLER(ServiceWorkerMsg_ServiceWorkerGetRegistrationError, |
| 94 OnGetRegistrationError) | 96 OnGetRegistrationError) |
| 95 IPC_MESSAGE_HANDLER(ServiceWorkerMsg_ServiceWorkerGetRegistrationsError, | 97 IPC_MESSAGE_HANDLER(ServiceWorkerMsg_ServiceWorkerGetRegistrationsError, |
| 96 OnGetRegistrationsError) | 98 OnGetRegistrationsError) |
| (...skipping 134 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 231 int provider_id, | 233 int provider_id, |
| 232 int64_t registration_id, | 234 int64_t registration_id, |
| 233 std::unique_ptr<WebGetNavigationPreloadStateCallbacks> callbacks) { | 235 std::unique_ptr<WebGetNavigationPreloadStateCallbacks> callbacks) { |
| 234 DCHECK(callbacks); | 236 DCHECK(callbacks); |
| 235 int request_id = | 237 int request_id = |
| 236 get_navigation_preload_state_callbacks_.Add(callbacks.release()); | 238 get_navigation_preload_state_callbacks_.Add(callbacks.release()); |
| 237 thread_safe_sender_->Send(new ServiceWorkerHostMsg_GetNavigationPreloadState( | 239 thread_safe_sender_->Send(new ServiceWorkerHostMsg_GetNavigationPreloadState( |
| 238 CurrentWorkerId(), request_id, provider_id, registration_id)); | 240 CurrentWorkerId(), request_id, provider_id, registration_id)); |
| 239 } | 241 } |
| 240 | 242 |
| 243 void ServiceWorkerDispatcher::SetNavigationPreloadHeader( |
| 244 int provider_id, |
| 245 int64_t registration_id, |
| 246 const std::string& value, |
| 247 std::unique_ptr<WebSetNavigationPreloadHeaderCallbacks> callbacks) { |
| 248 DCHECK(callbacks); |
| 249 int request_id = |
| 250 set_navigation_preload_header_callbacks_.Add(callbacks.release()); |
| 251 thread_safe_sender_->Send(new ServiceWorkerHostMsg_SetNavigationPreloadHeader( |
| 252 CurrentWorkerId(), request_id, provider_id, registration_id, value)); |
| 253 } |
| 254 |
| 241 void ServiceWorkerDispatcher::AddProviderContext( | 255 void ServiceWorkerDispatcher::AddProviderContext( |
| 242 ServiceWorkerProviderContext* provider_context) { | 256 ServiceWorkerProviderContext* provider_context) { |
| 243 DCHECK(provider_context); | 257 DCHECK(provider_context); |
| 244 int provider_id = provider_context->provider_id(); | 258 int provider_id = provider_context->provider_id(); |
| 245 DCHECK(!base::ContainsKey(provider_contexts_, provider_id)); | 259 DCHECK(!base::ContainsKey(provider_contexts_, provider_id)); |
| 246 provider_contexts_[provider_id] = provider_context; | 260 provider_contexts_[provider_id] = provider_context; |
| 247 } | 261 } |
| 248 | 262 |
| 249 void ServiceWorkerDispatcher::RemoveProviderContext( | 263 void ServiceWorkerDispatcher::RemoveProviderContext( |
| 250 ServiceWorkerProviderContext* provider_context) { | 264 ServiceWorkerProviderContext* provider_context) { |
| (...skipping 305 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 556 int request_id) { | 570 int request_id) { |
| 557 WebEnableNavigationPreloadCallbacks* callbacks = | 571 WebEnableNavigationPreloadCallbacks* callbacks = |
| 558 enable_navigation_preload_callbacks_.Lookup(request_id); | 572 enable_navigation_preload_callbacks_.Lookup(request_id); |
| 559 DCHECK(callbacks); | 573 DCHECK(callbacks); |
| 560 if (!callbacks) | 574 if (!callbacks) |
| 561 return; | 575 return; |
| 562 callbacks->onSuccess(); | 576 callbacks->onSuccess(); |
| 563 enable_navigation_preload_callbacks_.Remove(request_id); | 577 enable_navigation_preload_callbacks_.Remove(request_id); |
| 564 } | 578 } |
| 565 | 579 |
| 566 void ServiceWorkerDispatcher::OnDidGetNavigationPreloadState(int thread_id, | 580 void ServiceWorkerDispatcher::OnDidGetNavigationPreloadState( |
| 567 int request_id, | 581 int thread_id, |
| 568 bool enabled) { | 582 int request_id, |
| 583 const NavigationPreloadState& state) { |
| 569 WebGetNavigationPreloadStateCallbacks* callbacks = | 584 WebGetNavigationPreloadStateCallbacks* callbacks = |
| 570 get_navigation_preload_state_callbacks_.Lookup(request_id); | 585 get_navigation_preload_state_callbacks_.Lookup(request_id); |
| 571 DCHECK(callbacks); | 586 DCHECK(callbacks); |
| 572 if (!callbacks) | 587 if (!callbacks) |
| 573 return; | 588 return; |
| 574 // TODO(falken): Implement populating headerValue. | 589 callbacks->onSuccess(blink::WebNavigationPreloadState( |
| 575 callbacks->onSuccess( | 590 state.enabled, blink::WebString::fromUTF8(state.header))); |
| 576 blink::WebNavigationPreloadState(enabled, blink::WebString())); | |
| 577 get_navigation_preload_state_callbacks_.Remove(request_id); | 591 get_navigation_preload_state_callbacks_.Remove(request_id); |
| 578 } | 592 } |
| 579 | 593 |
| 594 void ServiceWorkerDispatcher::OnDidSetNavigationPreloadHeader(int thread_id, |
| 595 int request_id) { |
| 596 WebSetNavigationPreloadHeaderCallbacks* callbacks = |
| 597 set_navigation_preload_header_callbacks_.Lookup(request_id); |
| 598 DCHECK(callbacks); |
| 599 if (!callbacks) |
| 600 return; |
| 601 callbacks->onSuccess(); |
| 602 set_navigation_preload_header_callbacks_.Remove(request_id); |
| 603 } |
| 604 |
| 580 void ServiceWorkerDispatcher::OnRegistrationError( | 605 void ServiceWorkerDispatcher::OnRegistrationError( |
| 581 int thread_id, | 606 int thread_id, |
| 582 int request_id, | 607 int request_id, |
| 583 WebServiceWorkerError::ErrorType error_type, | 608 WebServiceWorkerError::ErrorType error_type, |
| 584 const base::string16& message) { | 609 const base::string16& message) { |
| 585 TRACE_EVENT_ASYNC_STEP_INTO0("ServiceWorker", | 610 TRACE_EVENT_ASYNC_STEP_INTO0("ServiceWorker", |
| 586 "ServiceWorkerDispatcher::RegisterServiceWorker", | 611 "ServiceWorkerDispatcher::RegisterServiceWorker", |
| 587 request_id, | 612 request_id, |
| 588 "OnRegistrationError"); | 613 "OnRegistrationError"); |
| 589 TRACE_EVENT_ASYNC_END0("ServiceWorker", | 614 TRACE_EVENT_ASYNC_END0("ServiceWorker", |
| (...skipping 122 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 712 WebGetNavigationPreloadStateCallbacks* callbacks = | 737 WebGetNavigationPreloadStateCallbacks* callbacks = |
| 713 get_navigation_preload_state_callbacks_.Lookup(request_id); | 738 get_navigation_preload_state_callbacks_.Lookup(request_id); |
| 714 DCHECK(callbacks); | 739 DCHECK(callbacks); |
| 715 if (!callbacks) | 740 if (!callbacks) |
| 716 return; | 741 return; |
| 717 callbacks->onError( | 742 callbacks->onError( |
| 718 WebServiceWorkerError(error_type, blink::WebString::fromUTF8(message))); | 743 WebServiceWorkerError(error_type, blink::WebString::fromUTF8(message))); |
| 719 get_navigation_preload_state_callbacks_.Remove(request_id); | 744 get_navigation_preload_state_callbacks_.Remove(request_id); |
| 720 } | 745 } |
| 721 | 746 |
| 747 void ServiceWorkerDispatcher::OnSetNavigationPreloadHeaderError( |
| 748 int thread_id, |
| 749 int request_id, |
| 750 WebServiceWorkerError::ErrorType error_type, |
| 751 const std::string& message) { |
| 752 WebSetNavigationPreloadHeaderCallbacks* callbacks = |
| 753 set_navigation_preload_header_callbacks_.Lookup(request_id); |
| 754 DCHECK(callbacks); |
| 755 if (!callbacks) |
| 756 return; |
| 757 callbacks->onError( |
| 758 WebServiceWorkerError(error_type, blink::WebString::fromUTF8(message))); |
| 759 set_navigation_preload_header_callbacks_.Remove(request_id); |
| 760 } |
| 761 |
| 722 void ServiceWorkerDispatcher::OnServiceWorkerStateChanged( | 762 void ServiceWorkerDispatcher::OnServiceWorkerStateChanged( |
| 723 int thread_id, | 763 int thread_id, |
| 724 int handle_id, | 764 int handle_id, |
| 725 blink::WebServiceWorkerState state) { | 765 blink::WebServiceWorkerState state) { |
| 726 TRACE_EVENT2("ServiceWorker", | 766 TRACE_EVENT2("ServiceWorker", |
| 727 "ServiceWorkerDispatcher::OnServiceWorkerStateChanged", | 767 "ServiceWorkerDispatcher::OnServiceWorkerStateChanged", |
| 728 "Thread ID", thread_id, | 768 "Thread ID", thread_id, |
| 729 "State", state); | 769 "State", state); |
| 730 WorkerObjectMap::iterator worker = service_workers_.find(handle_id); | 770 WorkerObjectMap::iterator worker = service_workers_.find(handle_id); |
| 731 if (worker != service_workers_.end()) | 771 if (worker != service_workers_.end()) |
| (...skipping 130 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 862 return ServiceWorkerRegistrationHandleReference::Adopt( | 902 return ServiceWorkerRegistrationHandleReference::Adopt( |
| 863 info, thread_safe_sender_.get()); | 903 info, thread_safe_sender_.get()); |
| 864 } | 904 } |
| 865 | 905 |
| 866 std::unique_ptr<ServiceWorkerHandleReference> ServiceWorkerDispatcher::Adopt( | 906 std::unique_ptr<ServiceWorkerHandleReference> ServiceWorkerDispatcher::Adopt( |
| 867 const ServiceWorkerObjectInfo& info) { | 907 const ServiceWorkerObjectInfo& info) { |
| 868 return ServiceWorkerHandleReference::Adopt(info, thread_safe_sender_.get()); | 908 return ServiceWorkerHandleReference::Adopt(info, thread_safe_sender_.get()); |
| 869 } | 909 } |
| 870 | 910 |
| 871 } // namespace content | 911 } // namespace content |
| OLD | NEW |