Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(4415)

Unified Diff: chrome/browser/prerender/prerender_browsertest.cc

Issue 11571037: Pass load events from prerenders to launching elements. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: remediate Created 8 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | chrome/browser/prerender/prerender_contents.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/prerender/prerender_browsertest.cc
diff --git a/chrome/browser/prerender/prerender_browsertest.cc b/chrome/browser/prerender/prerender_browsertest.cc
index f86eb4aab43fbcde7c8b693ddbf50fa771894906..8afea88cb1f9f22191b6ba8e5fd3d6d4598ea644 100644
--- a/chrome/browser/prerender/prerender_browsertest.cc
+++ b/chrome/browser/prerender/prerender_browsertest.cc
@@ -861,6 +861,19 @@ class PrerenderBrowserTest : virtual public InProcessBrowserTest {
return received_prerender_started;
}
+ bool DidReceivePrerenderLoadEventForLinkNumber(int index) const {
+ bool received_prerender_loaded;
+ std::wstring expression = base::StringPrintf(
+ L"window.domAutomationController.send(Boolean("
+ L"receivedPrerenderLoadEvents[%d]))", index);
+
+ CHECK(content::ExecuteJavaScriptAndExtractBool(
+ chrome::GetActiveWebContents(current_browser())->GetRenderViewHost(),
+ L"", expression,
+ &received_prerender_loaded));
+ return received_prerender_loaded;
+ }
+
bool DidReceivePrerenderStopEventForLinkNumber(int index) const {
bool received_prerender_stopped;
std::wstring expression = base::StringPrintf(
@@ -874,6 +887,15 @@ class PrerenderBrowserTest : virtual public InProcessBrowserTest {
return received_prerender_stopped;
}
+ bool HadPrerenderEventErrors() const {
+ bool had_prerender_event_errors;
+ CHECK(content::ExecuteJavaScriptAndExtractBool(
+ chrome::GetActiveWebContents(current_browser())->GetRenderViewHost(),
+ L"", L"window.domAutomationController.send(Boolean("
+ L"hadPrerenderEventErrors))", &had_prerender_event_errors));
+ return had_prerender_event_errors;
+ }
+
// Asserting on this can result in flaky tests. PrerenderHandles are
// removed from the PrerenderLinkManager when the prerender is canceled from
// the browser, when the prerenders are cancelled from the renderer process,
@@ -1176,6 +1198,7 @@ IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, PrerenderPagePending) {
EXPECT_TRUE(DidReceivePrerenderStartEventForLinkNumber(0));
EXPECT_FALSE(DidReceivePrerenderStopEventForLinkNumber(0));
+ EXPECT_FALSE(HadPrerenderEventErrors());
const GURL prerender_page_url =
test_server()->GetURL("files/prerender/prerender_page.html");
@@ -1209,6 +1232,7 @@ IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, PrerenderPageRemovesPending) {
EXPECT_FALSE(DidReceivePrerenderStartEventForLinkNumber(1));
EXPECT_FALSE(DidReceivePrerenderStopEventForLinkNumber(1));
+ EXPECT_FALSE(HadPrerenderEventErrors());
// IsEmptyPrerenderLinkManager() is not racy because the earlier DidReceive*
// calls did a thread/process hop to the renderer which insured pending
// renderer events have arrived.
@@ -1231,6 +1255,7 @@ IN_PROC_BROWSER_TEST_F(
RemoveLinkElement(0);
EXPECT_TRUE(DidReceivePrerenderStartEventForLinkNumber(0));
EXPECT_FALSE(DidReceivePrerenderStopEventForLinkNumber(0));
+ EXPECT_FALSE(HadPrerenderEventErrors());
// IsEmptyPrerenderLinkManager() is not racy because the earlier DidReceive*
// calls did a thread/process hop to the renderer which insured pending
// renderer events have arrived.
@@ -1258,6 +1283,7 @@ IN_PROC_BROWSER_TEST_F(
EXPECT_FALSE(DidReceivePrerenderStopEventForLinkNumber(0));
EXPECT_TRUE(DidReceivePrerenderStartEventForLinkNumber(1));
EXPECT_FALSE(DidReceivePrerenderStopEventForLinkNumber(1));
+ EXPECT_FALSE(HadPrerenderEventErrors());
// IsEmptyPrerenderLinkManager() is not racy because the earlier DidReceive*
// calls did a thread/process hop to the renderer which insured pending
// renderer events have arrived.
@@ -1291,6 +1317,7 @@ IN_PROC_BROWSER_TEST_F(
EXPECT_FALSE(DidReceivePrerenderStopEventForLinkNumber(0));
EXPECT_TRUE(DidReceivePrerenderStartEventForLinkNumber(1));
EXPECT_FALSE(DidReceivePrerenderStopEventForLinkNumber(1));
+ EXPECT_FALSE(HadPrerenderEventErrors());
// IsEmptyPrerenderLinkManager() is not racy because the earlier DidReceive*
// calls did a thread/process hop to the renderer which insured pending
// renderer events have arrived.
@@ -2401,6 +2428,7 @@ IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, PrerenderEvents) {
PrerenderTestURL("files/prerender/prerender_page.html",
FINAL_STATUS_CANCELLED, 1);
EXPECT_TRUE(DidReceivePrerenderStartEventForLinkNumber(0));
+ EXPECT_TRUE(DidReceivePrerenderLoadEventForLinkNumber(0));
EXPECT_FALSE(DidReceivePrerenderStopEventForLinkNumber(0));
MessageLoop::current()->PostTask(
@@ -2409,6 +2437,20 @@ IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, PrerenderEvents) {
EXPECT_TRUE(DidReceivePrerenderStartEventForLinkNumber(0));
EXPECT_TRUE(DidReceivePrerenderStopEventForLinkNumber(0));
+ EXPECT_FALSE(HadPrerenderEventErrors());
+}
+
+// PrerenderBrowserTest.PrerenderEventsNoLoad may pass flakily on regression,
+// so plesae be aggressive about filing bugs when this test is failing.
mmenke 2012/12/28 18:48:36 nit: please
gavinp 2012/12/28 20:13:16 Done.
+IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, PrerenderEventsNoLoad) {
+ // This should be canceled.
+ PrerenderTestURL("files/prerender/prerender_http_auth_container.html",
+ FINAL_STATUS_AUTH_NEEDED,
+ 1);
+ EXPECT_TRUE(DidReceivePrerenderStartEventForLinkNumber(0));
+ EXPECT_FALSE(DidReceivePrerenderLoadEventForLinkNumber(0));
+ EXPECT_FALSE(DidReceivePrerenderStopEventForLinkNumber(0));
+ EXPECT_FALSE(HadPrerenderEventErrors());
}
// Prerendering and history tests.
« no previous file with comments | « no previous file | chrome/browser/prerender/prerender_contents.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698