Upstream version 10.39.225.0
[platform/framework/web/crosswalk.git] / src / content / browser / browser_plugin / browser_plugin_embedder.h
index ebd4f87..95ed9b8 100644 (file)
@@ -33,7 +33,6 @@ namespace content {
 
 class BrowserPluginGuest;
 class BrowserPluginGuestManager;
-class BrowserPluginHostFactory;
 class RenderWidgetHostImpl;
 class WebContentsImpl;
 struct NativeWebKeyboardEvent;
@@ -45,35 +44,17 @@ class CONTENT_EXPORT BrowserPluginEmbedder : public WebContentsObserver {
   static BrowserPluginEmbedder* Create(WebContentsImpl* web_contents);
 
   // Returns this embedder's WebContentsImpl.
-  WebContentsImpl* GetWebContents();
+  WebContentsImpl* GetWebContents() const;
 
   // Called when embedder's |rwh| has sent screen rects to renderer.
   void DidSendScreenRects();
 
-  // Called when embedder's WebContentsImpl has unhandled keyboard input.
-  // Returns whether the BrowserPlugin has handled the keyboard event.
-  // Currently we are only interested in checking for the escape key to
-  // unlock hte guest's pointer lock.
-  bool HandleKeyboardEvent(const NativeWebKeyboardEvent& event);
-
-  // Overrides factory for testing. Default (NULL) value indicates regular
-  // (non-test) environment.
-  static void set_factory_for_testing(BrowserPluginHostFactory* factory) {
-    factory_ = factory;
-  }
-
-  // Sets the zoom level for all guests within this embedder.
-  void SetZoomLevel(double level);
-
   // WebContentsObserver implementation.
   virtual bool OnMessageReceived(const IPC::Message& message) OVERRIDE;
 
   void DragSourceEndedAt(int client_x, int client_y, int screen_x,
       int screen_y, blink::WebDragOperation operation);
 
-  void DragSourceMovedTo(int client_x, int client_y,
-                         int screen_x, int screen_y);
-
   void OnUpdateDragCursor(bool* handled);
 
   void DragEnteredGuest(BrowserPluginGuest* guest);
@@ -86,33 +67,29 @@ class CONTENT_EXPORT BrowserPluginEmbedder : public WebContentsObserver {
   // operation, if there's any.
   void SystemDragEnded();
 
+  // Used to handle special keyboard events.
+  bool HandleKeyboardEvent(const NativeWebKeyboardEvent& event);
+
  private:
-  friend class TestBrowserPluginEmbedder;
+  explicit BrowserPluginEmbedder(WebContentsImpl* web_contents);
 
-  BrowserPluginEmbedder(WebContentsImpl* web_contents);
+  BrowserPluginGuestManager* GetBrowserPluginGuestManager() const;
 
-  BrowserPluginGuestManager* GetBrowserPluginGuestManager();
+  void ClearGuestDragStateIfApplicable();
 
-  bool DidSendScreenRectsCallback(BrowserPluginGuest* guest);
+  bool DidSendScreenRectsCallback(WebContents* guest_web_contents);
 
-  bool SetZoomLevelCallback(double level, BrowserPluginGuest* guest);
+  bool SetZoomLevelCallback(double level, WebContents* guest_web_contents);
 
-  bool UnlockMouseIfNecessaryCallback(const NativeWebKeyboardEvent& event,
-                                      BrowserPluginGuest* guest);
+  bool UnlockMouseIfNecessaryCallback(bool* mouse_unlocked, WebContents* guest);
 
   // Message handlers.
-
-  void OnAllocateInstanceID(int request_id);
   void OnAttach(int instance_id,
-                const BrowserPluginHostMsg_Attach_Params& params,
-                const base::DictionaryValue& extra_params);
+                const BrowserPluginHostMsg_Attach_Params& params);
   void OnPluginAtPositionResponse(int instance_id,
                                   int request_id,
                                   const gfx::Point& position);
 
-  // Static factory instance (always NULL for non-test).
-  static BrowserPluginHostFactory* factory_;
-
   // Used to correctly update the cursor when dragging over a guest, and to
   // handle a race condition when dropping onto the guest that started the drag
   // (the race is that the dragend message arrives before the drop message so
@@ -124,6 +101,11 @@ class CONTENT_EXPORT BrowserPluginEmbedder : public WebContentsObserver {
   // status messages to the correct guest.
   base::WeakPtr<BrowserPluginGuest> guest_started_drag_;
 
+  // Keeps track of "dragend" state.
+  bool guest_drag_ending_;
+
+  base::WeakPtrFactory<BrowserPluginEmbedder> weak_ptr_factory_;
+
   DISALLOW_COPY_AND_ASSIGN(BrowserPluginEmbedder);
 };