diff options
author | dominich@chromium.org <dominich@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-05-16 22:18:59 +0000 |
---|---|---|
committer | dominich@chromium.org <dominich@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-05-16 22:18:59 +0000 |
commit | bd31e80514981a57115a4274af184de8938c308f (patch) | |
tree | d7ca9b92f265780da6978c2c97dbf8740c6bff00 /chrome/browser/prerender | |
parent | 6563e3a5d1ba4ca9cd82fce203df24d9268abf5a (diff) | |
download | chromium_src-bd31e80514981a57115a4274af184de8938c308f.zip chromium_src-bd31e80514981a57115a4274af184de8938c308f.tar.gz chromium_src-bd31e80514981a57115a4274af184de8938c308f.tar.bz2 |
Cancel prerenders for pages that call window.print()
BUG=82206
TEST=PrerenderBrowserTest.PrerenderPopup
Review URL: http://codereview.chromium.org/7015026
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@85545 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/prerender')
7 files changed, 19 insertions, 14 deletions
diff --git a/chrome/browser/prerender/prerender_browsertest.cc b/chrome/browser/prerender/prerender_browsertest.cc index 407429f..004b627 100644 --- a/chrome/browser/prerender/prerender_browsertest.cc +++ b/chrome/browser/prerender/prerender_browsertest.cc @@ -1074,4 +1074,11 @@ IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, PrerenderSSLErrorIframe) { NavigateToDestURL(); } +// Checks that we cancel correctly when window.print() is called. +IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, PrerenderPrint) { + PrerenderTestURL("files/prerender/prerender_print.html", + FINAL_STATUS_WINDOW_PRINT, + 1); +} + } // namespace prerender diff --git a/chrome/browser/prerender/prerender_contents.cc b/chrome/browser/prerender/prerender_contents.cc index 9a2048a..0a5cd54 100644 --- a/chrome/browser/prerender/prerender_contents.cc +++ b/chrome/browser/prerender/prerender_contents.cc @@ -633,10 +633,6 @@ void PrerenderContents::OnUpdateFaviconURL( } } -void PrerenderContents::OnMaybeCancelPrerenderForHTML5Media() { - Destroy(FINAL_STATUS_HTML5_MEDIA); -} - bool PrerenderContents::AddAliasURL(const GURL& url) { if (!url.SchemeIs("http")) { if (url.SchemeIs("https")) diff --git a/chrome/browser/prerender/prerender_contents.h b/chrome/browser/prerender/prerender_contents.h index c512016..0dbb256 100644 --- a/chrome/browser/prerender/prerender_contents.h +++ b/chrome/browser/prerender/prerender_contents.h @@ -271,7 +271,6 @@ class PrerenderContents : public RenderViewHostDelegate, bool main_frame, const GURL& url); void OnUpdateFaviconURL(int32 page_id, const std::vector<FaviconURL>& urls); - void OnMaybeCancelPrerenderForHTML5Media(); // Returns the RenderViewHost Delegate for this prerender. RenderViewHostDelegate* GetRenderViewHostDelegate(); diff --git a/chrome/browser/prerender/prerender_final_status.h b/chrome/browser/prerender/prerender_final_status.h index 342dc1f..101e751 100644 --- a/chrome/browser/prerender/prerender_final_status.h +++ b/chrome/browser/prerender/prerender_final_status.h @@ -34,6 +34,7 @@ enum FinalStatus { FINAL_STATUS_RENDERER_CRASHED, FINAL_STATUS_UNSUPPORTED_SCHEME, FINAL_STATUS_INVALID_HTTP_METHOD, + FINAL_STATUS_WINDOW_PRINT, FINAL_STATUS_MAX, }; diff --git a/chrome/browser/prerender/prerender_observer.h b/chrome/browser/prerender/prerender_observer.h index f2ec018..760132d 100644 --- a/chrome/browser/prerender/prerender_observer.h +++ b/chrome/browser/prerender/prerender_observer.h @@ -4,22 +4,17 @@ #ifndef CHROME_BROWSER_PRERENDER_PRERENDER_OBSERVER_H_ #define CHROME_BROWSER_PRERENDER_PRERENDER_OBSERVER_H_ -#pragma once -#include <list> -#include <vector> +#include "content/browser/tab_contents/tab_contents_observer.h" -#include "base/memory/scoped_ptr.h" #include "base/time.h" -#include "content/browser/tab_contents/tab_contents_observer.h" -#include "googleurl/src/gurl.h" -class PrerenderContents; -class Profile; class TabContents; +class GURL; namespace prerender { +class PrerenderContents; class PrerenderManager; // PrerenderObserver is responsible for recording perceived pageload times diff --git a/chrome/browser/prerender/prerender_render_view_host_observer.cc b/chrome/browser/prerender/prerender_render_view_host_observer.cc index fe297a8..aac0d6a 100644 --- a/chrome/browser/prerender/prerender_render_view_host_observer.cc +++ b/chrome/browser/prerender/prerender_render_view_host_observer.cc @@ -41,6 +41,8 @@ bool PrerenderRenderViewHostObserver::OnMessageReceived( IPC_MESSAGE_HANDLER(ViewHostMsg_RunJavaScriptMessage, OnRunJavaScriptMessage) IPC_MESSAGE_HANDLER(ViewHostMsg_RenderViewGone, OnRenderViewGone) + IPC_MESSAGE_HANDLER(ViewHostMsg_CancelPrerenderForPrinting, + OnCancelPrerenderForPrinting) IPC_MESSAGE_UNHANDLED(handled = false) IPC_END_MESSAGE_MAP() @@ -97,7 +99,11 @@ void PrerenderRenderViewHostObserver::OnUpdateFaviconURL( } void PrerenderRenderViewHostObserver::OnMaybeCancelPrerenderForHTML5Media() { - prerender_contents_->OnMaybeCancelPrerenderForHTML5Media(); + prerender_contents_->Destroy(FINAL_STATUS_HTML5_MEDIA); +} + +void PrerenderRenderViewHostObserver::OnCancelPrerenderForPrinting() { + prerender_contents_->Destroy(FINAL_STATUS_WINDOW_PRINT); } } diff --git a/chrome/browser/prerender/prerender_render_view_host_observer.h b/chrome/browser/prerender/prerender_render_view_host_observer.h index 6ca6179..4f0ae9f2 100644 --- a/chrome/browser/prerender/prerender_render_view_host_observer.h +++ b/chrome/browser/prerender/prerender_render_view_host_observer.h @@ -52,6 +52,7 @@ class PrerenderRenderViewHostObserver : public RenderViewHostObserver { const GURL& url); void OnUpdateFaviconURL(int32 page_id, const std::vector<FaviconURL>& urls); void OnMaybeCancelPrerenderForHTML5Media(); + void OnCancelPrerenderForPrinting(); // The associated prerender contents. PrerenderContents* prerender_contents_; |