Index: chrome/browser/prerender/prerender_browsertest.cc |
=================================================================== |
--- chrome/browser/prerender/prerender_browsertest.cc (revision 184822) |
+++ chrome/browser/prerender/prerender_browsertest.cc (working copy) |
@@ -446,6 +446,9 @@ |
if (!expected_final_status_queue_.empty()) { |
expected_final_status = expected_final_status_queue_.front(); |
expected_final_status_queue_.pop_front(); |
+ } else { |
+ // There shouldn't be any unexpected prerenders. |
+ ADD_FAILURE() << "Unexpected prerender attempt"; |
} |
VLOG(1) << "Creating prerender contents for " << url.path() << |
" with expected final status " << expected_final_status; |
@@ -2461,6 +2464,20 @@ |
EXPECT_FALSE(HadPrerenderEventErrors()); |
} |
+// Cancels the prerender of a page with its own prerender. The second prerender |
+// should never be started. |
+IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, |
+ PrerenderCancelPrerenderWithPrerender) { |
+ PrerenderTestURL("files/prerender/prerender_infinite_a.html", |
+ FINAL_STATUS_CANCELLED, |
+ 1); |
+ // Post a task to cancel all the prerenders. |
+ MessageLoop::current()->PostTask( |
+ FROM_HERE, base::Bind(&CancelAllPrerenders, GetPrerenderManager())); |
+ content::RunMessageLoop(); |
+ EXPECT_TRUE(GetPrerenderContents() == NULL); |
+} |
+ |
// 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) { |