summaryrefslogtreecommitdiffstats
path: root/chrome/browser/prerender
diff options
context:
space:
mode:
authordominich@chromium.org <dominich@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-05-16 22:18:59 +0000
committerdominich@chromium.org <dominich@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-05-16 22:18:59 +0000
commitbd31e80514981a57115a4274af184de8938c308f (patch)
treed7ca9b92f265780da6978c2c97dbf8740c6bff00 /chrome/browser/prerender
parent6563e3a5d1ba4ca9cd82fce203df24d9268abf5a (diff)
downloadchromium_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')
-rw-r--r--chrome/browser/prerender/prerender_browsertest.cc7
-rw-r--r--chrome/browser/prerender/prerender_contents.cc4
-rw-r--r--chrome/browser/prerender/prerender_contents.h1
-rw-r--r--chrome/browser/prerender/prerender_final_status.h1
-rw-r--r--chrome/browser/prerender/prerender_observer.h11
-rw-r--r--chrome/browser/prerender/prerender_render_view_host_observer.cc8
-rw-r--r--chrome/browser/prerender/prerender_render_view_host_observer.h1
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_;