Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(258)

Unified Diff: content/browser/browser_plugin/browser_plugin_guest.h

Issue 11606005: Browser Plugin: Simplify BrowserPluginGuestHelper (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Merge with ToT Created 8 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: content/browser/browser_plugin/browser_plugin_guest.h
diff --git a/content/browser/browser_plugin/browser_plugin_guest.h b/content/browser/browser_plugin/browser_plugin_guest.h
index 9a93b7048bf1dfaaada8590e800892119199a5fb..99ffbf6eef8d50847178b298348a20ed1e921337 100644
--- a/content/browser/browser_plugin/browser_plugin_guest.h
+++ b/content/browser/browser_plugin/browser_plugin_guest.h
@@ -2,29 +2,21 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-// A BrowserPluginGuest represents the browser side of browser <--> renderer
-// communication. A BrowserPlugin (a WebPlugin) is on the renderer side of
-// browser <--> guest renderer communication. The 'guest' renderer is a
-// <browser> tag.
+// A BrowserPluginGuest is the browser side of a browser <--> embedder
+// renderer channel. A BrowserPlugin (a WebPlugin) is on the embedder
+// renderer side of browser <--> embedder renderer communication.
//
// BrowserPluginGuest lives on the UI thread of the browser process. It has a
// helper, BrowserPluginGuestHelper, which is a RenderViewHostObserver. The
-// helper object receives messages (ViewHostMsg_*) directed at the browser
-// plugin and redirects them to this class. Any messages the embedder might be
-// interested in knowing or modifying about the guest should be listened for
-// here.
+// helper object intercepts messages (ViewHostMsg_*) directed at the browser
+// process and redirects them to this class. Any messages about the guest render
+// process that the embedder might be interested in receiving should be listened
+// for here.
//
-// Since BrowserPlugin is a WebPlugin, we need to provide overridden behaviors
-// for messages like handleInputEvent, updateGeometry. Such messages get
-// routed into BrowserPluginGuest via its embedder (BrowserPluginEmbedder).
-// These are BrowserPluginHost_* messages sent from the BrowserPlugin.
-//
-// BrowserPluginGuest knows about its embedder process. Communication to
-// renderer happens through the embedder process.
-//
-// A BrowserPluginGuest is also associated directly with the WebContents related
-// to the BrowserPlugin. BrowserPluginGuest is a WebContentsDelegate and
-// WebContentsObserver for the WebContents.
+// BrowserPluginGuest is a WebContentsDelegate and WebContentsObserver for the
+// guest WebContents. BrowserPluginGuest operates under the assumption that the
+// guest will be accessible through only one RenderViewHost for the lifetime of
+// the guest WebContents. Thus, cross-process navigation is not supported.
#ifndef CONTENT_BROWSER_BROWSER_PLUGIN_BROWSER_PLUGIN_GUEST_H_
#define CONTENT_BROWSER_BROWSER_PLUGIN_BROWSER_PLUGIN_GUEST_H_
@@ -34,12 +26,14 @@
#include "base/compiler_specific.h"
#include "base/id_map.h"
#include "base/time.h"
+#include "content/port/common/input_event_ack_state.h"
#include "content/public/browser/notification_observer.h"
#include "content/public/browser/notification_registrar.h"
#include "content/public/browser/web_contents_delegate.h"
#include "content/public/browser/web_contents_observer.h"
#include "third_party/WebKit/Source/WebKit/chromium/public/WebDragStatus.h"
#include "third_party/WebKit/Source/WebKit/chromium/public/WebDragOperation.h"
+#include "third_party/WebKit/Source/WebKit/chromium/public/WebInputEvent.h"
#include "ui/gfx/rect.h"
#include "ui/surface/transport_dib.h"
@@ -131,6 +125,8 @@ class CONTENT_EXPORT BrowserPluginGuest : public NotificationObserver,
virtual void RenderViewReady() OVERRIDE;
virtual void RenderViewGone(base::TerminationStatus status) OVERRIDE;
+ virtual bool OnMessageReceived(const IPC::Message& message) OVERRIDE;
+
// WebContentsDelegate implementation.
virtual bool CanDownload(RenderViewHost* render_view_host,
@@ -143,31 +139,9 @@ class CONTENT_EXPORT BrowserPluginGuest : public NotificationObserver,
const FileChooserParams& params) OVERRIDE;
virtual bool ShouldFocusPageAfterCrash() OVERRIDE;
- void UpdateRect(RenderViewHost* render_view_host,
- const ViewHostMsg_UpdateRect_Params& params);
void UpdateRectACK(
- int message_id,
const BrowserPluginHostMsg_AutoSize_Params& auto_size_params,
const BrowserPluginHostMsg_ResizeGuest_Params& resize_guest_params);
- // Overrides default ShowWidget message so we show them on the correct
- // coordinates.
- void ShowWidget(RenderViewHost* render_view_host,
- int route_id,
- const gfx::Rect& initial_pos);
- // On MacOSX popups are painted by the browser process. We handle them here
- // so that they are positioned correctly.
-#if defined(OS_MACOSX)
- void ShowPopup(RenderViewHost* render_view_host,
- const ViewHostMsg_ShowPopup_Params& params);
-#endif
- void SetCursor(const WebCursor& cursor);
- // Handles input event acks so they are sent to browser plugin host (via
- // embedder) instead of default view/widget host.
- void HandleInputEventAck(RenderViewHost* render_view_host, bool handled);
-
- // The guest needs to notify the plugin in the embedder to start (or stop)
- // accepting touch events.
- void SetIsAcceptingTouchEvents(bool accept);
// The guest WebContents is visible if both its embedder is visible and
// the browser plugin element is visible. If either one is not then the
@@ -201,12 +175,6 @@ class CONTENT_EXPORT BrowserPluginGuest : public NotificationObserver,
const BrowserPluginHostMsg_AutoSize_Params& auto_size_params,
const BrowserPluginHostMsg_ResizeGuest_Params& resize_guest_params);
- // Updates the cursor during dragging.
- // During dragging, if the guest notifies to update the cursor for a drag,
- // then it is necessary to route the cursor update to the embedder correctly
- // so that the cursor updates properly.
- void UpdateDragCursor(WebKit::WebDragOperation operation);
-
// Exposes the protected web_contents() from WebContentsObserver.
WebContents* GetWebContents();
@@ -225,7 +193,6 @@ class CONTENT_EXPORT BrowserPluginGuest : public NotificationObserver,
const gfx::Rect& guest_window_rect,
const gfx::Rect& guest_screen_rect,
const WebKit::WebInputEvent& event);
- virtual bool ViewTakeFocus(bool reverse);
// If possible, navigate the guest to |relative_index| entries away from the
// current navigation entry.
virtual void Go(int relative_index);
@@ -279,6 +246,25 @@ class CONTENT_EXPORT BrowserPluginGuest : public NotificationObserver,
bool is_top_level);
bool InAutoSizeBounds(const gfx::Size& size) const;
+
+ // Message handlers.
+
+ void OnHandleInputEventAck(
+ WebKit::WebInputEvent::Type event_type,
+ InputEventAckState ack_result);
+ void OnHasTouchEventHandlers(bool accept);
+ void OnSetCursor(const WebCursor& cursor);
+ // On MacOSX popups are painted by the browser process. We handle them here
+ // so that they are positioned correctly.
+#if defined(OS_MACOSX)
+ void OnShowPopup(const ViewHostMsg_ShowPopup_Params& params);
+#endif
+ void OnShowWidget(int route_id, const gfx::Rect& initial_pos);
+ // Overriden in tests
+ virtual void OnTakeFocus(bool reverse);
+ void OnUpdateDragCursor(WebKit::WebDragOperation operation);
+ void OnUpdateRect(const ViewHostMsg_UpdateRect_Params& params);
+
// Static factory instance (always NULL for non-test).
static content::BrowserPluginHostFactory* factory_;
@@ -296,8 +282,6 @@ class CONTENT_EXPORT BrowserPluginGuest : public NotificationObserver,
float damage_buffer_scale_factor_;
gfx::Rect guest_window_rect_;
gfx::Rect guest_screen_rect_;
- IDMap<RenderViewHost> pending_updates_;
- int pending_update_counter_;
base::TimeDelta guest_hang_timeout_;
bool focused_;
bool visible_;

Powered by Google App Engine
This is Rietveld 408576698