summaryrefslogtreecommitdiffstats
path: root/content/browser/renderer_host/render_view_host.h
diff options
context:
space:
mode:
Diffstat (limited to 'content/browser/renderer_host/render_view_host.h')
-rw-r--r--content/browser/renderer_host/render_view_host.h266
1 files changed, 18 insertions, 248 deletions
diff --git a/content/browser/renderer_host/render_view_host.h b/content/browser/renderer_host/render_view_host.h
index e488b39..328fc33 100644
--- a/content/browser/renderer_host/render_view_host.h
+++ b/content/browser/renderer_host/render_view_host.h
@@ -14,17 +14,14 @@
#include "base/memory/scoped_ptr.h"
#include "base/observer_list.h"
#include "base/process_util.h"
-#include "base/values.h"
#include "content/browser/in_process_webkit/session_storage_namespace_impl.h"
#include "content/browser/renderer_host/render_widget_host.h"
#include "content/browser/site_instance_impl.h"
-#include "content/common/content_export.h"
#include "content/public/browser/notification_observer.h"
-#include "content/public/common/stop_find_action.h"
+#include "content/public/browser/render_view_host.h"
#include "content/public/common/window_container_type.h"
#include "net/base/load_states.h"
#include "third_party/WebKit/Source/WebKit/chromium/public/WebConsoleMessage.h"
-#include "third_party/WebKit/Source/WebKit/chromium/public/WebDragOperation.h"
#include "third_party/WebKit/Source/WebKit/chromium/public/WebPopupType.h"
#include "third_party/WebKit/Source/WebKit/chromium/public/WebTextDirection.h"
#include "ui/base/javascript_message_type.h"
@@ -32,8 +29,6 @@
#include "webkit/glue/window_open_disposition.h"
class ChildProcessSecurityPolicyImpl;
-class FilePath;
-class GURL;
class PowerSaveBlocker;
class SessionStorageNamespaceImpl;
class SkBitmap;
@@ -44,41 +39,26 @@ struct ViewHostMsg_CreateWindow_Params;
struct ViewHostMsg_ShowPopup_Params;
struct ViewMsg_Navigate_Params;
struct ViewMsg_StopFinding_Params;
-struct WebDropData;
-struct WebPreferences;
namespace base {
class ListValue;
}
namespace content {
-class RenderViewHostDelegate;
class RenderViewHostObserver;
-class SessionStorageNamespace;
struct FileChooserParams;
struct ContextMenuParams;
-struct CustomContextMenuContext;
struct Referrer;
struct ShowDesktopNotificationHostMsgParams;
}
-namespace gfx {
-class Point;
-} // namespace gfx
-
namespace ui {
class Range;
-} // namespace ui
+}
namespace webkit_glue {
struct WebAccessibility;
-} // namespace webkit_glue
-
-namespace WebKit {
-struct WebFindOptions;
-struct WebMediaPlayerAction;
-struct WebPluginAction;
-} // namespace WebKit
+}
// NotificationObserver used to listen for EXECUTE_JAVASCRIPT_RESULT
// notifications.
@@ -101,206 +81,6 @@ class ExecuteNotificationObserver : public content::NotificationObserver {
DISALLOW_COPY_AND_ASSIGN(ExecuteNotificationObserver);
};
-// TODO(joi): Put relevant bits of RWH documentation here.
-// TODO(joi): Move to content namespace.
-// TODO(joi): Move to separate file under content/public/browser.
-class CONTENT_EXPORT RenderViewHost : virtual public RenderWidgetHost {
- public:
- // Returns the RenderViewHost given its ID and the ID of its render process.
- // Returns NULL if the IDs do not correspond to a live RenderViewHost.
- static RenderViewHost* FromID(int render_process_id, int render_view_id);
-
- virtual ~RenderViewHost() {}
-
- // Tell the render view to enable a set of javascript bindings. The argument
- // should be a combination of values from BindingsPolicy.
- virtual void AllowBindings(int binding_flags) = 0;
-
- // Tells the renderer to clear the focused node (if any).
- virtual void ClearFocusedNode() = 0;
-
- // Causes the renderer to close the current page, including running its
- // onunload event handler. A ClosePage_ACK message will be sent to the
- // ResourceDispatcherHost when it is finished.
- virtual void ClosePage() = 0;
-
- // Copies the image at location x, y to the clipboard (if there indeed is an
- // image at that location).
- virtual void CopyImageAt(int x, int y) = 0;
-
- // Sent to the renderer when a popup window should no longer count against
- // the current popup count (either because it's not a popup or because it was
- // a generated by a user action).
- virtual void DisassociateFromPopupCount() = 0;
-
- // Notifies the renderer about the result of a desktop notification.
- virtual void DesktopNotificationPermissionRequestDone(
- int callback_context) = 0;
- virtual void DesktopNotificationPostDisplay(int callback_context) = 0;
- virtual void DesktopNotificationPostError(int notification_id,
- const string16& message) = 0;
- virtual void DesktopNotificationPostClose(int notification_id,
- bool by_user) = 0;
- virtual void DesktopNotificationPostClick(int notification_id) = 0;
-
- // Notifies the listener that a directory enumeration is complete.
- virtual void DirectoryEnumerationFinished(
- int request_id,
- const std::vector<FilePath>& files) = 0;
-
- // Tells the renderer not to add scrollbars with height and width below a
- // threshold.
- virtual void DisableScrollbarsForThreshold(const gfx::Size& size) = 0;
-
- // Notifies the renderer that a a drag operation that it started has ended,
- // either in a drop or by being cancelled.
- virtual void DragSourceEndedAt(
- int client_x, int client_y, int screen_x, int screen_y,
- WebKit::WebDragOperation operation) = 0;
-
- // Notifies the renderer that a drag and drop operation is in progress, with
- // droppable items positioned over the renderer's view.
- virtual void DragSourceMovedTo(
- int client_x, int client_y, int screen_x, int screen_y) = 0;
-
- // Notifies the renderer that we're done with the drag and drop operation.
- // This allows the renderer to reset some state.
- virtual void DragSourceSystemDragEnded() = 0;
-
- // D&d drop target messages that get sent to WebKit.
- virtual void DragTargetDragEnter(
- const WebDropData& drop_data,
- const gfx::Point& client_pt,
- const gfx::Point& screen_pt,
- WebKit::WebDragOperationsMask operations_allowed) = 0;
- virtual void DragTargetDragOver(
- const gfx::Point& client_pt,
- const gfx::Point& screen_pt,
- WebKit::WebDragOperationsMask operations_allowed) = 0;
- virtual void DragTargetDragLeave() = 0;
- virtual void DragTargetDrop(const gfx::Point& client_pt,
- const gfx::Point& screen_pt) = 0;
-
- // Instructs the RenderView to automatically resize and send back updates
- // for the new size.
- virtual void EnableAutoResize(const gfx::Size& min_size,
- const gfx::Size& max_size) = 0;
-
- // Turns off auto-resize and gives a new size that the view should be.
- virtual void DisableAutoResize(const gfx::Size& new_size) = 0;
-
- // Instructs the RenderView to send back updates to the preferred size.
- virtual void EnablePreferredSizeMode() = 0;
-
- // Executes custom context menu action that was provided from WebKit.
- virtual void ExecuteCustomContextMenuCommand(
- int action, const content::CustomContextMenuContext& context) = 0;
-
- // Tells the renderer to perform the given action on the media player
- // located at the given point.
- virtual void ExecuteMediaPlayerActionAtLocation(
- const gfx::Point& location,
- const WebKit::WebMediaPlayerAction& action) = 0;
-
- // Runs some javascript within the context of a frame in the page.
- virtual void ExecuteJavascriptInWebFrame(const string16& frame_xpath,
- const string16& jscript) = 0;
-
- // Runs some javascript within the context of a frame in the page. The result
- // is sent back via the notification EXECUTE_JAVASCRIPT_RESULT.
- virtual int ExecuteJavascriptInWebFrameNotifyResult(
- const string16& frame_xpath,
- const string16& jscript) = 0;
-
- virtual Value* ExecuteJavascriptAndGetValue(const string16& frame_xpath,
- const string16& jscript) = 0;
-
- // Tells the renderer to perform the given action on the plugin located at
- // the given point.
- virtual void ExecutePluginActionAtLocation(
- const gfx::Point& location, const WebKit::WebPluginAction& action) = 0;
-
- // Asks the renderer to exit fullscreen
- virtual void ExitFullscreen() = 0;
-
- // Finds text on a page.
- virtual void Find(int request_id, const string16& search_text,
- const WebKit::WebFindOptions& options) = 0;
-
- // Causes the renderer to invoke the onbeforeunload event handler. The
- // result will be returned via ViewMsg_ShouldClose. See also ClosePage and
- // SwapOut, which fire the PageUnload event.
- //
- // Set bool for_cross_site_transition when this close is just for the current
- // RenderView in the case of a cross-site transition. False means we're
- // closing the entire tab.
- virtual void FirePageBeforeUnload(bool for_cross_site_transition) = 0;
-
- // Notifies the Listener that one or more files have been chosen by the user
- // from a file chooser dialog for the form. |permissions| are flags from the
- // base::PlatformFileFlags enum which specify which file permissions should
- // be granted to the renderer.
- virtual void FilesSelectedInChooser(const std::vector<FilePath>& files,
- int permissions) = 0;
-
- virtual content::RenderViewHostDelegate* GetDelegate() const = 0;
-
- // Returns a bitwise OR of bindings types that have been enabled for this
- // RenderView. See BindingsPolicy for details.
- virtual int GetEnabledBindings() const = 0;
-
- virtual content::SessionStorageNamespace* GetSessionStorageNamespace() = 0;
-
- virtual content::SiteInstance* GetSiteInstance() const = 0;
-
- // Requests the renderer to evaluate an xpath to a frame and insert css
- // into that frame's document.
- virtual void InsertCSS(const string16& frame_xpath,
- const std::string& css) = 0;
-
- // Returns true if the RenderView is active and has not crashed. Virtual
- // because it is overridden by TestRenderViewHost.
- virtual bool IsRenderViewLive() const = 0;
-
- // Let the renderer know that the menu has been closed.
- virtual void NotifyContextMenuClosed(
- const content::CustomContextMenuContext& context) = 0;
-
- // Notification that a move or resize renderer's containing window has
- // started.
- virtual void NotifyMoveOrResizeStarted() = 0;
-
- // Reloads the current focused frame.
- virtual void ReloadFrame() = 0;
-
- // Sets the alternate error page URL (link doctor) for the renderer process.
- virtual void SetAltErrorPageURL(const GURL& url) = 0;
-
- // Sets a property with the given name and value on the Web UI binding object.
- // Must call AllowWebUIBindings() on this renderer first.
- virtual void SetWebUIProperty(const std::string& name,
- const std::string& value) = 0;
-
- // Set the zoom level for the current main frame
- virtual void SetZoomLevel(double level) = 0;
-
- // Notifies the renderer that the user has closed the FindInPage window
- // (and what action to take regarding the selection).
- virtual void StopFinding(content::StopFindAction action) = 0;
-
- // Send the renderer process the current preferences supplied by the
- // RenderViewHostDelegate.
- virtual void SyncRendererPrefs() = 0;
-
- virtual void ToggleSpeechInput() = 0;
-
- // Passes a list of Webkit preferences to the renderer.
- virtual void UpdateWebkitPreferences(const WebPreferences& prefs) = 0;
-
- // Changes the zoom level for the current main frame.
- virtual void Zoom(content::PageZoom zoom) = 0;
-};
-
#if defined(COMPILER_MSVC)
// RenderViewHostImpl is the bottom of a diamond-shaped hierarchy,
// with RenderWidgetHost at the root. VS warns when methods from the
@@ -313,33 +93,23 @@ class CONTENT_EXPORT RenderViewHost : virtual public RenderWidgetHost {
#pragma warning(disable: 4250)
#endif
+// This implements the RenderViewHost interface that is exposed to
+// embedders of content, and adds things only visible to content.
//
-// RenderViewHostImpl
-//
-// A RenderViewHost is responsible for creating and talking to a RenderView
-// object in a child process. It exposes a high level API to users, for things
-// like loading pages, adjusting the display and other browser functionality,
-// which it translates into IPC messages sent over the IPC channel with the
-// RenderView. It responds to all IPC messages sent by that RenderView and
-// cracks them, calling a delegate object back with higher level types where
-// possible.
+// The exact API of this object needs to be more thoroughly designed. Right
+// now it mimics what TabContents exposed, which is a fairly large API and may
+// contain things that are not relevant to a common subset of views. See also
+// the comment in render_view_host_delegate.h about the size and scope of the
+// delegate API.
//
-// The intent of this class is to provide a view-agnostic communication
-// conduit with a renderer. This is so we can build HTML views not only as
-// TabContents (see TabContents for an example) but also as views, etc.
+// Right now, the concept of page navigation (both top level and frame) exists
+// in the TabContents still, so if you instantiate one of these elsewhere, you
+// will not be able to traverse pages back and forward. We need to determine
+// if we want to bring that and other functionality down into this object so
+// it can be shared by others.
//
-// The exact API of this object needs to be more thoroughly designed. Right
-// now it mimics what TabContents exposed, which is a fairly large API and may
-// contain things that are not relevant to a common subset of views. See also
-// the comment in render_view_host_delegate.h about the size and scope of the
-// delegate API.
-//
-// Right now, the concept of page navigation (both top level and frame) exists
-// in the TabContents still, so if you instantiate one of these elsewhere, you
-// will not be able to traverse pages back and forward. We need to determine
-// if we want to bring that and other functionality down into this object so
-// it can be shared by others.
// TODO(joi): Move to content namespace.
+// TODO(joi): Move to file render_view_host_impl.h/cc
class CONTENT_EXPORT RenderViewHostImpl
: public RenderViewHost,
public RenderWidgetHostImpl {
@@ -419,6 +189,7 @@ class CONTENT_EXPORT RenderViewHostImpl
virtual void ExitFullscreen() OVERRIDE;
virtual void Find(int request_id, const string16& search_text,
const WebKit::WebFindOptions& options) OVERRIDE;
+ virtual void StopFinding(content::StopFindAction action) OVERRIDE;
virtual void FirePageBeforeUnload(bool for_cross_site_transition) OVERRIDE;
virtual void FilesSelectedInChooser(const std::vector<FilePath>& files,
int permissions) OVERRIDE;
@@ -438,11 +209,10 @@ class CONTENT_EXPORT RenderViewHostImpl
virtual void SetWebUIProperty(const std::string& name,
const std::string& value) OVERRIDE;
virtual void SetZoomLevel(double level) OVERRIDE;
- virtual void StopFinding(content::StopFindAction action) OVERRIDE;
+ virtual void Zoom(content::PageZoom zoom) OVERRIDE;
virtual void SyncRendererPrefs() OVERRIDE;
virtual void ToggleSpeechInput() OVERRIDE;
virtual void UpdateWebkitPreferences(const WebPreferences& prefs) OVERRIDE;
- virtual void Zoom(content::PageZoom zoom) OVERRIDE;
void set_delegate(content::RenderViewHostDelegate* d) {
CHECK(d); // http://crbug.com/82827