| Index: content/browser/message_port_provider.cc
|
| diff --git a/content/browser/message_port_provider.cc b/content/browser/message_port_provider.cc
|
| index 7abc7dcff5dfbde401548074cee3cfdf444767f2..63de381756624de055e4720e7649c5fe41414798 100644
|
| --- a/content/browser/message_port_provider.cc
|
| +++ b/content/browser/message_port_provider.cc
|
| @@ -16,49 +16,32 @@
|
|
|
| namespace content {
|
|
|
| -namespace {
|
| -
|
| -void PostMessageOnIOThread(MessagePortMessageFilter* filter,
|
| - int routing_id,
|
| - ViewMsg_PostMessage_Params* params) {
|
| - if (!params->message_port_ids.empty()) {
|
| - filter->UpdateMessagePortsWithNewRoutes(params->message_port_ids,
|
| - ¶ms->new_routing_ids);
|
| - }
|
| - filter->Send(new ViewMsg_PostMessageEvent(routing_id, *params));
|
| -}
|
| -
|
| -} // namespace
|
| -
|
| // static
|
| void MessagePortProvider::PostMessageToFrame(
|
| WebContents* web_contents,
|
| const base::string16& source_origin,
|
| const base::string16& target_origin,
|
| const base::string16& data,
|
| - const std::vector<int>& ports) {
|
| + const std::vector<TransferredMessagePort>& ports) {
|
| DCHECK_CURRENTLY_ON(BrowserThread::UI);
|
|
|
| - ViewMsg_PostMessage_Params* params = new ViewMsg_PostMessage_Params();
|
| - params->is_data_raw_string = true;
|
| - params->data = data;
|
| + ViewMsg_PostMessage_Params params;
|
| + params.is_data_raw_string = true;
|
| + params.data = data;
|
| // Blink requires a source frame to transfer ports. This is why a
|
| // source routing id is set here. See WebDOMMessageEvent::initMessageEvent()
|
| - params->source_routing_id = web_contents->GetRoutingID();
|
| - params->source_origin = source_origin;
|
| - params->target_origin = target_origin;
|
| - params->message_port_ids = ports;
|
| + params.source_routing_id = web_contents->GetRoutingID();
|
| + params.source_origin = source_origin;
|
| + params.target_origin = target_origin;
|
| + params.message_ports = ports;
|
|
|
| RenderProcessHostImpl* rph =
|
| static_cast<RenderProcessHostImpl*>(web_contents->GetRenderProcessHost());
|
| - MessagePortMessageFilter* mf = rph->message_port_message_filter();
|
| BrowserThread::PostTask(
|
| - BrowserThread::IO,
|
| - FROM_HERE,
|
| - base::Bind(&PostMessageOnIOThread,
|
| - make_scoped_refptr(mf),
|
| - web_contents->GetRoutingID(),
|
| - base::Owned(params)));
|
| + BrowserThread::IO, FROM_HERE,
|
| + base::Bind(&MessagePortMessageFilter::RouteMessageEventWithMessagePorts,
|
| + rph->message_port_message_filter(),
|
| + web_contents->GetRoutingID(), params));
|
| }
|
|
|
| // static
|
| @@ -83,7 +66,7 @@ void MessagePortProvider::CreateMessageChannel(MessagePortDelegate* delegate,
|
| void MessagePortProvider::PostMessageToPort(
|
| int sender_port_id,
|
| const MessagePortMessage& message,
|
| - const std::vector<int>& sent_ports) {
|
| + const std::vector<TransferredMessagePort>& sent_ports) {
|
| DCHECK_CURRENTLY_ON(BrowserThread::IO);
|
| MessagePortService* msp = MessagePortService::GetInstance();
|
| msp->PostMessage(sender_port_id, message, sent_ports);
|
|
|