Chromium Code Reviews| Index: chrome/browser/renderer_host/render_view_host_delegate.h |
| =================================================================== |
| --- chrome/browser/renderer_host/render_view_host_delegate.h (revision 19909) |
| +++ chrome/browser/renderer_host/render_view_host_delegate.h (working copy) |
| @@ -1,4 +1,4 @@ |
| -// Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. |
| +// Copyright (c) 2009 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. |
| @@ -9,41 +9,45 @@ |
| #include <vector> |
| #include "base/basictypes.h" |
| -#include "base/file_path.h" |
| -#include "base/gfx/rect.h" |
| -#include "base/logging.h" |
| -#include "chrome/common/native_web_keyboard_event.h" |
| -#include "chrome/common/renderer_preferences.h" |
| +#include "base/string16.h" |
| #include "net/base/load_states.h" |
| -#include "webkit/glue/password_form.h" |
| -#include "webkit/glue/webpreferences.h" |
| #include "webkit/glue/window_open_disposition.h" |
| class AutofillForm; |
| +struct ContextMenuParams; |
| +class FilePath; |
| +class GURL; |
| +struct NativeWebKeyboardEvent; |
| class NavigationEntry; |
| class Profile; |
| +struct RendererPreferences; |
| class RenderProcessHost; |
| class RenderViewHost; |
| class ResourceRequestDetails; |
| class SkBitmap; |
| class TabContents; |
| -class WebKeyboardEvent; |
| struct ThumbnailScore; |
| -struct ContextMenuParams; |
| struct ViewHostMsg_DidPrintPage_Params; |
| struct ViewHostMsg_FrameNavigate_Params; |
| struct WebDropData; |
| +class WebKeyboardEvent; |
| +struct WebPreferences; |
| namespace base { |
| class WaitableEvent; |
| } |
| +namespace gfx { |
| +class Rect; |
| +} |
| + |
| namespace IPC { |
| class Message; |
| } |
| namespace webkit_glue { |
| class AutofillForm; |
| +struct PasswordForm; |
| struct WebApplicationInfo; |
| } |
| @@ -153,74 +157,76 @@ |
| int32 status) = 0; |
| }; |
| - // Returns the current delegate associated with a feature. May be NULL. |
| - virtual View* GetViewDelegate() const { return NULL; } |
| - virtual Save* GetSaveDelegate() const { return NULL; } |
| + // Returns the current delegate associated with a feature. May return NULL if |
| + // there is no corresponding delegate. |
| + virtual View* GetViewDelegate() const = 0; |
| + virtual Save* GetSaveDelegate() const = 0; |
| // Gets the URL that is currently being displayed, if there is one. |
| virtual const GURL& GetURL() const = 0; |
| - // Return this object cast to a TabContents, if it is one. |
| - virtual TabContents* GetAsTabContents() { return NULL; } |
| + // Return this object cast to a TabContents, if it is one. If the object is |
| + // not a TabContents, returns NULL. |
| + virtual TabContents* GetAsTabContents() = 0; |
| // The RenderView is being constructed (message sent to the renderer process |
| // to construct a RenderView). Now is a good time to send other setup events |
| // to the RenderView. This precedes any other commands to the RenderView. |
| - virtual void RenderViewCreated(RenderViewHost* render_view_host) { } |
|
Aaron Boodman
2009/07/04 16:42:25
Why change this to require an implementation of ev
|
| + virtual void RenderViewCreated(RenderViewHost* render_view_host) = 0; |
| // The RenderView has been constructed. |
| - virtual void RenderViewReady(RenderViewHost* render_view_host) { } |
| + virtual void RenderViewReady(RenderViewHost* render_view_host) = 0; |
| // The RenderView died somehow (crashed or was killed by the user). |
| - virtual void RenderViewGone(RenderViewHost* render_view_host) { } |
| + virtual void RenderViewGone(RenderViewHost* render_view_host) = 0; |
| // The RenderView was navigated to a different page. |
| virtual void DidNavigate(RenderViewHost* render_view_host, |
| - const ViewHostMsg_FrameNavigate_Params& params) { } |
| + const ViewHostMsg_FrameNavigate_Params& params) = 0; |
| // The state for the page changed and should be updated. |
| virtual void UpdateState(RenderViewHost* render_view_host, |
| int32 page_id, |
| - const std::string& state) { } |
| + const std::string& state) = 0; |
| // The page's title was changed and should be updated. |
| virtual void UpdateTitle(RenderViewHost* render_view_host, |
| int32 page_id, |
| - const std::wstring& title) { } |
| + const std::wstring& title) = 0; |
| // The page's encoding was changed and should be updated. |
| virtual void UpdateEncoding(RenderViewHost* render_view_host, |
| - const std::wstring& encoding) { } |
| + const std::wstring& encoding) = 0; |
| // The destination URL has changed should be updated |
| - virtual void UpdateTargetURL(int32 page_id, const GURL& url) { } |
| + virtual void UpdateTargetURL(int32 page_id, const GURL& url) = 0; |
| // The thumbnail representation of the page changed and should be updated. |
| virtual void UpdateThumbnail(const GURL& url, |
| const SkBitmap& bitmap, |
| - const ThumbnailScore& score) { } |
| + const ThumbnailScore& score) = 0; |
| // Inspector settings were changes and should be persisted. |
| - virtual void UpdateInspectorSettings(const std::wstring& raw_settings) { } |
| + virtual void UpdateInspectorSettings(const std::wstring& raw_settings) = 0; |
| // The page is trying to close the RenderView's representation in the client. |
| - virtual void Close(RenderViewHost* render_view_host) { } |
| + virtual void Close(RenderViewHost* render_view_host) = 0; |
| // The page is trying to move the RenderView's representation in the client. |
| - virtual void RequestMove(const gfx::Rect& new_bounds) { } |
| + virtual void RequestMove(const gfx::Rect& new_bounds) = 0; |
| // The RenderView began loading a new page. This corresponds to WebKit's |
| // notion of the throbber starting. |
| - virtual void DidStartLoading(RenderViewHost* render_view_host) { } |
| + virtual void DidStartLoading(RenderViewHost* render_view_host) = 0; |
| // The RenderView stopped loading a page. This corresponds to WebKit's |
| // notion of the throbber stopping. |
| - virtual void DidStopLoading(RenderViewHost* render_view_host) { } |
| + virtual void DidStopLoading(RenderViewHost* render_view_host) = 0; |
| // The RenderView is starting a provisional load. |
| virtual void DidStartProvisionalLoadForFrame(RenderViewHost* render_view_host, |
| bool is_main_frame, |
| - const GURL& url) { } |
| + const GURL& url) = 0; |
| // Notification by the resource loading system (not the renderer) that it has |
| // started receiving a resource response. This is different than |
| @@ -230,12 +236,12 @@ |
| // |
| // The pointer ownership is NOT transferred. |
| virtual void DidStartReceivingResourceResponse( |
| - ResourceRequestDetails* details) {} |
| + ResourceRequestDetails* details) = 0; |
| // Sent when a provisional load is redirected. |
| virtual void DidRedirectProvisionalLoad(int32 page_id, |
| const GURL& source_url, |
| - const GURL& target_url) { } |
| + const GURL& target_url) = 0; |
| // Notification by the resource loading system (not the renderer) that a |
| // resource was redirected. This is different than DidRedirectProvisionalLoad |
| @@ -244,7 +250,7 @@ |
| // navigations. |
| // |
| // The pointer ownership is NOT transferred. |
| - virtual void DidRedirectResource(ResourceRequestDetails* details) {} |
| + virtual void DidRedirectResource(ResourceRequestDetails* details) = 0; |
| // The RenderView loaded a resource from an in-memory cache. |
| // |security_info| contains the security info if this resource was originally |
| @@ -253,7 +259,7 @@ |
| const GURL& url, |
| const std::string& frame_origin, |
| const std::string& main_frame_origin, |
| - const std::string& security_info) { } |
| + const std::string& security_info) = 0; |
| // The RenderView failed a provisional load with an error. |
| virtual void DidFailProvisionalLoadWithError( |
| @@ -261,11 +267,11 @@ |
| bool is_main_frame, |
| int error_code, |
| const GURL& url, |
| - bool showing_repost_interstitial) { } |
| + bool showing_repost_interstitial) = 0; |
| // The URL for the FavIcon of a page has changed. |
| virtual void UpdateFavIconURL(RenderViewHost* render_view_host, |
| - int32 page_id, const GURL& icon_url) { } |
| + int32 page_id, const GURL& icon_url) = 0; |
| // An image that was requested to be downloaded by DownloadImage has |
| // completed. |
| @@ -273,51 +279,49 @@ |
| int id, |
| const GURL& image_url, |
| bool errored, |
| - const SkBitmap& image) { } |
| + const SkBitmap& image) = 0; |
| // The page wants to open a URL with the specified disposition. |
| virtual void RequestOpenURL(const GURL& url, |
| const GURL& referrer, |
| - WindowOpenDisposition disposition) { } |
| + WindowOpenDisposition disposition) = 0; |
| // A DOM automation operation completed. The result of the operation is |
| // expressed in a json string. |
| virtual void DomOperationResponse(const std::string& json_string, |
| - int automation_id) { } |
| + int automation_id) = 0; |
| // A message was sent from HTML-based UI. |
| // By default we ignore such messages. |
| virtual void ProcessDOMUIMessage(const std::string& message, |
| const std::string& content, |
| int request_id, |
| - bool has_callback) { } |
| + bool has_callback) = 0; |
| // A message for external host. By default we ignore such messages. |
| // |receiver| can be a receiving script and |message| is any |
| // arbitrary string that makes sense to the receiver. |
| virtual void ProcessExternalHostMessage(const std::string& message, |
| const std::string& origin, |
| - const std::string& target) { |
| - } |
| + const std::string& target) = 0; |
| - // A document has been loaded in a frame. |
| - virtual void DocumentLoadedInFrame() { |
| - } |
| + // Notification that a document has been loaded in a frame. |
| + virtual void DocumentLoadedInFrame() = 0; |
| // Navigate to the history entry for the given offset from the current |
| // position within the NavigationController. Makes no change if offset is |
| // not valid. |
| - virtual void GoToEntryAtOffset(int offset) { } |
| + virtual void GoToEntryAtOffset(int offset) = 0; |
| // The page requests the size of the back and forward lists |
| // within the NavigationController. |
| virtual void GetHistoryListCount(int* back_list_count, |
| - int* forward_list_count) { } |
| + int* forward_list_count) = 0; |
| // A file chooser should be shown. |
| virtual void RunFileChooser(bool multiple_files, |
| const string16& title, |
| - const FilePath& default_file) { } |
| + const FilePath& default_file) = 0; |
| // A javascript message, confirmation or prompt should be shown. |
| virtual void RunJavaScriptMessage(const std::wstring& message, |
| @@ -325,24 +329,21 @@ |
| const GURL& frame_url, |
| const int flags, |
| IPC::Message* reply_msg, |
| - bool* did_suppress_message) { } |
| + bool* did_suppress_message) = 0; |
| virtual void RunBeforeUnloadConfirm(const std::wstring& message, |
| - IPC::Message* reply_msg) { } |
| + IPC::Message* reply_msg) = 0; |
| - // Display this RenderViewHost in a modal fashion. |
| - virtual void RunModal(IPC::Message* reply_msg) { } |
| - |
| virtual void ShowModalHTMLDialog(const GURL& url, int width, int height, |
| const std::string& json_arguments, |
| - IPC::Message* reply_msg) { } |
| + IPC::Message* reply_msg) = 0; |
| // Password forms have been detected in the page. |
| virtual void PasswordFormsSeen( |
| - const std::vector<webkit_glue::PasswordForm>& forms) { } |
| + const std::vector<webkit_glue::PasswordForm>& forms) = 0; |
| // Forms fillable by autofill have been detected in the page. |
| - virtual void AutofillFormSubmitted(const webkit_glue::AutofillForm& form) { } |
| + virtual void AutofillFormSubmitted(const webkit_glue::AutofillForm& form) = 0; |
| // Called to retrieve a list of suggestions from the web database given |
| // the name of the field |field_name| and what the user has already typed in |
| @@ -353,118 +354,112 @@ |
| virtual void GetAutofillSuggestions(const std::wstring& field_name, |
| const std::wstring& user_text, |
| int64 node_id, |
| - int request_id) { } |
| + int request_id) = 0; |
| // Called when the user has indicated that she wants to remove the specified |
| // autofill suggestion from the database. |
| virtual void RemoveAutofillEntry(const std::wstring& field_name, |
| - const std::wstring& value) { } |
| + const std::wstring& value) = 0; |
| // Notification that the page has an OpenSearch description document. |
| virtual void PageHasOSDD(RenderViewHost* render_view_host, |
| int32 page_id, const GURL& doc_url, |
| - bool autodetected) { } |
| + bool autodetected) = 0; |
| // Notification that the render view has calculated the number of printed |
| // pages. |
| - virtual void DidGetPrintedPagesCount(int cookie, int number_pages) { |
| - NOTREACHED(); |
| - } |
| + virtual void DidGetPrintedPagesCount(int cookie, int number_pages) = 0; |
| // Notification that the render view is done rendering one printed page. This |
| // call is synchronous, the renderer is waiting on us because of the EMF |
| // memory mapped data. |
| - virtual void DidPrintPage(const ViewHostMsg_DidPrintPage_Params& params) { |
| - NOTREACHED(); |
| - } |
| + virtual void DidPrintPage(const ViewHostMsg_DidPrintPage_Params& params) = 0; |
| // |url| is assigned to a server that can provide alternate error pages. If |
| - // unchanged, just use the error pages built into our webkit. |
| - virtual GURL GetAlternateErrorPageURL() const { |
| - return GURL(); |
| - } |
| + // the returned URL is empty, the default error page built into WebKit will |
| + // be used. |
| + virtual GURL GetAlternateErrorPageURL() const = 0; |
| // Return a dummy RendererPreferences object that will be used by the renderer |
| // associated with the owning RenderViewHost. |
| - virtual RendererPreferences GetRendererPrefs() const { |
| - return RendererPreferences(); |
| - } |
| + virtual RendererPreferences GetRendererPrefs() const = 0; |
| // Returns a WebPreferences object that will be used by the renderer |
| // associated with the owning render view host. |
| - virtual WebPreferences GetWebkitPrefs() { |
| - NOTREACHED(); |
| - return WebPreferences(); |
| - } |
| + virtual WebPreferences GetWebkitPrefs() = 0; |
| // Notification when default plugin updates status of the missing plugin. |
| - virtual void OnMissingPluginStatus(int status) { } |
| + virtual void OnMissingPluginStatus(int status) = 0; |
| // Notification from the renderer that a plugin instance has crashed. |
| - virtual void OnCrashedPlugin(const FilePath& plugin_path) { } |
| + virtual void OnCrashedPlugin(const FilePath& plugin_path) = 0; |
| // Notification that a worker process has crashed. |
| - virtual void OnCrashedWorker() { } |
| + virtual void OnCrashedWorker() = 0; |
| // Notification from the renderer that JS runs out of memory. |
| - virtual void OnJSOutOfMemory() { } |
| + virtual void OnJSOutOfMemory() = 0; |
| // Notification whether we should close the page, after an explicit call to |
| // AttemptToClosePage. This is called before a cross-site request or before |
| // a tab/window is closed, to allow the appropriate renderer to approve or |
| // deny the request. |proceed| indicates whether the user chose to proceed. |
| - virtual void ShouldClosePage(bool proceed) { } |
| + virtual void ShouldClosePage(bool proceed) = 0; |
| // Called by ResourceDispatcherHost when a response for a pending cross-site |
| // request is received. The ResourceDispatcherHost will pause the response |
| // until the onunload handler of the previous renderer is run. |
| virtual void OnCrossSiteResponse(int new_render_process_host_id, |
| - int new_request_id) { } |
| + int new_request_id) = 0; |
| - // Whether this object can be blurred through a javascript |
| - // obj.blur() call. ConstrainedWindows shouldn't be able to be |
| - // blurred. |
| - virtual bool CanBlur() const { return true; } |
| + // Called the ResourceDispatcherHost's associate CrossSiteRequestHandler |
| + // when a cross-site navigation has been canceled. |
| + virtual void OnCrossSiteNavigationCanceled() = 0; |
| + // Returns true if this this object can be blurred through a javascript |
| + // obj.blur() call. ConstrainedWindows shouldn't be able to be blurred, but |
| + // generally most other windows will be. |
| + virtual bool CanBlur() const = 0; |
| + |
| // Return the rect where to display the resize corner, if any, otherwise |
| // an empty rect. |
| - virtual gfx::Rect GetRootWindowResizerRect() const { return gfx::Rect(); } |
| + virtual gfx::Rect GetRootWindowResizerRect() const = 0; |
| // Notification that the renderer has become unresponsive. The |
| // delegate can use this notification to show a warning to the user. |
| virtual void RendererUnresponsive(RenderViewHost* render_view_host, |
| - bool is_during_unload) { } |
| + bool is_during_unload) = 0; |
| // Notification that a previously unresponsive renderer has become |
| // responsive again. The delegate can use this notification to end the |
| // warning shown to the user. |
| - virtual void RendererResponsive(RenderViewHost* render_view_host) { } |
| + virtual void RendererResponsive(RenderViewHost* render_view_host) = 0; |
| // Notification that the RenderViewHost's load state changed. |
| - virtual void LoadStateChanged(const GURL& url, net::LoadState load_state) { } |
| + virtual void LoadStateChanged(const GURL& url, net::LoadState load_state) = 0; |
| // Notification that a request for install info has completed. |
| virtual void OnDidGetApplicationInfo( |
| int32 page_id, |
| - const webkit_glue::WebApplicationInfo& app_info) { } |
| + const webkit_glue::WebApplicationInfo& app_info) = 0; |
| // Notification the user has made a gesture while focus was on the |
| // page. This is used to avoid uninitiated user downloads (aka carpet |
| // bombing), see DownloadRequestManager for details. |
| - virtual void OnUserGesture() { } |
| + virtual void OnUserGesture() = 0; |
| - // If this view is used to host an external tab container. |
| - virtual bool IsExternalTabContainer() const { return false; } |
| + // Returns true if this view is used to host an external tab container. |
| + virtual bool IsExternalTabContainer() const = 0; |
| // A find operation in the current page completed. |
| virtual void OnFindReply(int request_id, |
| int number_of_matches, |
| const gfx::Rect& selection_rect, |
| int active_match_ordinal, |
| - bool final_update) { } |
| + bool final_update) = 0; |
| // The RenderView has inserted one css file into page. |
| - virtual void DidInsertCSS() { } |
| + virtual void DidInsertCSS() = 0; |
| }; |
| #endif // CHROME_BROWSER_RENDERER_HOST_RENDER_VIEW_HOST_DELEGATE_H_ |