diff options
author | dmichael@google.com <dmichael@google.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-03-23 21:07:15 +0000 |
---|---|---|
committer | dmichael@google.com <dmichael@google.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-03-23 21:07:15 +0000 |
commit | 9888f134c655a95c5922c980eb59d3337341d653 (patch) | |
tree | 8ec7b6849cd94196df9bf3ee7810f6a838242e8d /webkit/glue | |
parent | 2752bf6a3120e172d216ab7bde42222a3ae4b5cb (diff) | |
download | chromium_src-9888f134c655a95c5922c980eb59d3337341d653.zip chromium_src-9888f134c655a95c5922c980eb59d3337341d653.tar.gz chromium_src-9888f134c655a95c5922c980eb59d3337341d653.tar.bz2 |
A proposal and implementation for an initial postMessage interface. These interfaces will allow JavaScript to send data asynchronously to a module instance, and the module instance to asynchronously send data to a JavaScript message handler.
Note, I did something differently from other per-instance interfaces. While the C interface has 'PPB_Messaging' and 'PPP_Messaging' separate from the Instance interfaces, I stuck the per-instance messaging in to pp::Instance. It seems more intuitive to me, and doesn't have the drawbacks of having too many functions in the C layer instance interfaces. Happy to back off of that position, but it's worth a shot.
Overview:
From JavaScript, you can invoke 'postMessage' on the embedded module. That results in a call to 'PPP_Messaging::HandleMessage'.
From Native Code, you can invoke 'PPB_Messaging::PostMessage', which results
in a call to an 'onmessage' function on the DOM element for the module
instance in the JavaScript code (if one has been registered).
Please see the included example or the examples in the comments of
PPB_Messaging and PPP_Messaging.
Restrictions:
- This implementation is synchronous. A later CL will make it asynchronous.
- This implementation supports only intrinsic values and strings (all types that PP_Var supports except for objects). Object & array support will come later.
- This implementation only allows for 1 channel per instance. You can not expose other 'channels' or 'ports'. Future CLs will add support for MessagePorts.
BUG=None
TEST=test_post_message.h/.cc
(This CL replaces http://codereview.chromium.org/6538028/ )
Review URL: http://codereview.chromium.org/6716005
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@79178 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'webkit/glue')
-rw-r--r-- | webkit/glue/webkit_glue.gypi | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/webkit/glue/webkit_glue.gypi b/webkit/glue/webkit_glue.gypi index 942d829..bdba1d6 100644 --- a/webkit/glue/webkit_glue.gypi +++ b/webkit/glue/webkit_glue.gypi @@ -267,6 +267,8 @@ '../plugins/ppapi/file_path.cc', '../plugins/ppapi/file_path.h', '../plugins/ppapi/fullscreen_container.h', + '../plugins/ppapi/message_channel.cc', + '../plugins/ppapi/message_channel.h', '../plugins/ppapi/npapi_glue.cc', '../plugins/ppapi/npapi_glue.h', '../plugins/ppapi/plugin_delegate.h', |