Index: content/browser/service_worker/service_worker_dispatcher_host.cc |
diff --git a/content/browser/service_worker/service_worker_dispatcher_host.cc b/content/browser/service_worker/service_worker_dispatcher_host.cc |
index fc102749e40f46541e6d97761823605f534649ea..d4bd580fc43dfae00d496e34589e7c299836d24b 100644 |
--- a/content/browser/service_worker/service_worker_dispatcher_host.cc |
+++ b/content/browser/service_worker/service_worker_dispatcher_host.cc |
@@ -678,6 +678,7 @@ void ServiceWorkerDispatcherHost::OnGetRegistrationForReady( |
void ServiceWorkerDispatcherHost::OnPostMessageToWorker( |
int handle_id, |
+ int provider_id, |
const base::string16& message, |
const std::vector<TransferredMessagePort>& sent_message_ports) { |
TRACE_EVENT0("ServiceWorker", |
@@ -690,9 +691,14 @@ void ServiceWorkerDispatcherHost::OnPostMessageToWorker( |
bad_message::ReceivedBadMessage(this, bad_message::SWDH_POST_MESSAGE); |
return; |
} |
- |
+ ServiceWorkerProviderHost* provider_host = |
+ GetContext()->GetProviderHost(render_process_id_, provider_id); |
+ if (!provider_host) { |
+ bad_message::ReceivedBadMessage(this, bad_message::SWDH_POST_MESSAGE); |
+ return; |
+ } |
handle->version()->DispatchMessageEvent( |
- message, sent_message_ports, |
+ provider_host, message, sent_message_ports, |
base::Bind(&ServiceWorkerUtils::NoOpStatusCallback)); |
} |
@@ -841,8 +847,8 @@ void ServiceWorkerDispatcherHost::RegistrationComplete( |
GetRegistrationObjectInfoAndVersionAttributes( |
provider_host->AsWeakPtr(), registration, &info, &attrs); |
- Send(new ServiceWorkerMsg_ServiceWorkerRegistered( |
- thread_id, request_id, info, attrs)); |
+ Send(new ServiceWorkerMsg_ServiceWorkerRegistered(thread_id, request_id, |
+ provider_id, info, attrs)); |
TRACE_EVENT_ASYNC_END1("ServiceWorker", |
"ServiceWorkerDispatcherHost::RegisterServiceWorker", |
request_id, |
@@ -1097,8 +1103,8 @@ void ServiceWorkerDispatcherHost::GetRegistrationComplete( |
} |
} |
- Send(new ServiceWorkerMsg_DidGetRegistration( |
- thread_id, request_id, info, attrs)); |
+ Send(new ServiceWorkerMsg_DidGetRegistration(thread_id, request_id, |
+ provider_id, info, attrs)); |
} |
void ServiceWorkerDispatcherHost::GetRegistrationsComplete( |
@@ -1134,8 +1140,8 @@ void ServiceWorkerDispatcherHost::GetRegistrationsComplete( |
} |
} |
- Send(new ServiceWorkerMsg_DidGetRegistrations(thread_id, request_id, |
- object_infos, version_attrs)); |
+ Send(new ServiceWorkerMsg_DidGetRegistrations( |
+ thread_id, request_id, provider_id, object_infos, version_attrs)); |
} |
void ServiceWorkerDispatcherHost::GetRegistrationForReadyComplete( |
@@ -1159,7 +1165,7 @@ void ServiceWorkerDispatcherHost::GetRegistrationForReadyComplete( |
GetRegistrationObjectInfoAndVersionAttributes( |
provider_host, registration, &info, &attrs); |
Send(new ServiceWorkerMsg_DidGetRegistrationForReady( |
- thread_id, request_id, info, attrs)); |
+ thread_id, request_id, provider_host->provider_id(), info, attrs)); |
} |
void ServiceWorkerDispatcherHost::SendRegistrationError( |