diff options
Diffstat (limited to 'content/browser/renderer_host/render_view_host.h')
-rw-r--r-- | content/browser/renderer_host/render_view_host.h | 266 |
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 |