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 7a6c4828bcfe05cac62038930f6545d5198dafe7..6f7568170abf71d0ecebd08b4768148e587b6cdd 100644 |
--- a/content/browser/service_worker/service_worker_dispatcher_host.cc |
+++ b/content/browser/service_worker/service_worker_dispatcher_host.cc |
@@ -676,7 +676,9 @@ void ServiceWorkerDispatcherHost::OnGetRegistrationForReady( |
void ServiceWorkerDispatcherHost::OnPostMessageToWorker( |
int handle_id, |
+ int provider_id, |
const base::string16& message, |
+ const url::Origin& source_origin, |
const std::vector<TransferredMessagePort>& sent_message_ports) { |
TRACE_EVENT0("ServiceWorker", |
"ServiceWorkerDispatcherHost::OnPostMessageToWorker"); |
@@ -689,8 +691,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, source_origin, sent_message_ports, |
base::Bind(&ServiceWorkerUtils::NoOpStatusCallback)); |
} |