diff options
Diffstat (limited to 'chromium/content/browser/browser_plugin/browser_plugin_embedder.h')
-rw-r--r-- | chromium/content/browser/browser_plugin/browser_plugin_embedder.h | 69 |
1 files changed, 18 insertions, 51 deletions
diff --git a/chromium/content/browser/browser_plugin/browser_plugin_embedder.h b/chromium/content/browser/browser_plugin/browser_plugin_embedder.h index 107fa618686..3c35bef17a7 100644 --- a/chromium/content/browser/browser_plugin/browser_plugin_embedder.h +++ b/chromium/content/browser/browser_plugin/browser_plugin_embedder.h @@ -33,7 +33,6 @@ namespace content { class BrowserPluginGuest; class BrowserPluginGuestManager; -class BrowserPluginHostFactory; class RenderWidgetHostImpl; class WebContentsImpl; struct NativeWebKeyboardEvent; @@ -44,42 +43,18 @@ class CONTENT_EXPORT BrowserPluginEmbedder : public WebContentsObserver { static BrowserPluginEmbedder* Create(WebContentsImpl* web_contents); - // Returns the RenderViewHost at a point (|x|, |y|) asynchronously via - // |callback|. We need a roundtrip to renderer process to get this - // information. - void GetRenderViewHostAtPosition( - int x, - int y, - const WebContents::GetRenderViewHostCallback& callback); + // Returns this embedder's WebContentsImpl. + 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 void RenderProcessGone(base::TerminationStatus status) OVERRIDE; 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); @@ -88,29 +63,31 @@ class CONTENT_EXPORT BrowserPluginEmbedder : public WebContentsObserver { void StartDrag(BrowserPluginGuest* guest); - void StopDrag(BrowserPluginGuest* guest); - + // Sends EndSystemDrag message to the guest that initiated the last drag/drop + // operation, if there's any. void SystemDragEnded(); private: - friend class TestBrowserPluginEmbedder; - - BrowserPluginEmbedder(WebContentsImpl* web_contents); + explicit BrowserPluginEmbedder(WebContentsImpl* web_contents); - void CleanUp(); + BrowserPluginGuestManager* GetBrowserPluginGuestManager() const; - BrowserPluginGuestManager* GetBrowserPluginGuestManager(); + bool DidSendScreenRectsCallback(WebContents* guest_web_contents); - bool DidSendScreenRectsCallback(BrowserPluginGuest* guest); - - bool SetZoomLevelCallback(double level, BrowserPluginGuest* guest); + bool SetZoomLevelCallback(double level, WebContents* guest_web_contents); bool UnlockMouseIfNecessaryCallback(const NativeWebKeyboardEvent& event, - BrowserPluginGuest* guest); + WebContents* guest); + + // Called by the content embedder when a guest exists with the provided + // |instance_id|. + void OnGuestCallback(int instance_id, + const BrowserPluginHostMsg_Attach_Params& params, + const base::DictionaryValue* extra_params, + WebContents* guest_web_contents); // Message handlers. - void OnAllocateInstanceID(int request_id); void OnAttach(int instance_id, const BrowserPluginHostMsg_Attach_Params& params, const base::DictionaryValue& extra_params); @@ -118,18 +95,6 @@ class CONTENT_EXPORT BrowserPluginEmbedder : public WebContentsObserver { int request_id, const gfx::Point& position); - // Static factory instance (always NULL for non-test). - static BrowserPluginHostFactory* factory_; - - // Map that contains outstanding queries to |GetRenderViewHostAtPosition|. - // We need a roundtrip to the renderer process to retrieve the answer, - // so we store these callbacks until we hear back from the renderer. - typedef std::map<int, WebContents::GetRenderViewHostCallback> - GetRenderViewHostCallbackMap; - GetRenderViewHostCallbackMap pending_get_render_view_callbacks_; - // Next request id for BrowserPluginMsg_PluginAtPositionRequest query. - int next_get_render_view_request_id_; - // 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 @@ -141,6 +106,8 @@ class CONTENT_EXPORT BrowserPluginEmbedder : public WebContentsObserver { // status messages to the correct guest. base::WeakPtr<BrowserPluginGuest> guest_started_drag_; + base::WeakPtrFactory<BrowserPluginEmbedder> weak_ptr_factory_; + DISALLOW_COPY_AND_ASSIGN(BrowserPluginEmbedder); }; |