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

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

Issue 1632113004: ServiceWorker: Add initial implementation of ExtendableMessageEvent behind a flag (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: rebase Created 4 years, 11 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_version.cc
diff --git a/content/browser/service_worker/service_worker_version.cc b/content/browser/service_worker/service_worker_version.cc
index ac715540893d8faa1012dba205e30c1e5403d2e5..a2ac3f2d4d4d36fa88d6edf4d290e5090ed58e92 100644
--- a/content/browser/service_worker/service_worker_version.cc
+++ b/content/browser/service_worker/service_worker_version.cc
@@ -541,6 +541,20 @@ void ServiceWorkerVersion::RunAfterStartWorker(
error_callback, task));
}
+void ServiceWorkerVersion::DispatchExtendableMessageEvent(
+ const base::string16& message,
+ const std::vector<TransferredMessagePort>& sent_message_ports,
+ const StatusCallback& callback) {
+ for (const TransferredMessagePort& port : sent_message_ports)
+ MessagePortService::GetInstance()->HoldMessages(port.id);
+ RunAfterStartWorker(
+ base::Bind(
+ &ServiceWorkerVersion::DispatchExtendableMessageEventAfterStartWorker,
+ weak_factory_.GetWeakPtr(), message, sent_message_ports,
+ base::Bind(&RunErrorMessageCallback, sent_message_ports, callback)),
+ callback);
nhiroki 2016/02/02 05:53:38 The second argument of the RunAfterStartWorker sho
+}
+
void ServiceWorkerVersion::DispatchMessageEvent(
const base::string16& message,
const std::vector<TransferredMessagePort>& sent_message_ports,
@@ -953,6 +967,24 @@ void ServiceWorkerVersion::OnStartSentAndScriptEvaluated(
}
}
+void ServiceWorkerVersion::DispatchExtendableMessageEventAfterStartWorker(
+ const base::string16& message,
+ const std::vector<TransferredMessagePort>& sent_message_ports,
+ const StatusCallback& callback) {
+ int request_id =
+ StartRequest(ServiceWorkerMetrics::EventType::MESSAGE, callback);
+
+ MessagePortMessageFilter* filter =
+ embedded_worker_->message_port_message_filter();
+ std::vector<int> new_routing_ids;
+ filter->UpdateMessagePortsWithNewRoutes(sent_message_ports, &new_routing_ids);
+
+ DispatchSimpleEvent<ServiceWorkerHostMsg_ExtendableMessageEventFinished>(
+ request_id,
+ ServiceWorkerMsg_ExtendableMessageEvent(
+ request_id, message, sent_message_ports, new_routing_ids));
+}
+
void ServiceWorkerVersion::OnGetClients(
int request_id,
const ServiceWorkerClientQueryOptions& options) {

Powered by Google App Engine
This is Rietveld 408576698