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

Side by Side Diff: android_webview/browser/aw_message_port_message_filter.cc

Issue 921013002: Optionally have MessagePort pass data as base::Value, part 1. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@n-c-move-v8-value-converter
Patch Set: Update singly-included comment Created 5 years, 9 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 unified diff | Download patch
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "android_webview/browser/aw_message_port_message_filter.h" 5 #include "android_webview/browser/aw_message_port_message_filter.h"
6 6
7 #include "android_webview/browser/aw_browser_context.h" 7 #include "android_webview/browser/aw_browser_context.h"
8 #include "android_webview/common/aw_message_port_messages.h" 8 #include "android_webview/common/aw_message_port_messages.h"
9 #include "content/public/browser/message_port_provider.h" 9 #include "content/public/browser/message_port_provider.h"
10 #include "content/public/common/message_port_types.h"
10 11
11 using content::BrowserThread; 12 using content::BrowserThread;
12 using content::MessagePortProvider; 13 using content::MessagePortProvider;
13 14
14 namespace android_webview { 15 namespace android_webview {
15 16
16 AwMessagePortMessageFilter::AwMessagePortMessageFilter(int route_id) 17 AwMessagePortMessageFilter::AwMessagePortMessageFilter(int route_id)
17 : BrowserMessageFilter(AwMessagePortMsgStart), route_id_(route_id) { 18 : BrowserMessageFilter(AwMessagePortMsgStart), route_id_(route_id) {
18 } 19 }
19 20
(...skipping 19 matching lines...) Expand all
39 IPC_MESSAGE_UNHANDLED(handled = false) 40 IPC_MESSAGE_UNHANDLED(handled = false)
40 IPC_END_MESSAGE_MAP() 41 IPC_END_MESSAGE_MAP()
41 return handled; 42 return handled;
42 } 43 }
43 44
44 void AwMessagePortMessageFilter::OnConvertedAppToWebMessage( 45 void AwMessagePortMessageFilter::OnConvertedAppToWebMessage(
45 int msg_port_id, 46 int msg_port_id,
46 const base::string16& message, 47 const base::string16& message,
47 const std::vector<int>& sent_message_port_ids) { 48 const std::vector<int>& sent_message_port_ids) {
48 49
49 MessagePortProvider::PostMessageToPort(msg_port_id, message, 50 // TODO(mek): Bypass the extra roundtrip and just send the unconverted message
51 // to the renderer directly.
52 MessagePortProvider::PostMessageToPort(msg_port_id,
53 content::MessagePortMessage(message),
50 sent_message_port_ids); 54 sent_message_port_ids);
51 } 55 }
52 56
53 void AwMessagePortMessageFilter::OnClosePortAck(int message_port_id) { 57 void AwMessagePortMessageFilter::OnClosePortAck(int message_port_id) {
54 MessagePortProvider::ClosePort(message_port_id); 58 MessagePortProvider::ClosePort(message_port_id);
55 AwBrowserContext::GetDefault()->GetMessagePortService()-> 59 AwBrowserContext::GetDefault()->GetMessagePortService()->
56 CleanupPort(message_port_id); 60 CleanupPort(message_port_id);
57 } 61 }
58 62
59 void AwMessagePortMessageFilter::OnDestruct() const { 63 void AwMessagePortMessageFilter::OnDestruct() const {
60 BrowserThread::DeleteOnIOThread::Destruct(this); 64 BrowserThread::DeleteOnIOThread::Destruct(this);
61 } 65 }
62 66
63 void AwMessagePortMessageFilter::SendAppToWebMessage( 67 void AwMessagePortMessageFilter::SendAppToWebMessage(
64 int msg_port_route_id, 68 int msg_port_route_id,
65 const base::string16& message, 69 const base::string16& message,
66 const std::vector<int>& sent_message_port_ids) { 70 const std::vector<int>& sent_message_port_ids) {
67 Send(new AwMessagePortMsg_AppToWebMessage( 71 Send(new AwMessagePortMsg_AppToWebMessage(
68 route_id_, 72 route_id_,
69 msg_port_route_id, // same as the port id 73 msg_port_route_id, // same as the port id
70 message, sent_message_port_ids)); 74 message, sent_message_port_ids));
71 } 75 }
72 76
73 void AwMessagePortMessageFilter::SendClosePortMessage(int message_port_id) { 77 void AwMessagePortMessageFilter::SendClosePortMessage(int message_port_id) {
74 Send(new AwMessagePortMsg_ClosePort(route_id_, message_port_id)); 78 Send(new AwMessagePortMsg_ClosePort(route_id_, message_port_id));
75 } 79 }
76 80
77 void AwMessagePortMessageFilter::SendMessage( 81 void AwMessagePortMessageFilter::SendMessage(
78 int msg_port_route_id, 82 int msg_port_route_id,
79 const base::string16& message, 83 const content::MessagePortMessage& message,
80 const std::vector<int>& sent_message_port_ids) { 84 const std::vector<int>& sent_message_port_ids) {
85 DCHECK(message.is_string());
81 Send(new AwMessagePortMsg_WebToAppMessage( 86 Send(new AwMessagePortMsg_WebToAppMessage(
82 route_id_, 87 route_id_,
83 msg_port_route_id, // same as the port id 88 msg_port_route_id, // same as the port id
84 message, sent_message_port_ids)); 89 message.message_as_string, sent_message_port_ids));
85 } 90 }
86 91
87 void AwMessagePortMessageFilter::SendMessagesAreQueued(int route_id) { 92 void AwMessagePortMessageFilter::SendMessagesAreQueued(int route_id) {
88 // TODO(sgurun) implement 93 // TODO(sgurun) implement
89 NOTREACHED(); 94 NOTREACHED();
90 } 95 }
91 96
92 } // namespace android_webview 97 } // namespace android_webview
OLDNEW
« no previous file with comments | « android_webview/browser/aw_message_port_message_filter.h ('k') | content/browser/message_port_message_filter.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698