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_PPAPI_PLUGIN_INSTANCE_H_ | 5 #ifndef WEBKIT_PLUGINS_PPAPI_PPAPI_PLUGIN_INSTANCE_H_ |
6 #define WEBKIT_PLUGINS_PPAPI_PPAPI_PLUGIN_INSTANCE_H_ | 6 #define WEBKIT_PLUGINS_PPAPI_PPAPI_PLUGIN_INSTANCE_H_ |
7 | 7 |
8 #include <map> | 8 #include <map> |
9 #include <set> | 9 #include <set> |
10 #include <string> | 10 #include <string> |
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
46 namespace WebKit { | 46 namespace WebKit { |
47 struct WebCursorInfo; | 47 struct WebCursorInfo; |
48 class WebInputEvent; | 48 class WebInputEvent; |
49 class WebPluginContainer; | 49 class WebPluginContainer; |
50 } | 50 } |
51 | 51 |
52 namespace webkit { | 52 namespace webkit { |
53 namespace ppapi { | 53 namespace ppapi { |
54 | 54 |
55 class FullscreenContainer; | 55 class FullscreenContainer; |
| 56 class MessageChannel; |
56 class ObjectVar; | 57 class ObjectVar; |
57 class PluginDelegate; | 58 class PluginDelegate; |
58 class PluginModule; | 59 class PluginModule; |
59 class PluginObject; | 60 class PluginObject; |
60 class PPB_Graphics2D_Impl; | 61 class PPB_Graphics2D_Impl; |
61 class PPB_ImageData_Impl; | 62 class PPB_ImageData_Impl; |
62 class PPB_Surface3D_Impl; | 63 class PPB_Surface3D_Impl; |
63 class PPB_URLLoader_Impl; | 64 class PPB_URLLoader_Impl; |
64 class Resource; | 65 class Resource; |
65 | 66 |
(...skipping 11 matching lines...) Expand all Loading... |
77 static const PPB_Instance* GetInterface(); | 78 static const PPB_Instance* GetInterface(); |
78 | 79 |
79 // Returns a pointer to the interface implementing PPB_Find that is | 80 // Returns a pointer to the interface implementing PPB_Find that is |
80 // exposed to the plugin. | 81 // exposed to the plugin. |
81 static const PPB_Find_Dev* GetFindInterface(); | 82 static const PPB_Find_Dev* GetFindInterface(); |
82 static const PPB_Fullscreen_Dev* GetFullscreenInterface(); | 83 static const PPB_Fullscreen_Dev* GetFullscreenInterface(); |
83 static const PPB_Zoom_Dev* GetZoomInterface(); | 84 static const PPB_Zoom_Dev* GetZoomInterface(); |
84 | 85 |
85 PluginDelegate* delegate() const { return delegate_; } | 86 PluginDelegate* delegate() const { return delegate_; } |
86 PluginModule* module() const { return module_.get(); } | 87 PluginModule* module() const { return module_.get(); } |
| 88 MessageChannel& message_channel() { return *message_channel_; } |
87 | 89 |
88 WebKit::WebPluginContainer* container() const { return container_; } | 90 WebKit::WebPluginContainer* container() const { return container_; } |
89 | 91 |
90 const gfx::Rect& position() const { return position_; } | 92 const gfx::Rect& position() const { return position_; } |
91 const gfx::Rect& clip() const { return clip_; } | 93 const gfx::Rect& clip() const { return clip_; } |
92 | 94 |
93 int find_identifier() const { return find_identifier_; } | 95 int find_identifier() const { return find_identifier_; } |
94 | 96 |
95 void set_always_on_top(bool on_top) { always_on_top_ = on_top; } | 97 void set_always_on_top(bool on_top) { always_on_top_ = on_top; } |
96 | 98 |
(...skipping 28 matching lines...) Expand all Loading... |
125 // Called when the out-of-process plugin implementing this instance crashed. | 127 // Called when the out-of-process plugin implementing this instance crashed. |
126 void InstanceCrashed(); | 128 void InstanceCrashed(); |
127 | 129 |
128 // PPB_Instance implementation. | 130 // PPB_Instance implementation. |
129 PP_Var GetWindowObject(); | 131 PP_Var GetWindowObject(); |
130 PP_Var GetOwnerElementObject(); | 132 PP_Var GetOwnerElementObject(); |
131 bool BindGraphics(PP_Resource graphics_id); | 133 bool BindGraphics(PP_Resource graphics_id); |
132 bool full_frame() const { return full_frame_; } | 134 bool full_frame() const { return full_frame_; } |
133 bool SetCursor(PP_CursorType_Dev type); | 135 bool SetCursor(PP_CursorType_Dev type); |
134 PP_Var ExecuteScript(PP_Var script, PP_Var* exception); | 136 PP_Var ExecuteScript(PP_Var script, PP_Var* exception); |
| 137 void PostMessage(PP_Var message); |
135 | 138 |
136 // PPP_Instance pass-through. | 139 // PPP_Instance pass-through. |
137 void Delete(); | 140 void Delete(); |
138 bool Initialize(WebKit::WebPluginContainer* container, | 141 bool Initialize(WebKit::WebPluginContainer* container, |
139 const std::vector<std::string>& arg_names, | 142 const std::vector<std::string>& arg_names, |
140 const std::vector<std::string>& arg_values, | 143 const std::vector<std::string>& arg_values, |
141 bool full_frame); | 144 bool full_frame); |
142 bool HandleDocumentLoad(PPB_URLLoader_Impl* loader); | 145 bool HandleDocumentLoad(PPB_URLLoader_Impl* loader); |
143 bool HandleInputEvent(const WebKit::WebInputEvent& event, | 146 bool HandleInputEvent(const WebKit::WebInputEvent& event, |
144 WebKit::WebCursorInfo* cursor_info); | 147 WebKit::WebCursorInfo* cursor_info); |
| 148 void HandleMessage(PP_Var message); |
145 PP_Var GetInstanceObject(); | 149 PP_Var GetInstanceObject(); |
146 void ViewChanged(const gfx::Rect& position, const gfx::Rect& clip); | 150 void ViewChanged(const gfx::Rect& position, const gfx::Rect& clip); |
147 | 151 |
148 // Notifications about focus changes, see has_webkit_focus_ below. | 152 // Notifications about focus changes, see has_webkit_focus_ below. |
149 void SetWebKitFocus(bool has_focus); | 153 void SetWebKitFocus(bool has_focus); |
150 void SetContentAreaFocus(bool has_focus); | 154 void SetContentAreaFocus(bool has_focus); |
151 | 155 |
152 // Notifications that the view has rendered the page and that it has been | 156 // Notifications that the view has rendered the page and that it has been |
153 // flushed to the screen. These messages are used to send Flush callbacks to | 157 // flushed to the screen. These messages are used to send Flush callbacks to |
154 // the plugin for DeviceContext2D. | 158 // the plugin for DeviceContext2D. |
(...skipping 196 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
351 bool always_on_top_; | 355 bool always_on_top_; |
352 | 356 |
353 // Plugin container for fullscreen mode. NULL if not in fullscreen mode. Note: | 357 // Plugin container for fullscreen mode. NULL if not in fullscreen mode. Note: |
354 // there is a transition state where fullscreen_container_ is non-NULL but | 358 // there is a transition state where fullscreen_container_ is non-NULL but |
355 // fullscreen_ is false (see above). | 359 // fullscreen_ is false (see above). |
356 FullscreenContainer* fullscreen_container_; | 360 FullscreenContainer* fullscreen_container_; |
357 | 361 |
358 // True if we are in fullscreen mode. Note: it is false during the transition. | 362 // True if we are in fullscreen mode. Note: it is false during the transition. |
359 bool fullscreen_; | 363 bool fullscreen_; |
360 | 364 |
| 365 // The MessageChannel used to implement bidirectional postMessage for the |
| 366 // instance. |
| 367 scoped_ptr<MessageChannel> message_channel_; |
| 368 |
361 typedef std::set<PluginObject*> PluginObjectSet; | 369 typedef std::set<PluginObject*> PluginObjectSet; |
362 PluginObjectSet live_plugin_objects_; | 370 PluginObjectSet live_plugin_objects_; |
363 | 371 |
364 // Tracks all live ObjectVars used by this module so we can map NPObjects to | 372 // Tracks all live ObjectVars used by this module so we can map NPObjects to |
365 // the corresponding object. These are non-owning references. | 373 // the corresponding object. These are non-owning references. |
366 typedef std::map<NPObject*, ObjectVar*> NPObjectToObjectVarMap; | 374 typedef std::map<NPObject*, ObjectVar*> NPObjectToObjectVarMap; |
367 NPObjectToObjectVarMap np_object_to_object_var_; | 375 NPObjectToObjectVarMap np_object_to_object_var_; |
368 | 376 |
369 DISALLOW_COPY_AND_ASSIGN(PluginInstance); | 377 DISALLOW_COPY_AND_ASSIGN(PluginInstance); |
370 }; | 378 }; |
371 | 379 |
372 } // namespace ppapi | 380 } // namespace ppapi |
373 } // namespace webkit | 381 } // namespace webkit |
374 | 382 |
375 #endif // WEBKIT_PLUGINS_PPAPI_PPAPI_PLUGIN_INSTANCE_H_ | 383 #endif // WEBKIT_PLUGINS_PPAPI_PPAPI_PLUGIN_INSTANCE_H_ |
OLD | NEW |