| Index: android_webview/common/aw_message_port_messages.h
|
| diff --git a/android_webview/common/aw_message_port_messages.h b/android_webview/common/aw_message_port_messages.h
|
| index 866d713d1418feb805202c665bc38d1f86569887..00ec171a7d7f38edb5b7e2c149ee1ed0258f051b 100644
|
| --- a/android_webview/common/aw_message_port_messages.h
|
| +++ b/android_webview/common/aw_message_port_messages.h
|
| @@ -14,10 +14,46 @@
|
| // MessagePort messages
|
| // These are messages sent from the browser to the renderer process.
|
|
|
| -// Tells the renderer to convert the sent message from a WebSerializeScript
|
| -// format to a base::ListValue. Due to the complexities of renderer/browser
|
| -// relation, this can only be done in renderer for now.
|
| -IPC_MESSAGE_ROUTED3(AwMessagePortMsg_Message,
|
| +// Normally the postmessages are exchanged between the renderers and the message
|
| +// itself is opaque to the browser process. The format of the message is a
|
| +// WebSerializesScriptValue. A WebSerializedScriptValue is a blink structure
|
| +// and can only be serialized/deserialized in renderer. Further, we could not
|
| +// have Blink or V8 on the browser side due to their relience on static
|
| +// variables.
|
| +//
|
| +// For posting messages from Java (Webview) to JS, we pass the browser/renderer
|
| +// boundary an extra time and convert the messages to a type that browser can
|
| +// use. Since WebView is single-process this is not terribly expensive, but
|
| +// if we can do the conversion at the browser, then we can drop this code.
|
| +
|
| +// Important Note about multi-process situation: Webview is single process so
|
| +// such a conversion does not increase the risk due to untrusted renderers.
|
| +// However, in a multi-process scenario, the renderer that does the conversion
|
| +// can be different then the renderer that receives the message. There are
|
| +// 2 possible solutions to deal with this:
|
| +// 1. Do the conversion at the browser side by writing a new serializer
|
| +// deserializer for WebSerializedScriptValue
|
| +// 2. Do the conversion at the content layer, at the renderer at the time of
|
| +// receiveing the message. This may need adding new flags to indicate that
|
| +// message needs to be converted. However, this is complicated due to queing
|
| +// at the browser side and possibility of ports being shipped to a different
|
| +// renderer or browser delegate.
|
| +
|
| +
|
| +// Tells the renderer to convert the message from a WebSerializeScript
|
| +// format to a base::ListValue. This IPC is used for messages that are
|
| +// incoming to Android webview from JS.
|
| +IPC_MESSAGE_ROUTED3(AwMessagePortMsg_WebToAppMessage,
|
| + int /* recipient message port id */,
|
| + base::string16 /* message */,
|
| + std::vector<int> /* sent message port_ids */)
|
| +
|
| +// Tells the renderer to convert the message from a String16
|
| +// format to a WebSerializedScriptValue. This IPC is used for messages that
|
| +// are outgoing from Webview to JS.
|
| +// TODO(sgurun) when we start supporting other types, use a ListValue instead
|
| +// of string16
|
| +IPC_MESSAGE_ROUTED3(AwMessagePortMsg_AppToWebMessage,
|
| int /* recipient message port id */,
|
| base::string16 /* message */,
|
| std::vector<int> /* sent message port_ids */)
|
| @@ -25,8 +61,14 @@ IPC_MESSAGE_ROUTED3(AwMessagePortMsg_Message,
|
| //-----------------------------------------------------------------------------
|
| // These are messages sent from the renderer to the browser process.
|
|
|
| -// Response to AwMessagePortMessage_ConvertMessage
|
| -IPC_MESSAGE_ROUTED3(AwMessagePortHostMsg_ConvertedMessage,
|
| +// Response to AwMessagePortMessage_WebToAppMessage
|
| +IPC_MESSAGE_ROUTED3(AwMessagePortHostMsg_ConvertedWebToAppMessage,
|
| int /* recipient message port id */,
|
| base::ListValue /* converted message */,
|
| std::vector<int> /* sent message port_ids */)
|
| +
|
| +// Response to AwMessagePortMessage_AppToWebMessage
|
| +IPC_MESSAGE_ROUTED3(AwMessagePortHostMsg_ConvertedAppToWebMessage,
|
| + int /* recipient message port id */,
|
| + base::string16 /* converted message */,
|
| + std::vector<int> /* sent message port_ids */)
|
|
|