OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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_IMPL_H_ | 5 #ifndef CONTENT_RENDERER_PEPPER_PPAPI_PLUGIN_INSTANCE_IMPL_H_ |
6 #define WEBKIT_PLUGINS_PPAPI_PPAPI_PLUGIN_INSTANCE_IMPL_H_ | 6 #define CONTENT_RENDERER_PEPPER_PPAPI_PLUGIN_INSTANCE_IMPL_H_ |
7 | 7 |
8 #include <set> | 8 #include <set> |
9 #include <string> | 9 #include <string> |
10 #include <vector> | 10 #include <vector> |
11 | 11 |
12 #include "base/compiler_specific.h" | 12 #include "base/compiler_specific.h" |
13 #include "base/memory/ref_counted.h" | 13 #include "base/memory/ref_counted.h" |
14 #include "base/memory/scoped_ptr.h" | 14 #include "base/memory/scoped_ptr.h" |
15 #include "base/memory/weak_ptr.h" | 15 #include "base/memory/weak_ptr.h" |
16 #include "base/strings/string16.h" | 16 #include "base/strings/string16.h" |
17 #include "cc/layers/texture_layer_client.h" | 17 #include "cc/layers/texture_layer_client.h" |
| 18 #include "content/common/content_export.h" |
| 19 #include "content/public/renderer/ppapi_plugin_instance.h" |
| 20 #include "content/renderer/pepper/plugin_delegate.h" |
| 21 #include "content/renderer/pepper/ppp_pdf.h" |
18 #include "ppapi/c/dev/pp_cursor_type_dev.h" | 22 #include "ppapi/c/dev/pp_cursor_type_dev.h" |
19 #include "ppapi/c/dev/ppp_find_dev.h" | 23 #include "ppapi/c/dev/ppp_find_dev.h" |
20 #include "ppapi/c/dev/ppp_printing_dev.h" | 24 #include "ppapi/c/dev/ppp_printing_dev.h" |
21 #include "ppapi/c/dev/ppp_selection_dev.h" | 25 #include "ppapi/c/dev/ppp_selection_dev.h" |
22 #include "ppapi/c/dev/ppp_text_input_dev.h" | 26 #include "ppapi/c/dev/ppp_text_input_dev.h" |
23 #include "ppapi/c/dev/ppp_zoom_dev.h" | 27 #include "ppapi/c/dev/ppp_zoom_dev.h" |
24 #include "ppapi/c/pp_completion_callback.h" | 28 #include "ppapi/c/pp_completion_callback.h" |
25 #include "ppapi/c/pp_instance.h" | 29 #include "ppapi/c/pp_instance.h" |
26 #include "ppapi/c/pp_time.h" | 30 #include "ppapi/c/pp_time.h" |
27 #include "ppapi/c/pp_var.h" | 31 #include "ppapi/c/pp_var.h" |
(...skipping 15 matching lines...) Expand all Loading... |
43 #include "skia/ext/refptr.h" | 47 #include "skia/ext/refptr.h" |
44 #include "third_party/WebKit/public/platform/WebCanvas.h" | 48 #include "third_party/WebKit/public/platform/WebCanvas.h" |
45 #include "third_party/WebKit/public/platform/WebString.h" | 49 #include "third_party/WebKit/public/platform/WebString.h" |
46 #include "third_party/WebKit/public/platform/WebURLLoaderClient.h" | 50 #include "third_party/WebKit/public/platform/WebURLLoaderClient.h" |
47 #include "third_party/WebKit/public/platform/WebURLResponse.h" | 51 #include "third_party/WebKit/public/platform/WebURLResponse.h" |
48 #include "third_party/WebKit/public/web/WebPlugin.h" | 52 #include "third_party/WebKit/public/web/WebPlugin.h" |
49 #include "third_party/WebKit/public/web/WebUserGestureToken.h" | 53 #include "third_party/WebKit/public/web/WebUserGestureToken.h" |
50 #include "ui/base/ime/text_input_type.h" | 54 #include "ui/base/ime/text_input_type.h" |
51 #include "ui/gfx/rect.h" | 55 #include "ui/gfx/rect.h" |
52 #include "url/gurl.h" | 56 #include "url/gurl.h" |
53 #include "webkit/plugins/ppapi/plugin_delegate.h" | |
54 #include "webkit/plugins/ppapi/ppapi_plugin_instance.h" | |
55 #include "webkit/plugins/ppapi/ppp_pdf.h" | |
56 #include "webkit/plugins/webkit_plugins_export.h" | |
57 | 57 |
58 struct PP_Point; | 58 struct PP_Point; |
59 struct _NPP; | 59 struct _NPP; |
60 | 60 |
61 class SkBitmap; | 61 class SkBitmap; |
62 class TransportDIB; | 62 class TransportDIB; |
63 | 63 |
64 namespace WebKit { | 64 namespace WebKit { |
65 class WebInputEvent; | 65 class WebInputEvent; |
66 class WebLayer; | 66 class WebLayer; |
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
102 class PluginModule; | 102 class PluginModule; |
103 class PluginObject; | 103 class PluginObject; |
104 class PPB_Graphics3D_Impl; | 104 class PPB_Graphics3D_Impl; |
105 class PPB_ImageData_Impl; | 105 class PPB_ImageData_Impl; |
106 class PPB_URLLoader_Impl; | 106 class PPB_URLLoader_Impl; |
107 | 107 |
108 // Represents one time a plugin appears on one web page. | 108 // Represents one time a plugin appears on one web page. |
109 // | 109 // |
110 // Note: to get from a PP_Instance to a PluginInstance*, use the | 110 // Note: to get from a PP_Instance to a PluginInstance*, use the |
111 // ResourceTracker. | 111 // ResourceTracker. |
112 class WEBKIT_PLUGINS_EXPORT PluginInstanceImpl : | 112 class CONTENT_EXPORT PluginInstanceImpl |
113 public base::RefCounted<PluginInstanceImpl>, | 113 : public base::RefCounted<PluginInstanceImpl>, |
114 public base::SupportsWeakPtr<PluginInstanceImpl>, | 114 public base::SupportsWeakPtr<PluginInstanceImpl>, |
115 public NON_EXPORTED_BASE(PluginInstance), | 115 public NON_EXPORTED_BASE(PluginInstance), |
116 public ::ppapi::PPB_Instance_Shared { | 116 public ::ppapi::PPB_Instance_Shared { |
117 public: | 117 public: |
118 // Create and return a PluginInstanceImpl object which supports the most | 118 // Create and return a PluginInstanceImpl object which supports the most |
119 // recent version of PPP_Instance possible by querying the given | 119 // recent version of PPP_Instance possible by querying the given |
120 // get_plugin_interface function. If the plugin does not support any valid | 120 // get_plugin_interface function. If the plugin does not support any valid |
121 // PPP_Instance interface, returns NULL. | 121 // PPP_Instance interface, returns NULL. |
122 static PluginInstanceImpl* Create(PluginDelegate* delegate, | 122 static PluginInstanceImpl* Create( |
123 content::RenderView* render_view, | 123 PluginDelegate* delegate, |
124 PluginModule* module, | 124 content::RenderView* render_view, |
125 WebKit::WebPluginContainer* container, | 125 PluginModule* module, |
126 const GURL& plugin_url); | 126 WebKit::WebPluginContainer* container, |
127 // Delete should be called by the WebPlugin before this destructor. | 127 const GURL& plugin_url); |
128 virtual ~PluginInstanceImpl(); | |
129 | |
130 PluginDelegate* delegate() const { return delegate_; } | 128 PluginDelegate* delegate() const { return delegate_; } |
131 PluginModule* module() const { return module_.get(); } | 129 PluginModule* module() const { return module_.get(); } |
132 MessageChannel& message_channel() { return *message_channel_; } | 130 MessageChannel& message_channel() { return *message_channel_; } |
133 | 131 |
134 WebKit::WebPluginContainer* container() const { return container_; } | 132 WebKit::WebPluginContainer* container() const { return container_; } |
135 | 133 |
136 // Returns the PP_Instance uniquely identifying this instance. Guaranteed | 134 // Returns the PP_Instance uniquely identifying this instance. Guaranteed |
137 // nonzero. | 135 // nonzero. |
138 PP_Instance pp_instance() const { return pp_instance_; } | 136 PP_Instance pp_instance() const { return pp_instance_; } |
139 | 137 |
(...skipping 208 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
348 WebKit::WebURLLoaderClient* document_loader() const { | 346 WebKit::WebURLLoaderClient* document_loader() const { |
349 return document_loader_; | 347 return document_loader_; |
350 } | 348 } |
351 void set_document_loader(WebKit::WebURLLoaderClient* loader) { | 349 void set_document_loader(WebKit::WebURLLoaderClient* loader) { |
352 document_loader_ = loader; | 350 document_loader_ = loader; |
353 } | 351 } |
354 | 352 |
355 ContentDecryptorDelegate* GetContentDecryptorDelegate(); | 353 ContentDecryptorDelegate* GetContentDecryptorDelegate(); |
356 | 354 |
357 // webkit::ppapi::PluginInstance implementation | 355 // webkit::ppapi::PluginInstance implementation |
358 content::RenderView* GetRenderView(); | 356 virtual content::RenderView* GetRenderView() OVERRIDE; |
359 virtual WebKit::WebPluginContainer* GetContainer(); | 357 virtual WebKit::WebPluginContainer* GetContainer() OVERRIDE; |
360 virtual ::ppapi::VarTracker* GetVarTracker(); | 358 virtual ::ppapi::VarTracker* GetVarTracker() OVERRIDE; |
361 virtual const GURL& GetPluginURL(); | 359 virtual const GURL& GetPluginURL() OVERRIDE; |
362 virtual base::FilePath GetModulePath(); | 360 virtual base::FilePath GetModulePath() OVERRIDE; |
363 virtual PP_Resource CreateExternalFileReference( | 361 virtual PP_Resource CreateExternalFileReference( |
364 const base::FilePath& external_file_path); | 362 const base::FilePath& external_file_path) OVERRIDE; |
365 virtual PP_Resource CreateImage(gfx::ImageSkia* source_image, | 363 virtual PP_Resource CreateImage(gfx::ImageSkia* source_image, |
366 float scale); | 364 float scale) OVERRIDE; |
367 virtual PP_ExternalPluginResult SwitchToOutOfProcessProxy( | 365 virtual PP_ExternalPluginResult SwitchToOutOfProcessProxy( |
368 const base::FilePath& file_path, | 366 const base::FilePath& file_path, |
369 ::ppapi::PpapiPermissions permissions, | 367 ::ppapi::PpapiPermissions permissions, |
370 const IPC::ChannelHandle& channel_handle, | 368 const IPC::ChannelHandle& channel_handle, |
371 base::ProcessId plugin_pid, | 369 base::ProcessId plugin_pid, |
372 int plugin_child_id); | 370 int plugin_child_id) OVERRIDE; |
373 virtual void SetAlwaysOnTop(bool on_top); | 371 virtual void SetAlwaysOnTop(bool on_top) OVERRIDE; |
374 virtual bool IsFullPagePlugin(); | 372 virtual bool IsFullPagePlugin() OVERRIDE; |
375 virtual void FlashSetFullscreen(bool fullscreen, bool delay_report); | 373 virtual void FlashSetFullscreen(bool fullscreen, bool delay_report) OVERRIDE; |
376 virtual bool IsRectTopmost(const gfx::Rect& rect); | 374 virtual bool IsRectTopmost(const gfx::Rect& rect) OVERRIDE; |
377 virtual int32_t Navigate(const ::ppapi::URLRequestInfoData& request, | 375 virtual int32_t Navigate(const ::ppapi::URLRequestInfoData& request, |
378 const char* target, | 376 const char* target, |
379 bool from_user_action); | 377 bool from_user_action) OVERRIDE; |
380 | 378 |
381 // PPB_Instance_API implementation. | 379 // PPB_Instance_API implementation. |
382 virtual PP_Bool BindGraphics(PP_Instance instance, | 380 virtual PP_Bool BindGraphics(PP_Instance instance, |
383 PP_Resource device) OVERRIDE; | 381 PP_Resource device) OVERRIDE; |
384 virtual PP_Bool IsFullFrame(PP_Instance instance) OVERRIDE; | 382 virtual PP_Bool IsFullFrame(PP_Instance instance) OVERRIDE; |
385 virtual const ::ppapi::ViewData* GetViewData(PP_Instance instance) OVERRIDE; | 383 virtual const ::ppapi::ViewData* GetViewData(PP_Instance instance) OVERRIDE; |
386 virtual PP_Bool FlashIsFullscreen(PP_Instance instance) OVERRIDE; | 384 virtual PP_Bool FlashIsFullscreen(PP_Instance instance) OVERRIDE; |
387 virtual PP_Var GetWindowObject(PP_Instance instance) OVERRIDE; | 385 virtual PP_Var GetWindowObject(PP_Instance instance) OVERRIDE; |
388 virtual PP_Var GetOwnerElementObject(PP_Instance instance) OVERRIDE; | 386 virtual PP_Var GetOwnerElementObject(PP_Instance instance) OVERRIDE; |
389 virtual PP_Var ExecuteScript(PP_Instance instance, | 387 virtual PP_Var ExecuteScript(PP_Instance instance, |
(...skipping 113 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
503 | 501 |
504 // Returns the plugin NPP identifier that this plugin will use to identify | 502 // Returns the plugin NPP identifier that this plugin will use to identify |
505 // itself when making NPObject scripting calls to WebBindings. | 503 // itself when making NPObject scripting calls to WebBindings. |
506 struct _NPP* instanceNPP(); | 504 struct _NPP* instanceNPP(); |
507 | 505 |
508 // Returns the v8::Isolate that was current when this Instance was created. | 506 // Returns the v8::Isolate that was current when this Instance was created. |
509 // This is not inlined so as to avoid an unnecessary header include of v8.h. | 507 // This is not inlined so as to avoid an unnecessary header include of v8.h. |
510 v8::Isolate* GetIsolate() const; | 508 v8::Isolate* GetIsolate() const; |
511 | 509 |
512 private: | 510 private: |
| 511 friend class base::RefCounted<PluginInstanceImpl>; |
513 friend class PpapiUnittest; | 512 friend class PpapiUnittest; |
514 | 513 |
| 514 // Delete should be called by the WebPlugin before this destructor. |
| 515 virtual ~PluginInstanceImpl(); |
| 516 |
515 // Class to record document load notifications and play them back once the | 517 // Class to record document load notifications and play them back once the |
516 // real document loader becomes available. Used only by NaCl instances. | 518 // real document loader becomes available. Used only by NaCl instances. |
517 class NaClDocumentLoader : public WebKit::WebURLLoaderClient { | 519 class NaClDocumentLoader : public WebKit::WebURLLoaderClient { |
518 public: | 520 public: |
519 NaClDocumentLoader(); | 521 NaClDocumentLoader(); |
520 virtual ~NaClDocumentLoader(); | 522 virtual ~NaClDocumentLoader(); |
521 | 523 |
522 void ReplayReceivedData(WebURLLoaderClient* document_loader); | 524 void ReplayReceivedData(WebURLLoaderClient* document_loader); |
523 | 525 |
524 // WebKit::WebURLLoaderClient implementation. | 526 // WebKit::WebURLLoaderClient implementation. |
(...skipping 16 matching lines...) Expand all Loading... |
541 // number of interfaces implemented by PluginInstanceImpl. | 543 // number of interfaces implemented by PluginInstanceImpl. |
542 class GamepadImpl : public ::ppapi::thunk::PPB_Gamepad_API, | 544 class GamepadImpl : public ::ppapi::thunk::PPB_Gamepad_API, |
543 public ::ppapi::Resource { | 545 public ::ppapi::Resource { |
544 public: | 546 public: |
545 explicit GamepadImpl(PluginDelegate* delegate); | 547 explicit GamepadImpl(PluginDelegate* delegate); |
546 // Resource implementation. | 548 // Resource implementation. |
547 virtual ::ppapi::thunk::PPB_Gamepad_API* AsPPB_Gamepad_API() OVERRIDE; | 549 virtual ::ppapi::thunk::PPB_Gamepad_API* AsPPB_Gamepad_API() OVERRIDE; |
548 virtual void Sample(PP_Instance instance, | 550 virtual void Sample(PP_Instance instance, |
549 PP_GamepadsSampleData* data) OVERRIDE; | 551 PP_GamepadsSampleData* data) OVERRIDE; |
550 private: | 552 private: |
| 553 virtual ~GamepadImpl(); |
551 PluginDelegate* delegate_; | 554 PluginDelegate* delegate_; |
552 }; | 555 }; |
553 | 556 |
554 // See the static Create functions above for creating PluginInstanceImpl | 557 // See the static Create functions above for creating PluginInstanceImpl |
555 // objects. This constructor is private so that we can hide the | 558 // objects. This constructor is private so that we can hide the |
556 // PPP_Instance_Combined details while still having 1 constructor to maintain | 559 // PPP_Instance_Combined details while still having 1 constructor to maintain |
557 // for member initialization. | 560 // for member initialization. |
558 PluginInstanceImpl(PluginDelegate* delegate, | 561 PluginInstanceImpl(PluginDelegate* delegate, |
559 content::RenderView* render_view, | 562 content::RenderView* render_view, |
560 PluginModule* module, | 563 PluginModule* module, |
(...skipping 290 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
851 // Isolate in which this Instance was created when interacting with v8. | 854 // Isolate in which this Instance was created when interacting with v8. |
852 v8::Isolate* isolate_; | 855 v8::Isolate* isolate_; |
853 | 856 |
854 friend class PpapiPluginInstanceTest; | 857 friend class PpapiPluginInstanceTest; |
855 DISALLOW_COPY_AND_ASSIGN(PluginInstanceImpl); | 858 DISALLOW_COPY_AND_ASSIGN(PluginInstanceImpl); |
856 }; | 859 }; |
857 | 860 |
858 } // namespace ppapi | 861 } // namespace ppapi |
859 } // namespace webkit | 862 } // namespace webkit |
860 | 863 |
861 #endif // WEBKIT_PLUGINS_PPAPI_PPAPI_PLUGIN_INSTANCE_IMPL_H_ | 864 #endif // CONTENT_RENDERER_PEPPER_PPAPI_PLUGIN_INSTANCE_IMPL_H_ |
OLD | NEW |