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. |