summaryrefslogtreecommitdiffstats
path: root/content/public/browser/render_view_host.h
diff options
context:
space:
mode:
Diffstat (limited to 'content/public/browser/render_view_host.h')
-rw-r--r--content/public/browser/render_view_host.h253
1 files changed, 253 insertions, 0 deletions
diff --git a/content/public/browser/render_view_host.h b/content/public/browser/render_view_host.h
new file mode 100644
index 0000000..df7f6ad
--- /dev/null
+++ b/content/public/browser/render_view_host.h
@@ -0,0 +1,253 @@
+// Copyright (c) 2012 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef CONTENT_PUBLIC_BROWSER_RENDER_VIEW_HOST_H_
+#define CONTENT_PUBLIC_BROWSER_RENDER_VIEW_HOST_H_
+#pragma once
+
+#include "base/values.h"
+#include "content/common/content_export.h"
+#include "content/public/browser/render_widget_host.h"
+#include "content/public/common/page_zoom.h"
+#include "content/public/common/stop_find_action.h"
+#include "third_party/WebKit/Source/WebKit/chromium/public/WebDragOperation.h"
+
+class FilePath;
+class GURL;
+struct WebDropData;
+struct WebPreferences;
+
+namespace content {
+class RenderViewHostDelegate;
+class SessionStorageNamespace;
+class SiteInstance;
+struct CustomContextMenuContext;
+}
+
+namespace gfx {
+class Point;
+}
+
+namespace WebKit {
+struct WebFindOptions;
+struct WebMediaPlayerAction;
+struct WebPluginAction;
+}
+
+// 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 intent of this interface 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.
+//
+// TODO(joi): Move to content namespace.
+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);
+
+ // Downcasts from a RenderWidgetHost to a RenderViewHost. Required
+ // because RenderWidgetHost is a virtual base class.
+ static RenderViewHost* From(RenderWidgetHost* rwh);
+
+ 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;
+
+ // 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;
+
+ // 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;
+
+ // Changes the zoom level for the current main frame.
+ virtual void Zoom(content::PageZoom zoom) = 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;
+};
+
+
+#endif // CONTENT_PUBLIC_BROWSER_RENDER_VIEW_HOST_H_