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

Unified Diff: content/browser/message_port_provider.cc

Issue 944443003: Step two of optionally sending messages to/from message ports as base::Value. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@n-c-message-as-values-take2
Patch Set: use auto where it makes sense Created 5 years, 10 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/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,
- &params->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);
« no previous file with comments | « content/browser/message_port_message_filter.cc ('k') | content/browser/message_port_provider_browsertest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698