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 dece0b82aacb0d213b6e8f2b09e9ce9271583c1d..4a5e960e2055641782ad3961acd45f38d944d250 100644 |
--- a/content/browser/service_worker/service_worker_dispatcher_host.cc |
+++ b/content/browser/service_worker/service_worker_dispatcher_host.cc |
@@ -100,8 +100,8 @@ bool ServiceWorkerDispatcherHost::OnMessageReceived( |
OnProviderDestroyed) |
IPC_MESSAGE_HANDLER(ServiceWorkerHostMsg_SetVersionId, |
OnSetHostedVersionId) |
- IPC_MESSAGE_HANDLER(ServiceWorkerHostMsg_PostMessage, |
- OnPostMessage) |
+ IPC_MESSAGE_HANDLER(ServiceWorkerHostMsg_PostMessageToWorker, |
+ OnPostMessageToWorker) |
IPC_MESSAGE_HANDLER(EmbeddedWorkerHostMsg_WorkerStarted, |
OnWorkerStarted) |
IPC_MESSAGE_HANDLER(EmbeddedWorkerHostMsg_WorkerStopped, |
@@ -143,6 +143,22 @@ void ServiceWorkerDispatcherHost::RegisterServiceWorkerHandle( |
handles_.AddWithID(handle.release(), handle_id); |
} |
+void ServiceWorkerDispatcherHost::UpdateMessagePorts( |
+ const std::vector<int>& message_port_ids, |
+ std::vector<int>* new_routing_ids) { |
+ DCHECK(new_routing_ids); |
+ new_routing_ids->clear(); |
+ new_routing_ids->resize(message_port_ids.size()); |
+ |
+ for (size_t i = 0; i < message_port_ids.size(); ++i) { |
marja
2014/05/06 16:34:30
This looks very similar to what WebContentsImpl::R
kinuko
2014/05/07 05:56:21
Done.
|
+ (*new_routing_ids)[i] = message_port_message_filter_->GetNextRoutingID(); |
+ MessagePortService::GetInstance()->UpdateMessagePort( |
+ message_port_ids[i], |
+ message_port_message_filter_, |
+ (*new_routing_ids)[i]); |
+ } |
+} |
+ |
void ServiceWorkerDispatcherHost::OnRegisterServiceWorker( |
int thread_id, |
int request_id, |
@@ -220,30 +236,26 @@ void ServiceWorkerDispatcherHost::OnUnregisterServiceWorker( |
request_id)); |
} |
-void ServiceWorkerDispatcherHost::OnPostMessage( |
+void ServiceWorkerDispatcherHost::OnPostMessageToWorker( |
int handle_id, |
const base::string16& message, |
const std::vector<int>& sent_message_port_ids) { |
if (!context_ || !ServiceWorkerUtils::IsFeatureEnabled()) |
return; |
- std::vector<int> new_routing_ids(sent_message_port_ids.size()); |
- for (size_t i = 0; i < sent_message_port_ids.size(); ++i) { |
- new_routing_ids[i] = message_port_message_filter_->GetNextRoutingID(); |
- MessagePortService::GetInstance()->UpdateMessagePort( |
- sent_message_port_ids[i], |
- message_port_message_filter_, |
- new_routing_ids[i]); |
- } |
- |
ServiceWorkerHandle* handle = handles_.Lookup(handle_id); |
if (!handle) { |
BadMessageReceived(); |
return; |
} |
+ std::vector<int> new_routing_ids; |
+ UpdateMessagePorts(sent_message_port_ids, &new_routing_ids); |
+ |
handle->version()->SendMessage( |
- ServiceWorkerMsg_Message(message, sent_message_port_ids, new_routing_ids), |
+ ServiceWorkerMsg_MessageToWorker(message, |
+ sent_message_port_ids, |
+ new_routing_ids), |
base::Bind(&ServiceWorkerUtils::NoOpStatusCallback)); |
} |