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

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: rebase to fix build Created 7 years, 12 months 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
Index: chrome/browser/prerender/prerender_browsertest.cc
diff --git a/chrome/browser/prerender/prerender_browsertest.cc b/chrome/browser/prerender/prerender_browsertest.cc
index 922d81796e2542b94963c98bea923d5ee8ae2b16..8b5ac6200d2c48b431901baf5915ff073d70a3b7 100644
--- a/chrome/browser/prerender/prerender_browsertest.cc
+++ b/chrome/browser/prerender/prerender_browsertest.cc
@@ -864,6 +864,19 @@ class PrerenderBrowserTest : virtual public InProcessBrowserTest {
return received_prerender_started;
}
+ bool DidReceivePrerenderLoadEventForLinkNumber(int index) const {
+ bool received_prerender_loaded;
+ std::string expression = base::StringPrintf(
+ "window.domAutomationController.send(Boolean("
+ "receivedPrerenderLoadEvents[%d]))", index);
+
+ CHECK(content::ExecuteJavaScriptAndExtractBool(
+ chrome::GetActiveWebContents(current_browser())->GetRenderViewHost(),
+ "", expression,
+ &received_prerender_loaded));
+ return received_prerender_loaded;
+ }
+
bool DidReceivePrerenderStopEventForLinkNumber(int index) const {
bool received_prerender_stopped;
std::string expression = base::StringPrintf(
@@ -878,6 +891,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(),
+ "", "window.domAutomationController.send(Boolean("
+ "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,
@@ -1183,6 +1205,7 @@ IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, DISABLED_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");
@@ -1216,6 +1239,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.
@@ -1238,6 +1262,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.
@@ -1265,6 +1290,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.
@@ -1298,6 +1324,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.
@@ -2409,6 +2436,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(
@@ -2417,6 +2445,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 please be aggressive about filing bugs when this test is failing.
+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') | chrome/browser/prerender/prerender_contents.cc » ('J')

Powered by Google App Engine
This is Rietveld 408576698