| OLD | NEW |
| 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 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 #ifndef WEBKIT_PLUGINS_PPAPI_MESSAGE_CHANNEL_H_ | 5 #ifndef WEBKIT_PLUGINS_PPAPI_MESSAGE_CHANNEL_H_ |
| 6 #define WEBKIT_PLUGINS_PPAPI_MESSAGE_CHANNEL_H_ | 6 #define WEBKIT_PLUGINS_PPAPI_MESSAGE_CHANNEL_H_ |
| 7 | 7 |
| 8 #include "base/task.h" |
| 8 #include "third_party/npapi/bindings/npruntime.h" | 9 #include "third_party/npapi/bindings/npruntime.h" |
| 9 #include "webkit/plugins/ppapi/resource.h" | 10 #include "webkit/plugins/ppapi/resource.h" |
| 10 | 11 |
| 11 struct PP_Var; | 12 struct PP_Var; |
| 12 | 13 |
| 13 namespace webkit { | 14 namespace webkit { |
| 14 namespace ppapi { | 15 namespace ppapi { |
| 15 | 16 |
| 16 class PluginInstance; | 17 class PluginInstance; |
| 17 | 18 |
| (...skipping 19 matching lines...) Expand all Loading... |
| 37 struct MessageChannelNPObject : public NPObject { | 38 struct MessageChannelNPObject : public NPObject { |
| 38 MessageChannelNPObject(); | 39 MessageChannelNPObject(); |
| 39 ~MessageChannelNPObject(); | 40 ~MessageChannelNPObject(); |
| 40 | 41 |
| 41 MessageChannel* message_channel; | 42 MessageChannel* message_channel; |
| 42 }; | 43 }; |
| 43 | 44 |
| 44 explicit MessageChannel(PluginInstance* instance); | 45 explicit MessageChannel(PluginInstance* instance); |
| 45 ~MessageChannel(); | 46 ~MessageChannel(); |
| 46 | 47 |
| 48 // Post a message to the onmessage handler for this channel's instance |
| 49 // asynchronously. |
| 47 void PostMessageToJavaScript(PP_Var message_data); | 50 void PostMessageToJavaScript(PP_Var message_data); |
| 51 // Post a message to the PPP_Instance HandleMessage function for this |
| 52 // channel's instance. |
| 48 void PostMessageToNative(PP_Var message_data); | 53 void PostMessageToNative(PP_Var message_data); |
| 49 | 54 |
| 50 // Return the NPObject* to which we should forward any calls which aren't | 55 // Return the NPObject* to which we should forward any calls which aren't |
| 51 // related to postMessage. Note that this can be NULL; it only gets set if | 56 // related to postMessage. Note that this can be NULL; it only gets set if |
| 52 // there is a scriptable 'InstanceObject' associated with this channel's | 57 // there is a scriptable 'InstanceObject' associated with this channel's |
| 53 // instance. | 58 // instance. |
| 54 NPObject* passthrough_object() { | 59 NPObject* passthrough_object() { |
| 55 return passthrough_object_; | 60 return passthrough_object_; |
| 56 } | 61 } |
| 57 void set_passthrough_object(NPObject* passthrough) { | 62 void set_passthrough_object(NPObject* passthrough) { |
| (...skipping 16 matching lines...) Expand all Loading... |
| 74 // scripting. | 79 // scripting. |
| 75 NPObject* passthrough_object_; | 80 NPObject* passthrough_object_; |
| 76 | 81 |
| 77 // The NPObject we use to expose postMessage to JavaScript. | 82 // The NPObject we use to expose postMessage to JavaScript. |
| 78 MessageChannelNPObject* np_object_; | 83 MessageChannelNPObject* np_object_; |
| 79 | 84 |
| 80 // An NPVariant referring to the JavaScript function we use to send a message | 85 // An NPVariant referring to the JavaScript function we use to send a message |
| 81 // to a JavaScript target. | 86 // to a JavaScript target. |
| 82 NPVariant onmessage_invoker_; | 87 NPVariant onmessage_invoker_; |
| 83 | 88 |
| 89 // Evaluates the JavaScript code for onmessage_invoker_ and makes |
| 90 // it a callable NPVariant for that function. Returns true on success, false |
| 91 // otherwise. |
| 84 bool EvaluateOnMessageInvoker(); | 92 bool EvaluateOnMessageInvoker(); |
| 85 | 93 |
| 94 // Post a message to the onmessage handler for this channel's instance |
| 95 // synchronously. This is used by PostMessageToJavaScript. |
| 96 void PostMessageToJavaScriptImpl(PP_Var message_data); |
| 97 // Post a message to the PPP_Instance HandleMessage function for this |
| 98 // channel's instance. This is used by PostMessageToNative. |
| 99 void PostMessageToNativeImpl(PP_Var message_data); |
| 100 |
| 101 // Ensure pending tasks will not fire after this object is destroyed. |
| 102 ScopedRunnableMethodFactory<MessageChannel> method_factory_; |
| 103 |
| 86 DISALLOW_COPY_AND_ASSIGN(MessageChannel); | 104 DISALLOW_COPY_AND_ASSIGN(MessageChannel); |
| 87 }; | 105 }; |
| 88 | 106 |
| 89 } // namespace ppapi | 107 } // namespace ppapi |
| 90 } // namespace webkit | 108 } // namespace webkit |
| 91 | 109 |
| 92 #endif // WEBKIT_PLUGINS_PPAPI_MESSAGE_CHANNEL_H_ | 110 #endif // WEBKIT_PLUGINS_PPAPI_MESSAGE_CHANNEL_H_ |
| 93 | 111 |
| OLD | NEW |