Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1776)

Unified Diff: content/browser/service_worker/service_worker_dispatcher_host.cc

Issue 246023007: Chromium-side plumbing for ServiceWorker -> Document postMessage (2/3) (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: added browser -> document code Created 6 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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));
}

Powered by Google App Engine
This is Rietveld 408576698