Index: webkit/plugins/ppapi/ppapi_plugin_instance_impl.h |
=================================================================== |
--- webkit/plugins/ppapi/ppapi_plugin_instance_impl.h (revision 213350) |
+++ webkit/plugins/ppapi/ppapi_plugin_instance_impl.h (working copy) |
@@ -2,14 +2,13 @@ |
// Use of this source code is governed by a BSD-style license that can be |
// found in the LICENSE file. |
-#ifndef WEBKIT_PLUGINS_PPAPI_PPAPI_PLUGIN_INSTANCE_H_ |
-#define WEBKIT_PLUGINS_PPAPI_PPAPI_PLUGIN_INSTANCE_H_ |
+#ifndef WEBKIT_PLUGINS_PPAPI_PPAPI_PLUGIN_INSTANCE_IMPL_H_ |
+#define WEBKIT_PLUGINS_PPAPI_PPAPI_PLUGIN_INSTANCE_IMPL_H_ |
#include <set> |
#include <string> |
#include <vector> |
-#include "base/basictypes.h" |
#include "base/compiler_specific.h" |
#include "base/memory/ref_counted.h" |
#include "base/memory/scoped_ptr.h" |
@@ -24,7 +23,6 @@ |
#include "ppapi/c/dev/ppp_zoom_dev.h" |
#include "ppapi/c/pp_completion_callback.h" |
#include "ppapi/c/pp_instance.h" |
-#include "ppapi/c/pp_resource.h" |
#include "ppapi/c/pp_time.h" |
#include "ppapi/c/pp_var.h" |
#include "ppapi/c/ppb_audio_config.h" |
@@ -53,6 +51,7 @@ |
#include "ui/gfx/rect.h" |
#include "url/gurl.h" |
#include "webkit/plugins/ppapi/plugin_delegate.h" |
+#include "webkit/plugins/ppapi/ppapi_plugin_instance.h" |
#include "webkit/plugins/ppapi/ppp_pdf.h" |
#include "webkit/plugins/webkit_plugins_export.h" |
@@ -62,10 +61,6 @@ |
class SkBitmap; |
class TransportDIB; |
-namespace IPC { |
-struct ChannelHandle; |
-} |
- |
namespace WebKit { |
class WebInputEvent; |
class WebLayer; |
@@ -83,21 +78,10 @@ |
class TextureLayer; |
} |
-namespace content { |
-class RenderView; |
-} |
- |
-namespace gfx { |
-class ImageSkia; |
-} |
- |
namespace ppapi { |
-class PpapiPermissions; |
class Resource; |
-class VarTracker; |
struct InputEventData; |
struct PPP_Instance_Combined; |
-struct URLRequestInfoData; |
} |
namespace ui { |
@@ -125,32 +109,30 @@ |
// |
// Note: to get from a PP_Instance to a PluginInstance*, use the |
// ResourceTracker. |
-class WEBKIT_PLUGINS_EXPORT PluginInstance : |
- public base::RefCounted<PluginInstance>, |
- public base::SupportsWeakPtr<PluginInstance>, |
+class WEBKIT_PLUGINS_EXPORT PluginInstanceImpl : |
+ public base::RefCounted<PluginInstanceImpl>, |
+ public base::SupportsWeakPtr<PluginInstanceImpl>, |
+ public NON_EXPORTED_BASE(PluginInstance), |
public ::ppapi::PPB_Instance_Shared { |
public: |
- // Create and return a PluginInstance object which supports the most recent |
- // version of PPP_Instance possible by querying the given get_plugin_interface |
- // function. If the plugin does not support any valid PPP_Instance interface, |
- // returns NULL. |
- static PluginInstance* Create(PluginDelegate* delegate, |
- content::RenderView* render_view, |
- PluginModule* module, |
- WebKit::WebPluginContainer* container, |
- const GURL& plugin_url); |
+ // Create and return a PluginInstanceImpl object which supports the most |
+ // recent version of PPP_Instance possible by querying the given |
+ // get_plugin_interface function. If the plugin does not support any valid |
+ // PPP_Instance interface, returns NULL. |
+ static PluginInstanceImpl* Create(PluginDelegate* delegate, |
+ content::RenderView* render_view, |
+ PluginModule* module, |
+ WebKit::WebPluginContainer* container, |
+ const GURL& plugin_url); |
// Delete should be called by the WebPlugin before this destructor. |
- virtual ~PluginInstance(); |
+ virtual ~PluginInstanceImpl(); |
PluginDelegate* delegate() const { return delegate_; } |
- content::RenderView* render_view() const {return render_view_; } |
PluginModule* module() const { return module_.get(); } |
MessageChannel& message_channel() { return *message_channel_; } |
WebKit::WebPluginContainer* container() const { return container_; } |
- void set_always_on_top(bool on_top) { always_on_top_ = on_top; } |
- |
// Returns the PP_Instance uniquely identifying this instance. Guaranteed |
// nonzero. |
PP_Instance pp_instance() const { return pp_instance_; } |
@@ -193,7 +175,6 @@ |
void InstanceCrashed(); |
// PPB_Instance and PPB_Instance_Private implementation. |
- const GURL& plugin_url() const { return plugin_url_; } |
bool full_frame() const { return full_frame_; } |
const ::ppapi::ViewData& view_data() const { return view_data_; } |
@@ -301,12 +282,6 @@ |
// state. |
bool FlashIsFullscreenOrPending(); |
- // Switches between fullscreen and normal mode. If |delay_report| is set to |
- // false, it may report the new state through DidChangeView immediately. If |
- // true, it will delay it. When called from the plugin, delay_report should |
- // be true to avoid re-entrancy. |
- void FlashSetFullscreen(bool fullscreen, bool delay_report); |
- |
// Updates |flash_fullscreen_| and sends focus change notification if |
// necessary. |
void UpdateFlashFullscreenState(bool flash_fullscreen); |
@@ -337,21 +312,11 @@ |
// already in fullscreen mode). |
bool SetFullscreen(bool fullscreen); |
- // Implementation of PPB_Flash. |
- int32_t Navigate(const ::ppapi::URLRequestInfoData& request, |
- const char* target, |
- bool from_user_action); |
- bool IsRectTopmost(const gfx::Rect& rect); |
- |
// Implementation of PPP_Messaging. |
void HandleMessage(PP_Var message); |
PluginDelegate::PlatformContext3D* CreateContext3D(); |
- // Returns true iff the plugin is a full-page plugin (i.e. not in an iframe |
- // or embedded in a page). |
- bool IsFullPagePlugin() const; |
- |
// Returns true if the plugin is processing a user gesture. |
bool IsProcessingUserGesture(); |
@@ -389,6 +354,30 @@ |
ContentDecryptorDelegate* GetContentDecryptorDelegate(); |
+ // webkit::ppapi::PluginInstance implementation |
+ content::RenderView* GetRenderView(); |
+ virtual WebKit::WebPluginContainer* GetContainer(); |
+ virtual ::ppapi::VarTracker* GetVarTracker(); |
+ virtual const GURL& GetPluginURL(); |
+ virtual base::FilePath GetModulePath(); |
+ virtual PP_Resource CreateExternalFileReference( |
+ const base::FilePath& external_file_path); |
+ virtual PP_Resource CreateImage(gfx::ImageSkia* source_image, |
+ float scale); |
+ virtual PP_ExternalPluginResult SwitchToOutOfProcessProxy( |
+ const base::FilePath& file_path, |
+ ::ppapi::PpapiPermissions permissions, |
+ const IPC::ChannelHandle& channel_handle, |
+ base::ProcessId plugin_pid, |
+ int plugin_child_id); |
+ virtual void SetAlwaysOnTop(bool on_top); |
+ virtual bool IsFullPagePlugin(); |
+ virtual void FlashSetFullscreen(bool fullscreen, bool delay_report); |
+ virtual bool IsRectTopmost(const gfx::Rect& rect); |
+ virtual int32_t Navigate(const ::ppapi::URLRequestInfoData& request, |
+ const char* target, |
+ bool from_user_action); |
+ |
// PPB_Instance_API implementation. |
virtual PP_Bool BindGraphics(PP_Instance instance, |
PP_Resource device) OVERRIDE; |
@@ -520,29 +509,6 @@ |
// This is not inlined so as to avoid an unnecessary header include of v8.h. |
v8::Isolate* GetIsolate() const; |
- static PluginInstance* Get(PP_Instance instance_id); |
- |
- ::ppapi::VarTracker* GetVarTracker(); |
- |
- // Returns a reference to a file with the given path. |
- // The returned object will have a refcount of 0 (just like "new"). |
- PP_Resource CreateExternalFileReference( |
- const base::FilePath& external_file_path); |
- |
- // Creates a PPB_ImageData given a Skia image. |
- PP_Resource CreateImage(gfx::ImageSkia* source_image, float scale); |
- |
- // Returns the location of this module. |
- base::FilePath GetModulePath(); |
- |
- // Switches this instance with one that uses the out of process IPC proxy. |
- PP_ExternalPluginResult SwitchToOutOfProcessProxy( |
- const base::FilePath& file_path, |
- ::ppapi::PpapiPermissions permissions, |
- const IPC::ChannelHandle& channel_handle, |
- base::ProcessId plugin_pid, |
- int plugin_child_id); |
- |
private: |
friend class PpapiUnittest; |
@@ -572,7 +538,7 @@ |
}; |
// Implements PPB_Gamepad_API. This is just to avoid having an excessive |
- // number of interfaces implemented by PluginInstance. |
+ // number of interfaces implemented by PluginInstanceImpl. |
class GamepadImpl : public ::ppapi::thunk::PPB_Gamepad_API, |
public ::ppapi::Resource { |
public: |
@@ -585,16 +551,16 @@ |
PluginDelegate* delegate_; |
}; |
- // See the static Create functions above for creating PluginInstance objects. |
- // This constructor is private so that we can hide the PPP_Instance_Combined |
- // details while still having 1 constructor to maintain for member |
- // initialization. |
- PluginInstance(PluginDelegate* delegate, |
- content::RenderView* render_view, |
- PluginModule* module, |
- ::ppapi::PPP_Instance_Combined* instance_interface, |
- WebKit::WebPluginContainer* container, |
- const GURL& plugin_url); |
+ // See the static Create functions above for creating PluginInstanceImpl |
+ // objects. This constructor is private so that we can hide the |
+ // PPP_Instance_Combined details while still having 1 constructor to maintain |
+ // for member initialization. |
+ PluginInstanceImpl(PluginDelegate* delegate, |
+ content::RenderView* render_view, |
+ PluginModule* module, |
+ ::ppapi::PPP_Instance_Combined* instance_interface, |
+ WebKit::WebPluginContainer* container, |
+ const GURL& plugin_url); |
bool LoadFindInterface(); |
bool LoadInputEventInterface(); |
@@ -720,7 +686,7 @@ |
// already a weak ptr pending (HasWeakPtrs is true), code should update the |
// view_data_ but not send updates. This also allows us to cancel scheduled |
// view change events. |
- base::WeakPtrFactory<PluginInstance> view_change_weak_ptr_factory_; |
+ base::WeakPtrFactory<PluginInstanceImpl> view_change_weak_ptr_factory_; |
// The current device context for painting in 2D and 3D. |
scoped_refptr<PPB_Graphics3D_Impl> bound_graphics_3d_; |
@@ -886,10 +852,10 @@ |
v8::Isolate* isolate_; |
friend class PpapiPluginInstanceTest; |
- DISALLOW_COPY_AND_ASSIGN(PluginInstance); |
+ DISALLOW_COPY_AND_ASSIGN(PluginInstanceImpl); |
}; |
} // namespace ppapi |
} // namespace webkit |
-#endif // WEBKIT_PLUGINS_PPAPI_PPAPI_PLUGIN_INSTANCE_H_ |
+#endif // WEBKIT_PLUGINS_PPAPI_PPAPI_PLUGIN_INSTANCE_IMPL_H_ |