| Index: content/child/service_worker/service_worker_dispatcher.cc
|
| diff --git a/content/child/service_worker/service_worker_dispatcher.cc b/content/child/service_worker/service_worker_dispatcher.cc
|
| index 032dfa2921d3ae5f4d6e83c25e0ee6bc49733a5d..9bc8c7e8a47591c67a057d6576e9e6b4914a3c4f 100644
|
| --- a/content/child/service_worker/service_worker_dispatcher.cc
|
| +++ b/content/child/service_worker/service_worker_dispatcher.cc
|
| @@ -58,6 +58,8 @@ void ServiceWorkerDispatcher::OnMessageReceived(const IPC::Message& msg) {
|
| OnUnregistered)
|
| IPC_MESSAGE_HANDLER(ServiceWorkerMsg_ServiceWorkerRegistrationError,
|
| OnRegistrationError)
|
| + IPC_MESSAGE_HANDLER(ServiceWorkerMsg_ServiceWorkerUnregistrationError,
|
| + OnUnregistrationError)
|
| IPC_MESSAGE_HANDLER(ServiceWorkerMsg_ServiceWorkerStateChanged,
|
| OnServiceWorkerStateChanged)
|
| IPC_MESSAGE_HANDLER(ServiceWorkerMsg_SetVersionAttributes,
|
| @@ -94,7 +96,7 @@ void ServiceWorkerDispatcher::RegisterServiceWorker(
|
| return;
|
| }
|
|
|
| - int request_id = pending_callbacks_.Add(callbacks);
|
| + int request_id = pending_registration_callbacks_.Add(callbacks);
|
| thread_safe_sender_->Send(new ServiceWorkerHostMsg_RegisterServiceWorker(
|
| CurrentWorkerId(), request_id, provider_id, pattern, script_url));
|
| }
|
| @@ -102,11 +104,11 @@ void ServiceWorkerDispatcher::RegisterServiceWorker(
|
| void ServiceWorkerDispatcher::UnregisterServiceWorker(
|
| int provider_id,
|
| const GURL& pattern,
|
| - WebServiceWorkerRegistrationCallbacks* callbacks) {
|
| + WebServiceWorkerUnregistrationCallbacks* callbacks) {
|
| DCHECK(callbacks);
|
|
|
| if (pattern.possibly_invalid_spec().size() > GetMaxURLChars()) {
|
| - scoped_ptr<WebServiceWorkerRegistrationCallbacks>
|
| + scoped_ptr<WebServiceWorkerUnregistrationCallbacks>
|
| owned_callbacks(callbacks);
|
| scoped_ptr<WebServiceWorkerError> error(new WebServiceWorkerError(
|
| WebServiceWorkerError::ErrorTypeSecurity, "URL too long"));
|
| @@ -114,7 +116,7 @@ void ServiceWorkerDispatcher::UnregisterServiceWorker(
|
| return;
|
| }
|
|
|
| - int request_id = pending_callbacks_.Add(callbacks);
|
| + int request_id = pending_unregistration_callbacks_.Add(callbacks);
|
| thread_safe_sender_->Send(new ServiceWorkerHostMsg_UnregisterServiceWorker(
|
| CurrentWorkerId(), request_id, provider_id, pattern));
|
| }
|
| @@ -243,7 +245,7 @@ void ServiceWorkerDispatcher::OnRegistered(
|
| const ServiceWorkerRegistrationObjectInfo& info,
|
| const ServiceWorkerVersionAttributes& attrs) {
|
| WebServiceWorkerRegistrationCallbacks* callbacks =
|
| - pending_callbacks_.Lookup(request_id);
|
| + pending_registration_callbacks_.Lookup(request_id);
|
| DCHECK(callbacks);
|
| if (!callbacks)
|
| return;
|
| @@ -255,20 +257,24 @@ void ServiceWorkerDispatcher::OnRegistered(
|
| registration->SetActive(GetServiceWorker(attrs.active, true));
|
|
|
| callbacks->onSuccess(registration);
|
| - pending_callbacks_.Remove(request_id);
|
| + pending_registration_callbacks_.Remove(request_id);
|
| }
|
|
|
| void ServiceWorkerDispatcher::OnUnregistered(
|
| int thread_id,
|
| int request_id) {
|
| - WebServiceWorkerRegistrationCallbacks* callbacks =
|
| - pending_callbacks_.Lookup(request_id);
|
| + WebServiceWorkerUnregistrationCallbacks* callbacks =
|
| + pending_unregistration_callbacks_.Lookup(request_id);
|
| DCHECK(callbacks);
|
| if (!callbacks)
|
| return;
|
| -
|
| +#ifdef DISABLE_SERVICEWORKER_UNREGISTER_RESOLVE_TO_BOOLEAN
|
| callbacks->onSuccess(NULL);
|
| - pending_callbacks_.Remove(request_id);
|
| +#else
|
| + bool is_success = true;
|
| + callbacks->onSuccess(&is_success);
|
| +#endif
|
| + pending_unregistration_callbacks_.Remove(request_id);
|
| }
|
|
|
| void ServiceWorkerDispatcher::OnRegistrationError(
|
| @@ -277,7 +283,24 @@ void ServiceWorkerDispatcher::OnRegistrationError(
|
| WebServiceWorkerError::ErrorType error_type,
|
| const base::string16& message) {
|
| WebServiceWorkerRegistrationCallbacks* callbacks =
|
| - pending_callbacks_.Lookup(request_id);
|
| + pending_registration_callbacks_.Lookup(request_id);
|
| + DCHECK(callbacks);
|
| + if (!callbacks)
|
| + return;
|
| +
|
| + scoped_ptr<WebServiceWorkerError> error(
|
| + new WebServiceWorkerError(error_type, message));
|
| + callbacks->onError(error.release());
|
| + pending_registration_callbacks_.Remove(request_id);
|
| +}
|
| +
|
| +void ServiceWorkerDispatcher::OnUnregistrationError(
|
| + int thread_id,
|
| + int request_id,
|
| + WebServiceWorkerError::ErrorType error_type,
|
| + const base::string16& message) {
|
| + WebServiceWorkerUnregistrationCallbacks* callbacks =
|
| + pending_unregistration_callbacks_.Lookup(request_id);
|
| DCHECK(callbacks);
|
| if (!callbacks)
|
| return;
|
| @@ -285,7 +308,7 @@ void ServiceWorkerDispatcher::OnRegistrationError(
|
| scoped_ptr<WebServiceWorkerError> error(
|
| new WebServiceWorkerError(error_type, message));
|
| callbacks->onError(error.release());
|
| - pending_callbacks_.Remove(request_id);
|
| + pending_unregistration_callbacks_.Remove(request_id);
|
| }
|
|
|
| void ServiceWorkerDispatcher::OnServiceWorkerStateChanged(
|
|
|