Index: content/browser/service_worker/service_worker_provider_host.cc |
diff --git a/content/browser/service_worker/service_worker_provider_host.cc b/content/browser/service_worker/service_worker_provider_host.cc |
index a2f3cd3264d9d0c9e9050d99d02993115ecdc279..2da7d3e66571aa1969e915ddc4c91dcec7d9b8b6 100644 |
--- a/content/browser/service_worker/service_worker_provider_host.cc |
+++ b/content/browser/service_worker/service_worker_provider_host.cc |
@@ -5,6 +5,7 @@ |
#include "content/browser/service_worker/service_worker_provider_host.h" |
#include "base/stl_util.h" |
+#include "content/browser/message_port_message_filter.h" |
#include "content/browser/service_worker/service_worker_context_core.h" |
#include "content/browser/service_worker/service_worker_context_request_handler.h" |
#include "content/browser/service_worker/service_worker_controllee_request_handler.h" |
@@ -118,4 +119,23 @@ ServiceWorkerProviderHost::CreateRequestHandler( |
return scoped_ptr<ServiceWorkerRequestHandler>(); |
} |
+void ServiceWorkerProviderHost::PostMessage( |
+ const base::string16& message, |
+ const std::vector<int>& sent_message_port_ids) { |
+ if (!dispatcher_host_) |
+ return; // Could be NULL in some tests. |
+ |
+ std::vector<int> new_routing_ids; |
+ dispatcher_host_->message_port_message_filter()-> |
+ UpdateMessagePortsWithNewRoutes(sent_message_port_ids, |
+ &new_routing_ids); |
+ |
+ dispatcher_host_->Send( |
+ new ServiceWorkerMsg_MessageToDocument( |
+ kDocumentMainThreadId, provider_id(), |
+ message, |
+ sent_message_port_ids, |
+ new_routing_ids)); |
+} |
+ |
} // namespace content |