| 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 e1372c450a45faef8d728b6ec50fd6e171c5296a..dfbcfc18f6c06fb4e2e20fd6796f1fa9e81b3b64 100644
|
| --- a/content/child/service_worker/service_worker_dispatcher.cc
|
| +++ b/content/child/service_worker/service_worker_dispatcher.cc
|
| @@ -10,7 +10,6 @@
|
| #include "base/trace_event/trace_event.h"
|
| #include "content/child/child_thread_impl.h"
|
| #include "content/child/service_worker/service_worker_handle_reference.h"
|
| -#include "content/child/service_worker/service_worker_message_sender.h"
|
| #include "content/child/service_worker/service_worker_provider_context.h"
|
| #include "content/child/service_worker/service_worker_registration_handle_reference.h"
|
| #include "content/child/service_worker/web_service_worker_impl.h"
|
| @@ -46,8 +45,8 @@ int CurrentWorkerId() {
|
| } // namespace
|
|
|
| ServiceWorkerDispatcher::ServiceWorkerDispatcher(
|
| - ServiceWorkerMessageSender* sender)
|
| - : sender_(sender) {
|
| + ThreadSafeSender* thread_safe_sender)
|
| + : thread_safe_sender_(thread_safe_sender) {
|
| g_dispatcher_tls.Pointer()->Set(this);
|
| }
|
|
|
| @@ -92,6 +91,10 @@ void ServiceWorkerDispatcher::OnMessageReceived(const IPC::Message& msg) {
|
| DCHECK(handled) << "Unhandled message:" << msg.type();
|
| }
|
|
|
| +bool ServiceWorkerDispatcher::Send(IPC::Message* msg) {
|
| + return thread_safe_sender_->Send(msg);
|
| +}
|
| +
|
| void ServiceWorkerDispatcher::RegisterServiceWorker(
|
| int provider_id,
|
| const GURL& pattern,
|
| @@ -118,7 +121,7 @@ void ServiceWorkerDispatcher::RegisterServiceWorker(
|
| request_id,
|
| "Scope", pattern.spec(),
|
| "Script URL", script_url.spec());
|
| - sender_->Send(new ServiceWorkerHostMsg_RegisterServiceWorker(
|
| + thread_safe_sender_->Send(new ServiceWorkerHostMsg_RegisterServiceWorker(
|
| CurrentWorkerId(), request_id, provider_id, pattern, script_url));
|
| }
|
|
|
| @@ -145,7 +148,7 @@ void ServiceWorkerDispatcher::UnregisterServiceWorker(
|
| "ServiceWorkerDispatcher::UnregisterServiceWorker",
|
| request_id,
|
| "Scope", pattern.spec());
|
| - sender_->Send(new ServiceWorkerHostMsg_UnregisterServiceWorker(
|
| + thread_safe_sender_->Send(new ServiceWorkerHostMsg_UnregisterServiceWorker(
|
| CurrentWorkerId(), request_id, provider_id, pattern));
|
| }
|
|
|
| @@ -172,7 +175,7 @@ void ServiceWorkerDispatcher::GetRegistration(
|
| "ServiceWorkerDispatcher::GetRegistration",
|
| request_id,
|
| "Document URL", document_url.spec());
|
| - sender_->Send(new ServiceWorkerHostMsg_GetRegistration(
|
| + thread_safe_sender_->Send(new ServiceWorkerHostMsg_GetRegistration(
|
| CurrentWorkerId(), request_id, provider_id, document_url));
|
| }
|
|
|
| @@ -183,7 +186,7 @@ void ServiceWorkerDispatcher::GetRegistrationForReady(
|
| TRACE_EVENT_ASYNC_BEGIN0("ServiceWorker",
|
| "ServiceWorkerDispatcher::GetRegistrationForReady",
|
| request_id);
|
| - sender_->Send(new ServiceWorkerHostMsg_GetRegistrationForReady(
|
| + thread_safe_sender_->Send(new ServiceWorkerHostMsg_GetRegistrationForReady(
|
| CurrentWorkerId(), request_id, provider_id));
|
| }
|
|
|
| @@ -222,7 +225,7 @@ void ServiceWorkerDispatcher::RemoveProviderClient(int provider_id) {
|
|
|
| ServiceWorkerDispatcher*
|
| ServiceWorkerDispatcher::GetOrCreateThreadSpecificInstance(
|
| - ServiceWorkerMessageSender* sender) {
|
| + ThreadSafeSender* thread_safe_sender) {
|
| if (g_dispatcher_tls.Pointer()->Get() == kHasBeenDeleted) {
|
| NOTREACHED() << "Re-instantiating TLS ServiceWorkerDispatcher.";
|
| g_dispatcher_tls.Pointer()->Set(NULL);
|
| @@ -231,7 +234,7 @@ ServiceWorkerDispatcher::GetOrCreateThreadSpecificInstance(
|
| return g_dispatcher_tls.Pointer()->Get();
|
|
|
| ServiceWorkerDispatcher* dispatcher =
|
| - new ServiceWorkerDispatcher(sender);
|
| + new ServiceWorkerDispatcher(thread_safe_sender);
|
| if (WorkerTaskRunner::Instance()->CurrentWorkerId())
|
| WorkerTaskRunner::Instance()->AddStopObserver(dispatcher);
|
| return dispatcher;
|
| @@ -260,17 +263,18 @@ WebServiceWorkerImpl* ServiceWorkerDispatcher::GetServiceWorker(
|
| if (adopt_handle) {
|
| // We are instructed to adopt a handle but we already have one, so
|
| // adopt and destroy a handle ref.
|
| - ServiceWorkerHandleReference::Adopt(info, sender_.get());
|
| + ServiceWorkerHandleReference::Adopt(info, thread_safe_sender_.get());
|
| }
|
| return existing_worker->second;
|
| }
|
|
|
| scoped_ptr<ServiceWorkerHandleReference> handle_ref =
|
| adopt_handle
|
| - ? ServiceWorkerHandleReference::Adopt(info, sender_.get())
|
| - : ServiceWorkerHandleReference::Create(info, sender_.get());
|
| + ? ServiceWorkerHandleReference::Adopt(info, thread_safe_sender_.get())
|
| + : ServiceWorkerHandleReference::Create(info,
|
| + thread_safe_sender_.get());
|
| // WebServiceWorkerImpl constructor calls AddServiceWorker.
|
| - return new WebServiceWorkerImpl(handle_ref.Pass(), sender_.get());
|
| + return new WebServiceWorkerImpl(handle_ref.Pass(), thread_safe_sender_.get());
|
| }
|
|
|
| WebServiceWorkerRegistrationImpl*
|
| @@ -283,9 +287,9 @@ ServiceWorkerDispatcher::CreateServiceWorkerRegistration(
|
|
|
| scoped_ptr<ServiceWorkerRegistrationHandleReference> handle_ref =
|
| adopt_handle ? ServiceWorkerRegistrationHandleReference::Adopt(
|
| - info, sender_.get())
|
| + info, thread_safe_sender_.get())
|
| : ServiceWorkerRegistrationHandleReference::Create(
|
| - info, sender_.get());
|
| + info, thread_safe_sender_.get());
|
|
|
| // WebServiceWorkerRegistrationImpl constructor calls
|
| // AddServiceWorkerRegistration.
|
| @@ -669,10 +673,14 @@ ServiceWorkerDispatcher::FindOrCreateRegistration(
|
| const ServiceWorkerVersionAttributes& attrs) {
|
| RegistrationObjectMap::iterator found = registrations_.find(info.handle_id);
|
| if (found != registrations_.end()) {
|
| - ServiceWorkerRegistrationHandleReference::Adopt(info, sender_.get());
|
| - ServiceWorkerHandleReference::Adopt(attrs.installing, sender_.get());
|
| - ServiceWorkerHandleReference::Adopt(attrs.waiting, sender_.get());
|
| - ServiceWorkerHandleReference::Adopt(attrs.active, sender_.get());
|
| + ServiceWorkerRegistrationHandleReference::Adopt(info,
|
| + thread_safe_sender_.get());
|
| + ServiceWorkerHandleReference::Adopt(attrs.installing,
|
| + thread_safe_sender_.get());
|
| + ServiceWorkerHandleReference::Adopt(attrs.waiting,
|
| + thread_safe_sender_.get());
|
| + ServiceWorkerHandleReference::Adopt(attrs.active,
|
| + thread_safe_sender_.get());
|
| return found->second;
|
| }
|
|
|
|
|