| 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 65189d19e1d6e50a95118a1ff7be51dca9ef65b9..747319e3cad8d7119ef6719216cfdf5e3360f16c 100644
|
| --- a/content/browser/service_worker/service_worker_version.cc
|
| +++ b/content/browser/service_worker/service_worker_version.cc
|
| @@ -153,12 +153,12 @@ void RunErrorFetchCallback(const ServiceWorkerVersion::FetchCallback& callback,
|
| }
|
|
|
| void RunErrorMessageCallback(
|
| - const std::vector<int>& sent_message_port_ids,
|
| + const std::vector<TransferredMessagePort>& sent_message_ports,
|
| const ServiceWorkerVersion::StatusCallback& callback,
|
| ServiceWorkerStatusCode status) {
|
| // Transfering the message ports failed, so destroy the ports.
|
| - for (int message_port_id : sent_message_port_ids) {
|
| - MessagePortService::GetInstance()->ClosePort(message_port_id);
|
| + for (const TransferredMessagePort& port : sent_message_ports) {
|
| + MessagePortService::GetInstance()->ClosePort(port.id);
|
| }
|
| callback.Run(status);
|
| }
|
| @@ -444,26 +444,26 @@ void ServiceWorkerVersion::SendMessage(
|
|
|
| void ServiceWorkerVersion::DispatchMessageEvent(
|
| const base::string16& message,
|
| - const std::vector<int>& sent_message_port_ids,
|
| + const std::vector<TransferredMessagePort>& sent_message_ports,
|
| const StatusCallback& callback) {
|
| - for (int message_port_id : sent_message_port_ids) {
|
| - MessagePortService::GetInstance()->HoldMessages(message_port_id);
|
| + for (const TransferredMessagePort& port : sent_message_ports) {
|
| + MessagePortService::GetInstance()->HoldMessages(port.id);
|
| }
|
|
|
| - DispatchMessageEventInternal(message, sent_message_port_ids, callback);
|
| + DispatchMessageEventInternal(message, sent_message_ports, callback);
|
| }
|
|
|
| void ServiceWorkerVersion::DispatchMessageEventInternal(
|
| const base::string16& message,
|
| - const std::vector<int>& sent_message_port_ids,
|
| + const std::vector<TransferredMessagePort>& sent_message_ports,
|
| const StatusCallback& callback) {
|
| if (running_status() != RUNNING) {
|
| // Schedule calling this method after starting the worker.
|
| StartWorker(base::Bind(
|
| &RunTaskAfterStartWorker, weak_factory_.GetWeakPtr(),
|
| - base::Bind(&RunErrorMessageCallback, sent_message_port_ids, callback),
|
| + base::Bind(&RunErrorMessageCallback, sent_message_ports, callback),
|
| base::Bind(&self::DispatchMessageEventInternal,
|
| - weak_factory_.GetWeakPtr(), message, sent_message_port_ids,
|
| + weak_factory_.GetWeakPtr(), message, sent_message_ports,
|
| callback)));
|
| return;
|
| }
|
| @@ -471,11 +471,10 @@ void ServiceWorkerVersion::DispatchMessageEventInternal(
|
| MessagePortMessageFilter* filter =
|
| embedded_worker_->message_port_message_filter();
|
| std::vector<int> new_routing_ids;
|
| - filter->UpdateMessagePortsWithNewRoutes(sent_message_port_ids,
|
| - &new_routing_ids);
|
| + filter->UpdateMessagePortsWithNewRoutes(sent_message_ports, &new_routing_ids);
|
| ServiceWorkerStatusCode status =
|
| embedded_worker_->SendMessage(ServiceWorkerMsg_MessageToWorker(
|
| - message, sent_message_port_ids, new_routing_ids));
|
| + message, sent_message_ports, new_routing_ids));
|
| RunSoon(base::Bind(callback, status));
|
| }
|
|
|
| @@ -698,7 +697,7 @@ void ServiceWorkerVersion::DispatchCrossOriginConnectEvent(
|
| void ServiceWorkerVersion::DispatchCrossOriginMessageEvent(
|
| const NavigatorConnectClient& client,
|
| const base::string16& message,
|
| - const std::vector<int>& sent_message_port_ids,
|
| + const std::vector<TransferredMessagePort>& sent_message_ports,
|
| const StatusCallback& callback) {
|
| // Unlike in the case of DispatchMessageEvent, here the caller is assumed to
|
| // have already put all the sent message ports on hold. So no need to do that
|
| @@ -707,23 +706,24 @@ void ServiceWorkerVersion::DispatchCrossOriginMessageEvent(
|
| if (running_status() != RUNNING) {
|
| // Schedule calling this method after starting the worker.
|
| StartWorker(base::Bind(
|
| - &RunTaskAfterStartWorker, weak_factory_.GetWeakPtr(), callback,
|
| + &RunTaskAfterStartWorker, weak_factory_.GetWeakPtr(),
|
| + base::Bind(&RunErrorMessageCallback, sent_message_ports, callback),
|
| base::Bind(&self::DispatchCrossOriginMessageEvent,
|
| weak_factory_.GetWeakPtr(), client, message,
|
| - sent_message_port_ids, callback)));
|
| + sent_message_ports, callback)));
|
| return;
|
| }
|
|
|
| MessagePortMessageFilter* filter =
|
| embedded_worker_->message_port_message_filter();
|
| std::vector<int> new_routing_ids;
|
| - filter->UpdateMessagePortsWithNewRoutes(sent_message_port_ids,
|
| - &new_routing_ids);
|
| + filter->UpdateMessagePortsWithNewRoutes(sent_message_ports, &new_routing_ids);
|
| ServiceWorkerStatusCode status =
|
| embedded_worker_->SendMessage(ServiceWorkerMsg_CrossOriginMessageToWorker(
|
| - client, message, sent_message_port_ids, new_routing_ids));
|
| + client, message, sent_message_ports, new_routing_ids));
|
| RunSoon(base::Bind(callback, status));
|
| }
|
| +
|
| void ServiceWorkerVersion::AddControllee(
|
| ServiceWorkerProviderHost* provider_host) {
|
| DCHECK(!ContainsKey(controllee_map_, provider_host));
|
| @@ -1285,7 +1285,7 @@ void ServiceWorkerVersion::OnClearCachedMetadataFinished(int64 callback_id,
|
| void ServiceWorkerVersion::OnPostMessageToDocument(
|
| int client_id,
|
| const base::string16& message,
|
| - const std::vector<int>& sent_message_port_ids) {
|
| + const std::vector<TransferredMessagePort>& sent_message_ports) {
|
| TRACE_EVENT1("ServiceWorker",
|
| "ServiceWorkerVersion::OnPostMessageToDocument",
|
| "Client id", client_id);
|
| @@ -1295,7 +1295,7 @@ void ServiceWorkerVersion::OnPostMessageToDocument(
|
| // The client may already have been closed, just ignore.
|
| return;
|
| }
|
| - provider_host->PostMessage(message, sent_message_port_ids);
|
| + provider_host->PostMessage(message, sent_message_ports);
|
| }
|
|
|
| void ServiceWorkerVersion::OnFocusClient(int request_id, int client_id) {
|
|
|