Chromium Code Reviews| 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. |