Index: content/renderer/service_worker/service_worker_context_client.cc |
diff --git a/content/renderer/service_worker/service_worker_context_client.cc b/content/renderer/service_worker/service_worker_context_client.cc |
index b07de5d43b1aee04581ad908938827603fc102c3..10fac92020f80e0a66c4cc9cdc998e82b380d7b8 100644 |
--- a/content/renderer/service_worker/service_worker_context_client.cc |
+++ b/content/renderer/service_worker/service_worker_context_client.cc |
@@ -33,7 +33,6 @@ |
#include "content/child/web_url_loader_impl.h" |
#include "content/child/webmessageportchannel_impl.h" |
#include "content/common/devtools_messages.h" |
-#include "content/common/message_port_messages.h" |
#include "content/common/service_worker/embedded_worker_messages.h" |
#include "content/common/service_worker/service_worker_event_dispatcher.mojom.h" |
#include "content/common/service_worker/service_worker_messages.h" |
@@ -132,10 +131,10 @@ void SendPostMessageToClientOnMainThread( |
int routing_id, |
const std::string& uuid, |
const base::string16& message, |
- std::unique_ptr<blink::WebMessagePortChannelArray> channels) { |
+ blink::WebMessagePortChannelArray channels) { |
sender->Send(new ServiceWorkerHostMsg_PostMessageToClient( |
routing_id, uuid, message, |
- WebMessagePortChannelImpl::ExtractMessagePortIDs(std::move(channels)))); |
+ WebMessagePortChannelImpl::ExtractMessagePorts(std::move(channels)))); |
} |
blink::WebURLRequest::FetchRequestMode GetBlinkFetchRequestMode( |
@@ -796,17 +795,18 @@ ServiceWorkerContextClient::createServiceWorkerProvider() { |
void ServiceWorkerContextClient::postMessageToClient( |
const blink::WebString& uuid, |
const blink::WebString& message, |
- blink::WebMessagePortChannelArray* channels) { |
+ blink::WebMessagePortChannelArray channels) { |
// This may send channels for MessagePorts, and all internal book-keeping |
// messages for MessagePort (e.g. QueueMessages) are sent from main thread |
// (with thread hopping), so we need to do the same thread hopping here not |
// to overtake those messages. |
- std::unique_ptr<blink::WebMessagePortChannelArray> channel_array(channels); |
+ // TODO(darin): The above comment no longer makes sense. We can probably |
+ // send from this thread now. |
main_thread_task_runner_->PostTask( |
FROM_HERE, |
base::Bind(&SendPostMessageToClientOnMainThread, |
base::RetainedRef(sender_), GetRoutingID(), uuid.utf8(), |
- message.utf16(), base::Passed(&channel_array))); |
+ message.utf16(), base::Passed(&channels))); |
} |
void ServiceWorkerContextClient::focus( |
@@ -920,15 +920,14 @@ void ServiceWorkerContextClient::DispatchExtendableMessageEvent( |
base::MakeUnique<DispatchExtendableMessageEventCallback>(callback)); |
blink::WebMessagePortChannelArray ports = |
- WebMessagePortChannelImpl::CreatePorts(event->message_ports, |
- event->new_routing_ids, |
- main_thread_task_runner_); |
+ WebMessagePortChannelImpl::CreateFromMessagePipeHandles( |
+ std::move(event->message_ports)); |
if (event->source.client_info.IsValid()) { |
blink::WebServiceWorkerClientInfo web_client = |
ToWebServiceWorkerClientInfo(event->source.client_info); |
proxy_->dispatchExtendableMessageEvent( |
request_id, blink::WebString::fromUTF16(event->message), |
- event->source_origin, ports, web_client); |
+ event->source_origin, std::move(ports), web_client); |
return; |
} |
@@ -943,7 +942,8 @@ void ServiceWorkerContextClient::DispatchExtendableMessageEvent( |
dispatcher->GetOrCreateServiceWorker(std::move(handle)); |
proxy_->dispatchExtendableMessageEvent( |
request_id, blink::WebString::fromUTF16(event->message), |
- event->source_origin, ports, WebServiceWorkerImpl::CreateHandle(worker)); |
+ event->source_origin, std::move(ports), |
+ WebServiceWorkerImpl::CreateHandle(worker)); |
} |
void ServiceWorkerContextClient::OnInstallEvent(int request_id) { |