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 40a32208b92ca74f625490a13087c16393bab23a..85d817b87ea01836deee002fd6121ba142034ff3 100644 |
--- a/content/browser/service_worker/service_worker_dispatcher_host.cc |
+++ b/content/browser/service_worker/service_worker_dispatcher_host.cc |
@@ -693,6 +693,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", |
@@ -706,8 +707,15 @@ void ServiceWorkerDispatcherHost::OnPostMessageToWorker( |
return; |
} |
+ ServiceWorkerProviderHost* sender_provider_host = |
+ GetContext()->GetProviderHost(render_process_id_, provider_id); |
+ if (!sender_provider_host) { |
+ bad_message::ReceivedBadMessage(this, bad_message::SWDH_POST_MESSAGE); |
+ return; |
+ } |
+ |
handle->version()->DispatchExtendableMessageEvent( |
- message, sent_message_ports, |
+ sender_provider_host, message, sent_message_ports, |
base::Bind(&ServiceWorkerUtils::NoOpStatusCallback)); |
} |