Upstream version 10.39.225.0
[platform/framework/web/crosswalk.git] / src / content / renderer / browser_plugin / browser_plugin.h
index ee606a1..11f7661 100644 (file)
 #include "base/memory/scoped_ptr.h"
 #include "base/memory/weak_ptr.h"
 #include "base/sequenced_task_runner_helpers.h"
-#include "content/renderer/browser_plugin/browser_plugin_bindings.h"
 #include "content/renderer/mouse_lock_dispatcher.h"
 #include "content/renderer/render_view_impl.h"
 #include "third_party/WebKit/public/web/WebCompositionUnderline.h"
 #include "third_party/WebKit/public/web/WebDragStatus.h"
+#include "third_party/WebKit/public/web/WebNode.h"
 #include "third_party/WebKit/public/web/WebWidget.h"
 
 struct BrowserPluginHostMsg_ResizeGuest_Params;
-struct BrowserPluginMsg_UpdateRect_Params;
 struct FrameMsg_BuffersSwapped_Params;
 
 namespace content {
 
+class BrowserPluginDelegate;
 class ChildFrameCompositingHelper;
 class BrowserPluginManager;
 class MockBrowserPlugin;
@@ -31,10 +31,13 @@ class CONTENT_EXPORT BrowserPlugin :
     NON_EXPORTED_BASE(public blink::WebPlugin),
     public MouseLockDispatcher::LockTarget {
  public:
+  static BrowserPlugin* GetFromNode(blink::WebNode& node);
+
   RenderViewImpl* render_view() const { return render_view_.get(); }
   int render_view_routing_id() const { return render_view_routing_id_; }
-  int guest_instance_id() const { return guest_instance_id_; }
+  int browser_plugin_instance_id() const { return browser_plugin_instance_id_; }
   bool attached() const { return attached_; }
+  bool ready() const { return attached_ || attach_pending_; }
   BrowserPluginManager* browser_plugin_manager() const {
     return browser_plugin_manager_.get();
   }
@@ -45,44 +48,26 @@ class CONTENT_EXPORT BrowserPlugin :
   // |attribute_value|.
   void UpdateDOMAttribute(const std::string& attribute_name,
                           const std::string& attribute_value);
-  // Remove the DOM Node attribute with the name |attribute_name|.
-  void RemoveDOMAttribute(const std::string& attribute_name);
-  // Get Browser Plugin's DOM Node attribute |attribute_name|'s value.
-  std::string GetDOMAttributeValue(const std::string& attribute_name) const;
-  // Checks if the attribute |attribute_name| exists in the DOM.
-  bool HasDOMAttribute(const std::string& attribute_name) const;
-
-  // Get the allowtransparency attribute value.
-  bool GetAllowTransparencyAttribute() const;
-  // Parse the allowtransparency attribute and adjust transparency of
-  // BrowserPlugin accordingly.
-  void ParseAllowTransparencyAttribute();
-
-  // Get the guest's DOMWindow proxy.
-  NPObject* GetContentWindow() const;
 
   // Returns whether the guest process has crashed.
   bool guest_crashed() const { return guest_crashed_; }
-  // Returns whether this BrowserPlugin has allocated an instance ID.
-  bool HasGuestInstanceID() const;
 
   // Informs the guest of an updated focus state.
   void UpdateGuestFocusState();
+
   // Indicates whether the guest should be focused.
   bool ShouldGuestBeFocused() const;
 
   // Embedder's device scale factor changed, we need to update the guest
   // renderer.
-  void UpdateDeviceScaleFactor(float device_scale_factor);
+  void UpdateDeviceScaleFactor();
 
   // A request to enable hardware compositing.
   void EnableCompositing(bool enable);
 
   // Provided that a guest instance ID has been allocated, this method attaches
-  // this BrowserPlugin instance to that guest. |extra_params| are parameters
-  // passed in by the content embedder to the browser process.
-  void Attach(int guest_instance_id,
-              scoped_ptr<base::DictionaryValue> extra_params);
+  // this BrowserPlugin instance to that guest.
+  void Attach();
 
   // Notify the plugin about a compositor commit so that frame ACKs could be
   // sent, if needed.
@@ -95,8 +80,6 @@ class CONTENT_EXPORT BrowserPlugin :
   virtual blink::WebPluginContainer* container() const OVERRIDE;
   virtual bool initialize(blink::WebPluginContainer* container) OVERRIDE;
   virtual void destroy() OVERRIDE;
-  virtual NPObject* scriptableObject() OVERRIDE;
-  virtual struct _NPP* pluginNPP() OVERRIDE;
   virtual bool supportsKeyboardFocus() const OVERRIDE;
   virtual bool supportsEditCommands() const OVERRIDE;
   virtual bool supportsInputMethod() const OVERRIDE;
@@ -163,11 +146,12 @@ class CONTENT_EXPORT BrowserPlugin :
   // A BrowserPlugin object is a controller that represents an instance of a
   // browser plugin within the embedder renderer process. Once a BrowserPlugin
   // does an initial navigation or is attached to a newly created guest, it
-  // acquires a guest_instance_id as well. The guest instance ID uniquely
-  // identifies a guest WebContents that's hosted by this BrowserPlugin.
+  // acquires a browser_plugin_instance_id as well. The guest instance ID
+  // uniquely identifies a guest WebContents that's hosted by this
+  // BrowserPlugin.
   BrowserPlugin(RenderViewImpl* render_view,
                 blink::WebFrame* frame,
-                bool auto_navigate);
+                scoped_ptr<BrowserPluginDelegate> delegate);
 
   virtual ~BrowserPlugin();
 
@@ -176,74 +160,52 @@ class CONTENT_EXPORT BrowserPlugin :
   gfx::Size plugin_size() const { return plugin_rect_.size(); }
   gfx::Rect plugin_rect() const { return plugin_rect_; }
 
-  // Virtual to allow for mocking in tests.
-  virtual float GetDeviceScaleFactor() const;
+  float GetDeviceScaleFactor() const;
 
   void ShowSadGraphic();
 
   // Populates BrowserPluginHostMsg_ResizeGuest_Params with resize state.
   void PopulateResizeGuestParameters(
-      BrowserPluginHostMsg_ResizeGuest_Params* params,
       const gfx::Size& view_size,
-      bool needs_repaint);
-
-  // Populates ResizeGuest parameters based on the current
-  // autosize state.
-  void GetSizeParams(
-      BrowserPluginHostMsg_ResizeGuest_Params* resize_guest_params,
-      bool needs_repaint);
+      BrowserPluginHostMsg_ResizeGuest_Params* params);
 
   // IPC message handlers.
   // Please keep in alphabetical order.
   void OnAdvanceFocus(int instance_id, bool reverse);
