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

Side by Side Diff: content/common/app_web_message_port_messages.h

Issue 2422793002: HTML MessagePort as mojo::MessagePipeHandle (Closed)
Patch Set: Add missing ScopedAsyncTaskScheduler instance for the new unit tests; required by a recent change t… Created 3 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 unified diff | Download patch
« no previous file with comments | « content/common/BUILD.gn ('k') | content/common/content_message_generator.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
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
3 // found in the LICENSE file.
4
5 // Multiply-included file, no traditional include guard.
6 #include <vector>
7
8 #include "content/common/content_export.h"
9 #include "ipc/ipc_message_macros.h"
10
11 #undef IPC_MESSAGE_EXPORT
12 #define IPC_MESSAGE_EXPORT CONTENT_EXPORT
13 #define IPC_MESSAGE_START AwMessagePortMsgStart
14
15 //-----------------------------------------------------------------------------
16 // MessagePort messages
17 // These are messages sent from the browser to the renderer process.
18
19 // Normally the postmessages are exchanged between the renderers and the message
20 // itself is opaque to the browser process. The format of the message is a
21 // WebSerializesScriptValue. A WebSerializedScriptValue is a blink structure
22 // and can only be serialized/deserialized in renderer. Further, we could not
23 // have Blink or V8 on the browser side due to their relience on static
24 // variables.
25 //
26 // For posting messages from Java (Android apps) to JS, we pass the
27 // browser/renderer boundary an extra time and convert the messages to a type
28 // that browser can use. Within the current implementation specificications,
29 // where we use the main frame on the browser side and it always stays within
30 // the same process this is not expensive, but if we can do the conversion at
31 // the browser, then we can drop this code.
32
33 // Important Note about multi-process situation: In a multi-process scenario,
34 // the renderer that does the conversion can be theoretically different then the
35 // renderer that receives the message. Although in the current implementation
36 // this doesn't become an issue, there are 2 possible solutions to deal with
37 // this and make the overall system more robust to future changes:
38 // 1. Do the conversion at the browser side by writing a new serializer
39 // deserializer for WebSerializedScriptValue
40 // 2. Do the conversion at the content layer, at the renderer at the time of
41 // receiving the message. This may need adding new flags to indicate that
42 // message needs to be converted. However, this is complicated due to queing
43 // at the browser side and possibility of ports being shipped to a different
44 // renderer or browser delegate.
45
46 // Tells the renderer to convert the message from a WebSerializeScript
47 // format to a base::ListValue. This IPC is used for messages that are
48 // incoming to Android apps from JS.
49 IPC_MESSAGE_ROUTED3(AppWebMessagePortMsg_WebToAppMessage,
50 int /* recipient message port id */,
51 base::string16 /* message */,
52 std::vector<int> /* sent message port_ids */)
53
54 // Tells the renderer to convert the message from a String16
55 // format to a WebSerializedScriptValue. This IPC is used for messages that
56 // are outgoing from Android apps to JS.
57 // TODO(sgurun) when we start supporting other types, use a ListValue instead
58 // of string16
59 IPC_MESSAGE_ROUTED3(AppWebMessagePortMsg_AppToWebMessage,
60 int /* recipient message port id */,
61 base::string16 /* message */,
62 std::vector<int> /* sent message port_ids */)
63
64 // Used to defer message port closing until after all in-flight messages
65 // are flushed from renderer to browser. Renderer piggy-backs the message
66 // to browser.
67 IPC_MESSAGE_ROUTED1(AppWebMessagePortMsg_ClosePort, int /* message port id */)
68
69 //-----------------------------------------------------------------------------
70 // These are messages sent from the renderer to the browser process.
71
72 // Response to AppWebMessagePortMessage_WebToAppMessage
73 IPC_MESSAGE_ROUTED3(AppWebMessagePortHostMsg_ConvertedWebToAppMessage,
74 int /* recipient message port id */,
75 base::ListValue /* converted message */,
76 std::vector<int> /* sent message port_ids */)
77
78 // Response to AppWebMessagePortMessage_AppToWebMessage
79 IPC_MESSAGE_ROUTED3(AppWebMessagePortHostMsg_ConvertedAppToWebMessage,
80 int /* recipient message port id */,
81 base::string16 /* converted message */,
82 std::vector<int> /* sent message port_ids */)
83
84 // Response to AppWebMessagePortMsg_ClosePort
85 IPC_MESSAGE_ROUTED1(AppWebMessagePortHostMsg_ClosePortAck,
86 int /* message port id */)
OLDNEW
« no previous file with comments | « content/common/BUILD.gn ('k') | content/common/content_message_generator.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698