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

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: ready for review 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
Index: chrome/browser/prerender/prerender_browsertest.cc
diff --git a/chrome/browser/prerender/prerender_browsertest.cc b/chrome/browser/prerender/prerender_browsertest.cc
index ccd6709553c286c3fb3615e7031433f2b44d23eb..b83610ba49aa0aed8ee0fb425ece909b62100fc1 100644
--- a/chrome/browser/prerender/prerender_browsertest.cc
+++ b/chrome/browser/prerender/prerender_browsertest.cc
@@ -863,6 +863,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(
@@ -876,6 +889,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,
@@ -1231,6 +1253,7 @@ IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, PrerenderPageRemovingLink) {
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.
@@ -1257,6 +1280,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.
@@ -1290,6 +1314,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.
@@ -2399,6 +2424,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(
@@ -2407,6 +2433,18 @@ IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, PrerenderEvents) {
EXPECT_TRUE(DidReceivePrerenderStartEventForLinkNumber(0));
EXPECT_TRUE(DidReceivePrerenderStopEventForLinkNumber(0));
+ EXPECT_FALSE(HadPrerenderEventErrors());
+}
+
+IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, PrerenderEventsNoLoad) {
mmenke 2012/12/27 19:11:08 Think it's worth mentioning that this test may pas
gavinp 2012/12/28 13:23:15 Done.
+ // 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/renderer/prerender/prerender_dispatcher.cc » ('J')

Powered by Google App Engine
This is Rietveld 408576698