-  void OnAttachACK(int instance_id);
-  void OnBuffersSwapped(int instance_id,
-                        const FrameMsg_BuffersSwapped_Params& params);
+  void OnAttachACK(int browser_plugin_instance_id);
   void OnCompositorFrameSwapped(const IPC::Message& message);
   void OnCopyFromCompositingSurface(int instance_id,
                                     int request_id,
                                     gfx::Rect source_rect,
                                     gfx::Size dest_size);
-  void OnGuestContentWindowReady(int instance_id,
-                                 int content_window_routing_id);
   void OnGuestGone(int instance_id);
+  void OnSetContentsOpaque(int instance_id, bool opaque);
   void OnSetCursor(int instance_id, const WebCursor& cursor);
   void OnSetMouseLock(int instance_id, bool enable);
   void OnShouldAcceptTouchEvents(int instance_id, bool accept);
-  void OnUpdateRect(int instance_id,
-                    const BrowserPluginMsg_UpdateRect_Params& params);
 
-  // This is the browser-process-allocated instance ID that uniquely identifies
-  // a guest WebContents.
-  int guest_instance_id_;
   // This indicates whether this BrowserPlugin has been attached to a
   // WebContents.
   bool attached_;
+  bool attach_pending_;
   const base::WeakPtr<RenderViewImpl> render_view_;
   // We cache the |render_view_|'s routing ID because we need it on destruction.
   // If the |render_view_| is destroyed before the BrowserPlugin is destroyed
   // then we will attempt to access a NULL pointer.
   const int render_view_routing_id_;
   blink::WebPluginContainer* container_;
-  scoped_ptr<BrowserPluginBindings> bindings_;
-  bool paint_ack_received_;
   gfx::Rect plugin_rect_;
   float last_device_scale_factor_;
   // Bitmap for crashed plugin. Lazily initialized, non-owning pointer.
   SkBitmap* sad_guest_;
   bool guest_crashed_;
-  int content_window_routing_id_;
   bool plugin_focused_;
   // Tracks the visibility of the browser plugin regardless of the whole
   // embedder RenderView's visibility.
   bool visible_;
 
-  const bool auto_navigate_;
-  std::string html_string_;
-
   WebCursor cursor_;
 
-  gfx::Size last_view_size_;
   bool mouse_locked_;
 
   // BrowserPlugin outlives RenderViewImpl in Chrome Apps and so we need to
@@ -254,11 +216,16 @@ class CONTENT_EXPORT BrowserPlugin :
   // Used for HW compositing.
   scoped_refptr<ChildFrameCompositingHelper> compositing_helper_;
 
-  // Used to identify the plugin to WebBindings.
-  scoped_ptr<struct _NPP> npp_;
+  // URL for the embedder frame.
+  int browser_plugin_instance_id_;
+
+  // Indicates whether the guest content is opaque.
+  bool contents_opaque_;
 
   std::vector<EditCommand> edit_commands_;
 
+  scoped_ptr<BrowserPluginDelegate> delegate_;
+
   // Weak factory used in v8 |MakeWeak| callback, since the v8 callback might
   // get called after BrowserPlugin has been destroyed.
   base::WeakPtrFactory<BrowserPlugin> weak_ptr_factory_;