diff options
author | dominich@chromium.org <dominich@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-05-27 16:24:31 +0000 |
---|---|---|
committer | dominich@chromium.org <dominich@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-05-27 16:24:31 +0000 |
commit | 2fc4da967d96bdbf63c04d0ee1d0371bdd5bbcee (patch) | |
tree | 3270cc66aa81cf0a3afeb82a565faa815dc1ceba | |
parent | 5b6325d8781cbb7b7b703662a4b2b67d620901c0 (diff) | |
download | chromium_src-2fc4da967d96bdbf63c04d0ee1d0371bdd5bbcee.zip chromium_src-2fc4da967d96bdbf63c04d0ee1d0371bdd5bbcee.tar.gz chromium_src-2fc4da967d96bdbf63c04d0ee1d0371bdd5bbcee.tar.bz2 |
Remove old Prerender interface and mark unreachable methods as NOTREACHED()
BUG=none
TEST=PrerenderBrowserTest*
Review URL: http://codereview.chromium.org/7068026
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@87030 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r-- | chrome/browser/prerender/prerender_browsertest.cc | 6 | ||||
-rw-r--r-- | chrome/browser/prerender/prerender_contents.cc | 287 | ||||
-rw-r--r-- | chrome/browser/prerender/prerender_contents.h | 104 | ||||
-rw-r--r-- | chrome/browser/prerender/prerender_final_status.h | 4 | ||||
-rw-r--r-- | chrome/browser/prerender/prerender_manager.cc | 105 | ||||
-rw-r--r-- | chrome/browser/prerender/prerender_manager.h | 3 | ||||
-rw-r--r-- | chrome/browser/prerender/prerender_render_widget_host_view.cc | 306 | ||||
-rw-r--r-- | chrome/browser/prerender/prerender_render_widget_host_view.h | 133 | ||||
-rw-r--r-- | chrome/chrome_browser.gypi | 2 |
9 files changed, 11 insertions, 939 deletions
diff --git a/chrome/browser/prerender/prerender_browsertest.cc b/chrome/browser/prerender/prerender_browsertest.cc index 1c3d9f2..0b6ab15 100644 --- a/chrome/browser/prerender/prerender_browsertest.cc +++ b/chrome/browser/prerender/prerender_browsertest.cc @@ -820,12 +820,6 @@ IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, } IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, PrerenderTaskManager) { - // Early out if we're not using TabContents for Prerendering. - if (!prerender::PrerenderContents::UseTabContents()) { - SUCCEED(); - return; - } - // Show the task manager. This populates the model. browser()->window()->ShowTaskManager(); diff --git a/chrome/browser/prerender/prerender_contents.cc b/chrome/browser/prerender/prerender_contents.cc index 0fc4708..5529a5d 100644 --- a/chrome/browser/prerender/prerender_contents.cc +++ b/chrome/browser/prerender/prerender_contents.cc @@ -10,30 +10,19 @@ #include "base/process_util.h" #include "base/task.h" #include "base/utf_string_conversions.h" -#include "chrome/browser/background_contents_service.h" -#include "chrome/browser/browser_process.h" -#include "chrome/browser/history/history_marshaling.h" #include "chrome/browser/history/history_tab_helper.h" +#include "chrome/browser/history/history_types.h" #include "chrome/browser/prerender/prerender_final_status.h" #include "chrome/browser/prerender/prerender_manager.h" -#include "chrome/browser/prerender/prerender_render_widget_host_view.h" #include "chrome/browser/prerender/prerender_tracker.h" -#include "chrome/browser/profiles/profile.h" -#include "chrome/browser/renderer_preferences_util.h" #include "chrome/browser/ui/download/download_tab_helper.h" #include "chrome/browser/ui/login/login_prompt.h" #include "chrome/browser/ui/tab_contents/tab_contents_wrapper.h" -#include "chrome/common/extensions/extension_constants.h" -#include "chrome/common/extensions/extension_messages.h" #include "chrome/common/icon_messages.h" #include "chrome/common/render_messages.h" #include "chrome/common/url_constants.h" -#include "content/browser/browsing_instance.h" #include "content/browser/renderer_host/render_view_host.h" -#include "content/browser/renderer_host/resource_dispatcher_host.h" #include "content/browser/renderer_host/resource_request_details.h" -#include "content/browser/resource_context.h" -#include "content/browser/site_instance.h" #include "content/browser/tab_contents/tab_contents_delegate.h" #include "content/browser/tab_contents/tab_contents_view.h" #include "content/common/notification_service.h" @@ -133,7 +122,6 @@ PrerenderContents::PrerenderContents(PrerenderManager* prerender_manager, const GURL& referrer) : prerender_manager_(prerender_manager), prerender_tracker_(prerender_tracker), - render_view_host_(NULL), prerender_url_(url), referrer_(referrer), profile_(profile), @@ -150,9 +138,7 @@ PrerenderContents::PrerenderContents(PrerenderManager* prerender_manager, } bool PrerenderContents::Init() { - if (!AddAliasURL(prerender_url_)) - return false; - return true; + return AddAliasURL(prerender_url_); } // static @@ -160,98 +146,8 @@ PrerenderContents::Factory* PrerenderContents::CreateFactory() { return new PrerenderContentsFactoryImpl(); } -void PrerenderContents::StartPrerenderingOld( - const RenderViewHost* source_render_view_host) { - DCHECK(profile_ != NULL); - DCHECK(!prerendering_has_started_); - DCHECK(source_render_view_host != NULL); - DCHECK(source_render_view_host->view() != NULL); - prerendering_has_started_ = true; - SiteInstance* site_instance = SiteInstance::CreateSiteInstance(profile_); - render_view_host_ = new RenderViewHost(site_instance, this, MSG_ROUTING_NONE, - NULL); - - // Register as an observer of the RenderViewHost so we get messages. - render_view_host_observer_.reset( - new PrerenderRenderViewHostObserver(this, render_view_host_mutable())); - - // Create the RenderView, so it can receive messages. - render_view_host_->CreateRenderView(string16()); - - OnRenderViewHostCreated(render_view_host_); - - // Give the RVH a PrerenderRenderWidgetHostView, both so its size can be set - // and so that the prerender can be cancelled under certain circumstances. - PrerenderRenderWidgetHostView* view = - new PrerenderRenderWidgetHostView(render_view_host_, this); - view->Init(source_render_view_host->view()); - - child_id_ = render_view_host_->process()->id(); - route_id_ = render_view_host_->routing_id(); - - // Register this with the PrerenderTracker as a prerendering RenderViewHost. - // This must be done before the Navigate message to catch all resource - // requests. - prerender_tracker_->OnPrerenderingStarted( - child_id_, - route_id_, - prerender_manager_); - - // Close ourselves when the application is shutting down. - notification_registrar_.Add(this, NotificationType::APP_TERMINATING, - NotificationService::AllSources()); - - // Register for our parent profile to shutdown, so we can shut ourselves down - // as well (should only be called for OTR profiles, as we should receive - // APP_TERMINATING before non-OTR profiles are destroyed). - // TODO(tburkard): figure out if this is needed. - notification_registrar_.Add(this, NotificationType::PROFILE_DESTROYED, - Source<Profile>(profile_)); - - // Register to cancel if Authentication is required. - notification_registrar_.Add(this, NotificationType::AUTH_NEEDED, - NotificationService::AllSources()); - - notification_registrar_.Add(this, NotificationType::AUTH_CANCELLED, - NotificationService::AllSources()); - - // Register all responses to see if we should cancel. - notification_registrar_.Add(this, NotificationType::DOWNLOAD_INITIATED, - NotificationService::AllSources()); - - // Register for redirect notifications sourced from |this|. - notification_registrar_.Add( - this, NotificationType::RESOURCE_RECEIVED_REDIRECT, - Source<RenderViewHostDelegate>(GetRenderViewHostDelegate())); - - DCHECK(load_start_time_.is_null()); - load_start_time_ = base::TimeTicks::Now(); - - render_view_host_->Send( - new ViewMsg_SetIsPrerendering(render_view_host_->routing_id(), true)); - - ViewMsg_Navigate_Params params; - params.page_id = -1; - params.pending_history_list_offset = -1; - params.current_history_list_offset = -1; - params.current_history_list_length = 0; - params.url = prerender_url_; - params.transition = PageTransition::LINK; - params.navigation_type = ViewMsg_Navigate_Type::NORMAL; - params.referrer = referrer_; - params.request_time = base::Time::Now(); - - render_view_host_->Navigate(params); -} - void PrerenderContents::StartPrerendering( const RenderViewHost* source_render_view_host) { - if (!UseTabContents()) { - VLOG(1) << "Starting prerendering with LEGACY code"; - StartPrerenderingOld(source_render_view_host); - return; - } - VLOG(1) << "Starting prerendering with NEW code"; DCHECK(profile_ != NULL); DCHECK(!prerendering_has_started_); DCHECK(prerender_contents_.get() == NULL); @@ -385,10 +281,6 @@ PrerenderContents::~PrerenderContents() { if (prerendering_has_started()) RecordFinalStatus(final_status_); - // Only delete the RenderViewHost if we own it. - if (render_view_host_) - render_view_host_->Shutdown(); - if (child_id_ != -1 && route_id_ != -1) prerender_tracker_->OnPrerenderingFinished(child_id_, route_id_); @@ -398,58 +290,6 @@ PrerenderContents::~PrerenderContents() { delete ReleasePrerenderContents(); } -RenderViewHostDelegate::View* PrerenderContents::GetViewDelegate() { - return this; -} - -const GURL& PrerenderContents::GetURL() const { - return url_; -} - -ViewType::Type PrerenderContents::GetRenderViewType() const { - return ViewType::BACKGROUND_CONTENTS; -} - -int PrerenderContents::GetBrowserWindowID() const { - return extension_misc::kUnknownWindowId; -} - -void PrerenderContents::DidNavigate( - RenderViewHost* render_view_host, - const ViewHostMsg_FrameNavigate_Params& params) { - DCHECK_EQ(render_view_host_, render_view_host); - - // We only care when the outer frame changes. - if (!PageTransition::IsMainFrame(params.transition)) - return; - - // Store the navigation params. - navigate_params_.reset(new ViewHostMsg_FrameNavigate_Params()); - *navigate_params_ = params; - - if (!AddAliasURL(params.url)) - return; - - url_ = params.url; -} - -void PrerenderContents::UpdateTitle(RenderViewHost* render_view_host, - int32 page_id, - const std::wstring& title) { - DCHECK_EQ(render_view_host_, render_view_host); - if (title.empty()) - return; - - title_ = WideToUTF16Hack(title); - page_id_ = page_id; -} - -bool PrerenderContents::PreHandleKeyboardEvent( - const NativeWebKeyboardEvent& event, - bool* is_keyboard_shortcut) { - return false; -} - void PrerenderContents::Observe(NotificationType type, const NotificationSource& source, const NotificationDetails& details) { @@ -478,23 +318,6 @@ void PrerenderContents::Observe(NotificationType type, break; } - // TODO(mmenke): Once we get rid of the old RenderViewHost code, remove - // this. - case NotificationType::DOWNLOAD_INITIATED: { - // If the download is started from a RenderViewHost that we are - // delegating, kill the prerender. This cancels any pending requests - // though the download never actually started thanks to the - // DownloadRequestLimiter. - DCHECK(NotificationService::NoDetails() == details); - RenderViewHost* render_view_host = Source<RenderViewHost>(source).ptr(); - CHECK(render_view_host != NULL); - if (render_view_host->delegate() == GetRenderViewHostDelegate()) { - Destroy(FINAL_STATUS_DOWNLOAD); - return; - } - break; - } - case NotificationType::RESOURCE_RECEIVED_REDIRECT: { // RESOURCE_RECEIVED_REDIRECT can come for any resource on a page. // If it's a redirect on the top-level resource, the name needs @@ -559,85 +382,6 @@ void PrerenderContents::Observe(NotificationType type, } } -void PrerenderContents::OnMessageBoxClosed(IPC::Message* reply_msg, - bool success, - const std::wstring& prompt) { - render_view_host_->JavaScriptMessageBoxClosed(reply_msg, success, prompt); -} - -gfx::NativeWindow PrerenderContents::GetMessageBoxRootWindow() { - NOTIMPLEMENTED(); - return NULL; -} - -TabContents* PrerenderContents::AsTabContents() { - return NULL; -} - -ExtensionHost* PrerenderContents::AsExtensionHost() { - return NULL; -} - -void PrerenderContents::UpdateInspectorSetting(const std::string& key, - const std::string& value) { - RenderViewHostDelegateHelper::UpdateInspectorSetting(profile_, key, value); -} - -void PrerenderContents::ClearInspectorSettings() { - RenderViewHostDelegateHelper::ClearInspectorSettings(profile_); -} - -void PrerenderContents::Close(RenderViewHost* render_view_host) { - Destroy(FINAL_STATUS_CLOSED); -} - -RendererPreferences PrerenderContents::GetRendererPrefs( - Profile* profile) const { - RendererPreferences preferences; - renderer_preferences_util::UpdateFromSystemSettings(&preferences, profile); - return preferences; -} - -WebPreferences PrerenderContents::GetWebkitPrefs() { - return RenderViewHostDelegateHelper::GetWebkitPrefs(profile_, - false); // is_web_ui -} - -void PrerenderContents::CreateNewWindow( - int route_id, - const ViewHostMsg_CreateWindow_Params& params) { - // TODO(dominich): Remove when we switch to TabContents. - // Since we don't want to permit child windows that would have a - // window.opener property, terminate prerendering. - Destroy(FINAL_STATUS_CREATE_NEW_WINDOW); -} - -void PrerenderContents::CreateNewWidget(int route_id, - WebKit::WebPopupType popup_type) { - NOTREACHED(); -} - -void PrerenderContents::CreateNewFullscreenWidget(int route_id) { - NOTREACHED(); -} - -void PrerenderContents::ShowCreatedWindow(int route_id, - WindowOpenDisposition disposition, - const gfx::Rect& initial_pos, - bool user_gesture) { - // TODO(tburkard): need to figure out what the correct behavior here is - NOTIMPLEMENTED(); -} - -void PrerenderContents::ShowCreatedWidget(int route_id, - const gfx::Rect& initial_pos) { - NOTIMPLEMENTED(); -} - -void PrerenderContents::ShowCreatedFullscreenWidget(int route_id) { - NOTIMPLEMENTED(); -} - void PrerenderContents::OnRenderViewHostCreated( RenderViewHost* new_render_view_host) { } @@ -761,12 +505,6 @@ void PrerenderContents::Destroy(FinalStatus final_status) { render_view_host_observer_->set_prerender_contents(NULL); } -void PrerenderContents::RendererUnresponsive(RenderViewHost* render_view_host, - bool is_during_unload) { - DCHECK_EQ(render_view_host_, render_view_host); - Destroy(FINAL_STATUS_RENDERER_UNRESPONSIVE); -} - bool PrerenderContents::CanDownload(int request_id) { Destroy(FINAL_STATUS_DOWNLOAD); // Cancel the download. @@ -821,13 +559,9 @@ TabContentsWrapper* PrerenderContents::ReleasePrerenderContents() { } RenderViewHostDelegate* PrerenderContents::GetRenderViewHostDelegate() { - if (UseTabContents()) { - if (!prerender_contents_.get()) - return NULL; - return prerender_contents_->tab_contents(); - } else { - return this; - } + if (!prerender_contents_.get()) + return NULL; + return prerender_contents_->tab_contents(); } RenderViewHost* PrerenderContents::render_view_host_mutable() { @@ -835,14 +569,9 @@ RenderViewHost* PrerenderContents::render_view_host_mutable() { } const RenderViewHost* PrerenderContents::render_view_host() const { - // TODO(mmenke): Replace with simple accessor once TabContents is always - // used. - if (UseTabContents()) { - if (!prerender_contents_.get()) - return NULL; - return prerender_contents_->render_view_host(); - } - return render_view_host_; + if (!prerender_contents_.get()) + return NULL; + return prerender_contents_->render_view_host(); } void PrerenderContents::CommitHistory(TabContentsWrapper* tab) { diff --git a/chrome/browser/prerender/prerender_contents.h b/chrome/browser/prerender/prerender_contents.h index cb6b2dc..221cb85 100644 --- a/chrome/browser/prerender/prerender_contents.h +++ b/chrome/browser/prerender/prerender_contents.h @@ -14,9 +14,7 @@ #include "chrome/browser/prerender/prerender_final_status.h" #include "chrome/browser/prerender/prerender_render_view_host_observer.h" #include "chrome/browser/tab_contents/render_view_host_delegate_helper.h" -#include "chrome/browser/ui/app_modal_dialogs/js_modal_dialog.h" #include "chrome/browser/ui/download/download_tab_helper_delegate.h" -#include "content/browser/renderer_host/render_view_host_delegate.h" #include "content/browser/tab_contents/tab_contents_observer.h" #include "content/common/notification_registrar.h" #include "content/common/window_container_type.h" @@ -47,13 +45,8 @@ class PrerenderTracker; // NavigationController because is has no facility for navigating (other than // programatically view window.location.href) or RenderViewHostManager because // it is never allowed to navigate across a SiteInstance boundary. -// TODO(dominich): Remove RenderViewHostDelegate inheritance when UseTabContents -// returns true by default. -class PrerenderContents : public RenderViewHostDelegate, - public RenderViewHostDelegate::View, - public NotificationObserver, +class PrerenderContents : public NotificationObserver, public TabContentsObserver, - public JavaScriptAppModalDialogDelegate, public DownloadTabHelperDelegate { public: // PrerenderContents::Create uses the currently registered Factory to create @@ -86,8 +79,6 @@ class PrerenderContents : public RenderViewHostDelegate, // prerendering. It must be non-NULL and have its own view. It is used // solely to determine the window bounds while prerendering. virtual void StartPrerendering(const RenderViewHost* source_render_view_host); - virtual void StartPrerenderingOld( - const RenderViewHost* source_render_view_host); // Verifies that the prerendering is not using too many resources, and kills // it if not. @@ -96,12 +87,6 @@ class PrerenderContents : public RenderViewHostDelegate, RenderViewHost* render_view_host_mutable(); const RenderViewHost* render_view_host() const; - // Allows replacing of the RenderViewHost owned by this class, including - // replacing with a NULL value. When a caller uses this, the caller will - // own (and is responsible for freeing) the old RVH. - void set_render_view_host(RenderViewHost* render_view_host) { - render_view_host_ = render_view_host; - } ViewHostMsg_FrameNavigate_Params* navigate_params() { return navigate_params_.get(); } @@ -141,90 +126,14 @@ class PrerenderContents : public RenderViewHostDelegate, std::wstring* prompt_field); virtual void OnRenderViewGone(int status, int exit_code); - // RenderViewHostDelegate implementation. - // TODO(dominich): Remove when RenderViewHostDelegate is removed as a base - // class. - virtual RenderViewHostDelegate::View* GetViewDelegate() OVERRIDE; - virtual const GURL& GetURL() const OVERRIDE; - virtual ViewType::Type GetRenderViewType() const OVERRIDE; - virtual int GetBrowserWindowID() const OVERRIDE; - virtual void DidNavigate( - RenderViewHost* render_view_host, - const ViewHostMsg_FrameNavigate_Params& params) OVERRIDE; - virtual void UpdateTitle(RenderViewHost* render_view_host, - int32 page_id, - const std::wstring& title); - virtual WebPreferences GetWebkitPrefs() OVERRIDE; - virtual void Close(RenderViewHost* render_view_host) OVERRIDE; - virtual RendererPreferences GetRendererPrefs(Profile* profile) const OVERRIDE; - // TabContentsObserver implementation. virtual void DidStopLoading() OVERRIDE; - // RenderViewHostDelegate::View - // TODO(dominich): Remove when no longer a delegate for the view. - virtual void CreateNewWindow( - int route_id, - const ViewHostMsg_CreateWindow_Params& params) OVERRIDE; - virtual void CreateNewWidget(int route_id, - WebKit::WebPopupType popup_type) OVERRIDE; - virtual void CreateNewFullscreenWidget(int route_id) OVERRIDE; - virtual void ShowCreatedWindow(int route_id, - WindowOpenDisposition disposition, - const gfx::Rect& initial_pos, - bool user_gesture) OVERRIDE; - virtual void ShowCreatedWidget(int route_id, - const gfx::Rect& initial_pos) OVERRIDE; - virtual void ShowCreatedFullscreenWidget(int route_id) OVERRIDE; - virtual void ShowContextMenu(const ContextMenuParams& params) OVERRIDE {} - virtual void ShowPopupMenu(const gfx::Rect& bounds, - int item_height, - double item_font_size, - int selected_item, - const std::vector<WebMenuItem>& items, - bool right_aligned) OVERRIDE {} - virtual void StartDragging(const WebDropData& drop_data, - WebKit::WebDragOperationsMask allowed_operations, - const SkBitmap& image, - const gfx::Point& image_offset) OVERRIDE {} - virtual void UpdateDragCursor(WebKit::WebDragOperation operation) OVERRIDE {} - virtual void GotFocus() OVERRIDE {} - virtual void TakeFocus(bool reverse) OVERRIDE {} - virtual void LostCapture() OVERRIDE {} - virtual void Activate() OVERRIDE {} - virtual void Deactivate() OVERRIDE {} - virtual bool PreHandleKeyboardEvent(const NativeWebKeyboardEvent& event, - bool* is_keyboard_shortcut) OVERRIDE; - virtual void HandleKeyboardEvent( - const NativeWebKeyboardEvent& event) OVERRIDE {} - virtual void HandleMouseMove() OVERRIDE {} - virtual void HandleMouseDown() OVERRIDE {} - virtual void HandleMouseLeave() OVERRIDE {} - virtual void HandleMouseUp() OVERRIDE {} - virtual void HandleMouseActivate() OVERRIDE {} - virtual void UpdatePreferredSize(const gfx::Size& new_size) OVERRIDE {} - // NotificationObserver virtual void Observe(NotificationType type, const NotificationSource& source, const NotificationDetails& details) OVERRIDE; - // Overridden from JavaScriptAppModalDialogDelegate: - virtual void OnMessageBoxClosed(IPC::Message* reply_msg, - bool success, - const std::wstring& prompt) OVERRIDE; - virtual void SetSuppressMessageBoxes(bool suppress_message_boxes) OVERRIDE {} - virtual gfx::NativeWindow GetMessageBoxRootWindow() OVERRIDE; - virtual TabContents* AsTabContents() OVERRIDE; - virtual ExtensionHost* AsExtensionHost() OVERRIDE; - - virtual void UpdateInspectorSetting(const std::string& key, - const std::string& value) OVERRIDE; - virtual void ClearInspectorSettings() OVERRIDE; - - virtual void RendererUnresponsive(RenderViewHost* render_view_host, - bool is_during_unload) OVERRIDE; - // DownloadTabHelperDelegate implementation. virtual bool CanDownload(int request_id) OVERRIDE; virtual void OnStartDownload(DownloadItem* download, @@ -247,14 +156,6 @@ class PrerenderContents : public RenderViewHostDelegate, // PrerenderManager's pending deletes list. void Destroy(FinalStatus reason); - // Indicates whether to use the legacy code doing prerendering via - // a RenderViewHost (false), or whether the new TabContents based prerendering - // is to be used (true). - // TODO(cbentzel): Remove once new approach looks stable. - static bool UseTabContents() { - return true; - } - // Applies all the URL history encountered during prerendering to the // new tab. void CommitHistory(TabContentsWrapper* tab); @@ -305,9 +206,6 @@ class PrerenderContents : public RenderViewHostDelegate, // The prerender tracker tracking prerenders. PrerenderTracker* prerender_tracker_; - // The host for our HTML content. - RenderViewHost* render_view_host_; - // Common implementations of some RenderViewHostDelegate::View methods. RenderViewHostDelegateViewHelper delegate_view_helper_; diff --git a/chrome/browser/prerender/prerender_final_status.h b/chrome/browser/prerender/prerender_final_status.h index fc7d0a8..1162d09 100644 --- a/chrome/browser/prerender/prerender_final_status.h +++ b/chrome/browser/prerender/prerender_final_status.h @@ -14,7 +14,7 @@ enum FinalStatus { FINAL_STATUS_TIMED_OUT, FINAL_STATUS_EVICTED, FINAL_STATUS_MANAGER_SHUTDOWN, - FINAL_STATUS_CLOSED, + FINAL_STATUS_CLOSED, // Obsolete FINAL_STATUS_CREATE_NEW_WINDOW, FINAL_STATUS_PROFILE_DESTROYED, FINAL_STATUS_APP_TERMINATING, @@ -24,7 +24,7 @@ enum FinalStatus { FINAL_STATUS_DOWNLOAD, FINAL_STATUS_MEMORY_LIMIT_EXCEEDED, FINAL_STATUS_JS_OUT_OF_MEMORY, - FINAL_STATUS_RENDERER_UNRESPONSIVE, + FINAL_STATUS_RENDERER_UNRESPONSIVE, // Obsolete FINAL_STATUS_TOO_MANY_PROCESSES, FINAL_STATUS_RATE_LIMIT_EXCEEDED, FINAL_STATUS_PENDING_SKIPPED, // Obsolete. diff --git a/chrome/browser/prerender/prerender_manager.cc b/chrome/browser/prerender/prerender_manager.cc index 0aef77d..a18ab64 100644 --- a/chrome/browser/prerender/prerender_manager.cc +++ b/chrome/browser/prerender/prerender_manager.cc @@ -414,114 +414,9 @@ PrerenderContents* PrerenderManager::GetEntry(const GURL& url) { return GetEntryButNotSpecifiedTC(url, NULL); } -bool PrerenderManager::MaybeUsePreloadedPageOld(TabContents* tab_contents, - const GURL& url, - bool has_opener_set) { - DCHECK(CalledOnValidThread()); - scoped_ptr<PrerenderContents> prerender_contents(GetEntry(url)); - if (prerender_contents.get() == NULL) - return false; - - // Do not use the prerendered version if the opener window.property was - // supposed to be set. - if (has_opener_set) { - prerender_contents.release()->Destroy(FINAL_STATUS_WINDOW_OPENER); - return false; - } - - // If we are just in the control group (which can be detected by noticing - // that prerendering hasn't even started yet), record that |tab_contents| now - // would be showing a prerendered contents, but otherwise, don't do anything. - if (!prerender_contents->prerendering_has_started()) { - MarkTabContentsAsWouldBePrerendered(tab_contents); - return false; - } - - int child_id, route_id; - CHECK(prerender_contents->GetChildId(&child_id)); - CHECK(prerender_contents->GetRouteId(&route_id)); - - // Try to set the prerendered page as used, so any subsequent attempts to - // cancel on other threads will fail. If this fails because the prerender - // was already cancelled, possibly on another thread, fail. - if (!prerender_tracker_->TryUse(child_id, route_id)) - return false; - - if (!prerender_contents->load_start_time().is_null()) - RecordTimeUntilUsed(GetCurrentTimeTicks() - - prerender_contents->load_start_time()); - - UMA_HISTOGRAM_COUNTS("Prerender.PrerendersPerSessionCount", - ++prerenders_per_session_count_); - prerender_contents->set_final_status(FINAL_STATUS_USED); - - RenderViewHost* render_view_host = - prerender_contents->render_view_host_mutable(); - prerender_contents->set_render_view_host(NULL); - - // RenderViewHosts in PrerenderContents start out hidden. - // Since we are actually using it now, restore it. - render_view_host->WasRestored(); - render_view_host->Send( - new ViewMsg_SetIsPrerendering(render_view_host->routing_id(), false)); - tab_contents->SwapInRenderViewHost(render_view_host); - MarkTabContentsAsPrerendered(tab_contents); - - // See if we have any pending prerender requests for this routing id and start - // the preload if we do. - std::pair<int, int> child_route_pair = std::make_pair(child_id, route_id); - PendingPrerenderList::iterator pending_it = - pending_prerender_list_.find(child_route_pair); - if (pending_it != pending_prerender_list_.end()) { - for (std::vector<PendingContentsData>::iterator content_it = - pending_it->second.begin(); - content_it != pending_it->second.end(); ++content_it) { - AddPreload(pending_it->first, content_it->url_, content_it->referrer_); - } - pending_prerender_list_.erase(pending_it); - } - - RenderViewHostDelegate* render_view_host_delegate = - static_cast<RenderViewHostDelegate*>(tab_contents); - ViewHostMsg_FrameNavigate_Params* params = - prerender_contents->navigate_params(); - if (params != NULL) - render_view_host_delegate->DidNavigate(render_view_host, *params); - - string16 title = prerender_contents->title(); - if (!title.empty()) { - render_view_host_delegate->UpdateTitle(render_view_host, - prerender_contents->page_id(), - UTF16ToWideHack(title)); - } - - GURL icon_url = prerender_contents->icon_url(); - if (!icon_url.is_empty()) { - std::vector<FaviconURL> urls; - urls.push_back(FaviconURL(icon_url, FaviconURL::FAVICON)); - // TODO(avi): move prerendering to use TCWs; remove this. - TabContentsWrapper* wrapper = - TabContentsWrapper::GetCurrentWrapperForContents(tab_contents); - wrapper->favicon_tab_helper()->OnUpdateFaviconURL( - prerender_contents->page_id(), - urls); - } - - if (prerender_contents->has_stopped_loading()) - render_view_host_delegate->DidStopLoading(); - - return true; -} - bool PrerenderManager::MaybeUsePreloadedPage(TabContents* tab_contents, const GURL& url, bool has_opener_set) { - if (!PrerenderContents::UseTabContents()) { - VLOG(1) << "Checking for prerender with LEGACY code"; - return PrerenderManager::MaybeUsePreloadedPageOld(tab_contents, url, - has_opener_set); - } - VLOG(1) << "Checking for prerender with NEW code"; DCHECK(CalledOnValidThread()); scoped_ptr<PrerenderContents> prerender_contents( GetEntryButNotSpecifiedTC(url, tab_contents)); diff --git a/chrome/browser/prerender/prerender_manager.h b/chrome/browser/prerender/prerender_manager.h index e6f974a..153657d 100644 --- a/chrome/browser/prerender/prerender_manager.h +++ b/chrome/browser/prerender/prerender_manager.h @@ -100,9 +100,6 @@ class PrerenderManager : public base::SupportsWeakPtr<PrerenderManager>, bool MaybeUsePreloadedPage(TabContents* tab_contents, const GURL& url, bool has_opener_set); - bool MaybeUsePreloadedPageOld(TabContents* tab_contents, - const GURL& url, - bool has_opener_set); // Moves a PrerenderContents to the pending delete list from the list of // active prerenders when prerendering should be cancelled. diff --git a/chrome/browser/prerender/prerender_render_widget_host_view.cc b/chrome/browser/prerender/prerender_render_widget_host_view.cc deleted file mode 100644 index f5585de..0000000 --- a/chrome/browser/prerender/prerender_render_widget_host_view.cc +++ /dev/null @@ -1,306 +0,0 @@ -// Copyright (c) 2011 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. - -#include "chrome/browser/prerender/prerender_render_widget_host_view.h" - -#include "base/logging.h" -#include "chrome/browser/prerender/prerender_contents.h" -#include "chrome/browser/prerender/prerender_final_status.h" -#include "content/browser/renderer_host/render_widget_host.h" - -namespace prerender { - -PrerenderRenderWidgetHostView::PrerenderRenderWidgetHostView( - RenderWidgetHost* render_widget_host, - PrerenderContents* prerender_contents) - : render_widget_host_(render_widget_host), - prerender_contents_(prerender_contents) { - render_widget_host_->set_view(this); -} - -PrerenderRenderWidgetHostView::~PrerenderRenderWidgetHostView() { -} - -void PrerenderRenderWidgetHostView::Init(RenderWidgetHostView* view) { -#if defined(OS_MACOSX) - cocoa_view_bounds_ = view->GetViewBounds(); - root_window_rect_ = view->GetRootWindowRect(); -#endif // defined(OS_MACOSX) - SetBounds(view->GetViewBounds()); - - // PrerenderRenderWidgetHostViews are always hidden. This reduces the - // process priority of the render process while prerendering, and prevents it - // from painting anything until the page is actually displayed. - WasHidden(); -} - -void PrerenderRenderWidgetHostView::InitAsPopup( - RenderWidgetHostView* parent_host_view, const gfx::Rect& pos) { - NOTREACHED(); -} - -void PrerenderRenderWidgetHostView::InitAsFullscreen() { - NOTREACHED(); -} - -RenderWidgetHost* PrerenderRenderWidgetHostView::GetRenderWidgetHost() const { - return render_widget_host_; -} - -void PrerenderRenderWidgetHostView::DidBecomeSelected() { - // The View won't be shown during prerendering. - NOTREACHED(); -} - -void PrerenderRenderWidgetHostView::WasHidden() { - render_widget_host_->WasHidden(); -} - -void PrerenderRenderWidgetHostView::SetSize(const gfx::Size& size) { - SetBounds(gfx::Rect(GetViewBounds().origin(), size)); -} - -void PrerenderRenderWidgetHostView::SetBounds(const gfx::Rect& rect) { - bounds_ = rect; - if (render_widget_host_) - render_widget_host_->WasResized(); -} - -gfx::NativeView PrerenderRenderWidgetHostView::GetNativeView() { - return NULL; -} - -void PrerenderRenderWidgetHostView::MovePluginWindows( - const std::vector<webkit::npapi::WebPluginGeometry>& moves) { - // Since a PrerenderRenderWidgetHostView is always hidden and plugins are not - // loaded during prerendering, this will never be called. - NOTREACHED(); -} - -void PrerenderRenderWidgetHostView::Focus() { - // A PrerenderRenderWidgetHostView can never be focused, as it's always - // hidden. - NOTREACHED(); -} - -void PrerenderRenderWidgetHostView::Blur() { -} - -bool PrerenderRenderWidgetHostView::HasFocus() { - return false; -} - -void PrerenderRenderWidgetHostView::Show() { - // A PrerenderRenderWidgetHostView can never be shown, as it is not yet - // associated with a tab. - NOTREACHED(); -} - -void PrerenderRenderWidgetHostView::Hide() { - WasHidden(); -} - -bool PrerenderRenderWidgetHostView::IsShowing() { - return false; -} - -gfx::Rect PrerenderRenderWidgetHostView::GetViewBounds() const { - return bounds_; -} - -void PrerenderRenderWidgetHostView::UpdateCursor(const WebCursor& cursor) { - // The cursor should only be updated in response to a mouse event, which - // hidden RenderViews don't have. - NOTREACHED(); -} - -void PrerenderRenderWidgetHostView::SetIsLoading(bool is_loading) { - // Do nothing. PrerenderContents manages this flag. -} - -void PrerenderRenderWidgetHostView::ImeUpdateTextInputState( - WebKit::WebTextInputType type, - const gfx::Rect& caret_rect) { - // Not called on hidden views. - NOTREACHED(); -} - -void PrerenderRenderWidgetHostView::ImeCancelComposition() { - // Not called on hidden views. - NOTREACHED(); -} - -void PrerenderRenderWidgetHostView::DidUpdateBackingStore( - const gfx::Rect& scroll_rect, int scroll_dx, int scroll_dy, - const std::vector<gfx::Rect>& copy_rects) { - // Since prerendering RenderViewsHosts are always hidden, this will not be - // be called. - NOTREACHED(); -} - -void PrerenderRenderWidgetHostView::RenderViewGone( - base::TerminationStatus status, int error_code) { - // TODO(mmenke): This should result in the PrerenderContents cancelling the - // prerender itself. - Destroy(); -} - -void PrerenderRenderWidgetHostView::WillDestroyRenderWidget( - RenderWidgetHost* rwh) { - if (rwh == render_widget_host_) - render_widget_host_ = NULL; -} - -void PrerenderRenderWidgetHostView::Destroy() { - delete this; -} - -void PrerenderRenderWidgetHostView::SetTooltipText( - const std::wstring& tooltip_text) { - // Since this is only set on mouse move and the View can't be focused, this - // will never be called. - NOTREACHED(); -} - -BackingStore* PrerenderRenderWidgetHostView::AllocBackingStore( - const gfx::Size& size) { - // Since prerendering RenderViewsHosts are always hidden, this will not be - // be called. - NOTREACHED(); - return NULL; -} - -#if defined(OS_MACOSX) -void PrerenderRenderWidgetHostView::SetTakesFocusOnlyOnMouseDown(bool flag) { - // This is only used by on RenderWidgetHosts currently in a TabContents. - NOTREACHED(); -} - -gfx::Rect PrerenderRenderWidgetHostView::GetViewCocoaBounds() const { - return cocoa_view_bounds_; -} - -gfx::Rect PrerenderRenderWidgetHostView::GetRootWindowRect() { - return root_window_rect_; -} - -void PrerenderRenderWidgetHostView::SetActive(bool active) { - // This view can never be made visible. - NOTREACHED(); -} - -void PrerenderRenderWidgetHostView::SetWindowVisibility(bool visible) { - // This view can never be made visible. - NOTREACHED(); -} - -void PrerenderRenderWidgetHostView::WindowFrameChanged() { - // Since there's no frame, and nothing to notify |this| of its change, this - // will never get called. - NOTREACHED(); -} - -// Since plugins are not loaded until the prerendered page is displayed, none of -// the following functions will be called. -void PrerenderRenderWidgetHostView::PluginFocusChanged(bool focused, - int plugin_id) { - NOTREACHED(); -} - -void PrerenderRenderWidgetHostView::StartPluginIme() { - NOTREACHED(); -} - -bool PrerenderRenderWidgetHostView::PostProcessEventForPluginIme( - const NativeWebKeyboardEvent& event) { - NOTREACHED(); - return false; -} - -gfx::PluginWindowHandle -PrerenderRenderWidgetHostView::AllocateFakePluginWindowHandle( - bool opaque, bool root) { - NOTREACHED(); - return gfx::kNullPluginWindow; -} - -void PrerenderRenderWidgetHostView::DestroyFakePluginWindowHandle( - gfx::PluginWindowHandle window) { - NOTREACHED(); -} - -void PrerenderRenderWidgetHostView::AcceleratedSurfaceSetIOSurface( - gfx::PluginWindowHandle window, - int32 width, - int32 height, - uint64 io_surface_identifier) { -} - -void PrerenderRenderWidgetHostView::AcceleratedSurfaceSetTransportDIB( - gfx::PluginWindowHandle window, - int32 width, - int32 height, - TransportDIB::Handle transport_dib) { -} - -void PrerenderRenderWidgetHostView::AcceleratedSurfaceBuffersSwapped( - gfx::PluginWindowHandle window, - uint64 surface_id, - int renderer_id, - int32 route_id, - int gpu_host_id, - uint64 swap_buffers_count) { -} - -void PrerenderRenderWidgetHostView::GpuRenderingStateDidChange() { -} -#endif // defined(OS_MACOSX) - -#if defined(TOOLKIT_USES_GTK) -void PrerenderRenderWidgetHostView::CreatePluginContainer( - gfx::PluginWindowHandle id) { - // Since plugins are not loaded until the prerendered page is loaded, this - // should never be called. - NOTREACHED(); -} - -void PrerenderRenderWidgetHostView::DestroyPluginContainer( - gfx::PluginWindowHandle id) { -} - -void PrerenderRenderWidgetHostView::AcceleratedCompositingActivated( - bool activated) { -} -#endif // defined(TOOLKIT_USES_GTK) - -#if defined(OS_WIN) -void PrerenderRenderWidgetHostView::WillWmDestroy() { -} - -void PrerenderRenderWidgetHostView::ShowCompositorHostWindow(bool show) { -} -#endif // defined(OS_WIN) - -gfx::PluginWindowHandle -PrerenderRenderWidgetHostView::GetCompositingSurface() { - return gfx::kNullPluginWindow; -} - -void PrerenderRenderWidgetHostView::SetVisuallyDeemphasized( - const SkColor* color, bool animate) { - // This will not be called until the RVH is swapped into a tab. - NOTREACHED(); -} - -void PrerenderRenderWidgetHostView::SetBackground(const SkBitmap& background) { - // This will not be called for HTTP RenderViews. - NOTREACHED(); -} - -bool PrerenderRenderWidgetHostView::ContainsNativeView( - gfx::NativeView native_view) const { - return false; -} - -} // namespace prerender diff --git a/chrome/browser/prerender/prerender_render_widget_host_view.h b/chrome/browser/prerender/prerender_render_widget_host_view.h deleted file mode 100644 index 81c278d..0000000 --- a/chrome/browser/prerender/prerender_render_widget_host_view.h +++ /dev/null @@ -1,133 +0,0 @@ -// Copyright (c) 2011 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 CHROME_BROWSER_PRERENDER_PRERENDER_RENDER_WIDGET_HOST_VIEW_H_ -#define CHROME_BROWSER_PRERENDER_PRERENDER_RENDER_WIDGET_HOST_VIEW_H_ -#pragma once - -#include <vector> - -#include "content/browser/renderer_host/render_widget_host_view.h" - -namespace prerender { - -class PrerenderContents; - -// A PrerenderRenderWidgetHostView acts as the "View" of prerendered web pages, -// as they don't have an actual window (visible or hidden) until swapped into -// a tab. -class PrerenderRenderWidgetHostView : public RenderWidgetHostView { - public: - PrerenderRenderWidgetHostView(RenderWidgetHost* widget, - PrerenderContents* prerender_contents); - virtual ~PrerenderRenderWidgetHostView(); - - // Initializes |this| using the bounds from |view|, which must be non-NULL. - void Init(RenderWidgetHostView* view); - - // Implementation of RenderWidgetHostView: - virtual void InitAsPopup(RenderWidgetHostView* parent_host_view, - const gfx::Rect& pos) OVERRIDE; - virtual void InitAsFullscreen() OVERRIDE; - virtual RenderWidgetHost* GetRenderWidgetHost() const OVERRIDE; - virtual void DidBecomeSelected() OVERRIDE; - virtual void WasHidden() OVERRIDE; - virtual void SetSize(const gfx::Size& size) OVERRIDE; - virtual void SetBounds(const gfx::Rect& rect) OVERRIDE; - virtual gfx::NativeView GetNativeView() OVERRIDE; - virtual void MovePluginWindows( - const std::vector<webkit::npapi::WebPluginGeometry>& moves) OVERRIDE; - virtual void Focus() OVERRIDE; - virtual void Blur() OVERRIDE; - virtual bool HasFocus() OVERRIDE; - virtual void Show() OVERRIDE; - virtual void Hide() OVERRIDE; - virtual bool IsShowing() OVERRIDE; - virtual gfx::Rect GetViewBounds() const OVERRIDE; - virtual void UpdateCursor(const WebCursor& cursor) OVERRIDE; - virtual void SetIsLoading(bool is_loading) OVERRIDE; - virtual void ImeUpdateTextInputState(WebKit::WebTextInputType type, - const gfx::Rect& caret_rect) OVERRIDE; - virtual void ImeCancelComposition() OVERRIDE; - virtual void DidUpdateBackingStore( - const gfx::Rect& scroll_rect, int scroll_dx, int scroll_dy, - const std::vector<gfx::Rect>& copy_rects) OVERRIDE; - virtual void RenderViewGone(base::TerminationStatus status, - int error_code) OVERRIDE; - virtual void WillDestroyRenderWidget(RenderWidgetHost* rwh) OVERRIDE; - virtual void Destroy() OVERRIDE; - virtual void SetTooltipText(const std::wstring& tooltip_text) OVERRIDE; - virtual BackingStore* AllocBackingStore(const gfx::Size& size) OVERRIDE; - -#if defined(OS_MACOSX) - virtual void SetTakesFocusOnlyOnMouseDown(bool flag) OVERRIDE; - virtual gfx::Rect GetViewCocoaBounds() const OVERRIDE; - virtual gfx::Rect GetRootWindowRect() OVERRIDE; - virtual void SetActive(bool active) OVERRIDE; - virtual void SetWindowVisibility(bool visible) OVERRIDE; - virtual void WindowFrameChanged() OVERRIDE; - virtual void PluginFocusChanged(bool focused, int plugin_id) OVERRIDE; - virtual void StartPluginIme() OVERRIDE; - virtual bool PostProcessEventForPluginIme( - const NativeWebKeyboardEvent& event) OVERRIDE; - - virtual gfx::PluginWindowHandle AllocateFakePluginWindowHandle( - bool opaque, bool root) OVERRIDE; - virtual void DestroyFakePluginWindowHandle( - gfx::PluginWindowHandle window) OVERRIDE; - virtual void AcceleratedSurfaceSetIOSurface( - gfx::PluginWindowHandle window, - int32 width, - int32 height, - uint64 io_surface_identifier) OVERRIDE; - virtual void AcceleratedSurfaceSetTransportDIB( - gfx::PluginWindowHandle window, - int32 width, - int32 height, - TransportDIB::Handle transport_dib) OVERRIDE; - virtual void AcceleratedSurfaceBuffersSwapped( - gfx::PluginWindowHandle window, - uint64 surface_id, - int renderer_id, - int32 route_id, - int gpu_host_id, - uint64 swap_buffers_count) OVERRIDE; - virtual void GpuRenderingStateDidChange() OVERRIDE; -#endif - -#if defined(TOOLKIT_USES_GTK) - virtual void CreatePluginContainer(gfx::PluginWindowHandle id) OVERRIDE; - virtual void DestroyPluginContainer(gfx::PluginWindowHandle id) OVERRIDE; - virtual void AcceleratedCompositingActivated(bool activated) OVERRIDE; -#endif - -#if defined(OS_WIN) - virtual void WillWmDestroy() OVERRIDE; - virtual void ShowCompositorHostWindow(bool show) OVERRIDE; -#endif - - virtual gfx::PluginWindowHandle GetCompositingSurface() OVERRIDE; - virtual void SetVisuallyDeemphasized(const SkColor* color, - bool animate) OVERRIDE; - virtual void SetBackground(const SkBitmap& background) OVERRIDE; - - virtual bool ContainsNativeView(gfx::NativeView native_view) const OVERRIDE; - - private: - RenderWidgetHost* render_widget_host_; - // Need this to cancel prerendering in some cases. - PrerenderContents* prerender_contents_; - - gfx::Rect bounds_; -#if defined(OS_MACOSX) - gfx::Rect cocoa_view_bounds_; - gfx::Rect root_window_rect_; -#endif // defined(OS_MACOSX) - - DISALLOW_COPY_AND_ASSIGN(PrerenderRenderWidgetHostView); -}; - -} // namespace prerender - -#endif // CHROME_BROWSER_PRERENDER_PRERENDER_RENDER_WIDGET_HOST_VIEW_H_ diff --git a/chrome/chrome_browser.gypi b/chrome/chrome_browser.gypi index a0afb0b..b83a381 100644 --- a/chrome/chrome_browser.gypi +++ b/chrome/chrome_browser.gypi @@ -1673,8 +1673,6 @@ 'browser/prerender/prerender_observer.h', 'browser/prerender/prerender_render_view_host_observer.cc', 'browser/prerender/prerender_render_view_host_observer.h', - 'browser/prerender/prerender_render_widget_host_view.cc', - 'browser/prerender/prerender_render_widget_host_view.h', 'browser/prerender/prerender_tracker.cc', 'browser/prerender/prerender_tracker.h', 'browser/printing/background_printing_manager.cc', |