Chromium Code Reviews| Index: chrome/browser/prerender/prerender_browsertest.cc |
| =================================================================== |
| --- chrome/browser/prerender/prerender_browsertest.cc (revision 98269) |
| +++ chrome/browser/prerender/prerender_browsertest.cc (working copy) |
| @@ -102,19 +102,21 @@ |
| Profile* profile, |
| const GURL& url, |
| const GURL& referrer, |
| - int number_of_loads, |
| + int expected_number_of_loads, |
| FinalStatus expected_final_status) |
| : PrerenderContents(prerender_manager, prerender_tracker, profile, |
| url, referrer, ORIGIN_LINK_REL_PRERENDER, |
| PrerenderManager::kNoExperiment), |
| number_of_loads_(0), |
| - expected_number_of_loads_(number_of_loads), |
| + expected_number_of_loads_(expected_number_of_loads), |
| expected_final_status_(expected_final_status), |
| new_render_view_host_(NULL), |
| was_hidden_(false), |
| was_shown_(false), |
| should_be_shown_(expected_final_status == FINAL_STATUS_USED), |
| quit_message_loop_on_destruction_(true) { |
| + if (expected_number_of_loads == 0) |
| + MessageLoopForUI::current()->Quit(); |
| } |
| virtual ~TestPrerenderContents() { |
| @@ -126,9 +128,8 @@ |
| // navigation, so this should be happen for every PrerenderContents for |
| // which a RenderViewHost is created, regardless of whether or not it's |
| // used. |
| - if (new_render_view_host_) { |
| + if (new_render_view_host_) |
| EXPECT_TRUE(was_hidden_); |
| - } |
| // A used PrerenderContents will only be destroyed when we swap out |
| // TabContents, at the end of a navigation caused by a call to |
| @@ -245,11 +246,8 @@ |
| WaitForLoadPrerenderContentsFactory( |
| int number_of_loads, |
| const std::deque<FinalStatus>& expected_final_status_queue) |
| - : number_of_loads_(number_of_loads) { |
| - expected_final_status_queue_.resize(expected_final_status_queue.size()); |
| - std::copy(expected_final_status_queue.begin(), |
| - expected_final_status_queue.end(), |
| - expected_final_status_queue_.begin()); |
| + : number_of_loads_(number_of_loads), |
| + expected_final_status_queue_(expected_final_status_queue) { |
| VLOG(1) << "Factory created with queue length " << |
| expected_final_status_queue_.size(); |
| } |
| @@ -615,7 +613,7 @@ |
| ASSERT_TRUE(prerender_contents != NULL); |
| EXPECT_EQ(FINAL_STATUS_MAX, prerender_contents->final_status()); |
| - if (call_javascript_) { |
| + if (call_javascript_ && total_navigations > 0) { |
| // Check if page behaves as expected while in prerendered state. |
| bool prerender_test_result = false; |
| ASSERT_TRUE(ui_test_utils::ExecuteJavaScriptAndExtractBool( |
| @@ -625,7 +623,7 @@ |
| EXPECT_TRUE(prerender_test_result); |
| } |
| } else { |
| - // In the failure case, we should have removed dest_url_ from the |
| + // In the failure case, we should have removed |dest_url_| from the |
| // prerender_manager. |
| EXPECT_TRUE(prerender_contents == NULL); |
| } |
| @@ -674,6 +672,8 @@ |
| ASSERT_TRUE(false) << "Unsupported creation disposition"; |
| } |
| ASSERT_TRUE(tab_contents); |
| + if (tab_contents->IsLoading()) |
|
Paweł Hajdan Jr.
2011/08/25 23:32:52
I think this may be prone to flakiness. Have you c
mmenke
2011/08/26 15:47:20
I don't think there was any flakiness in this part
|
| + ui_test_utils::WaitForLoadStop(tab_contents); |
| bool display_test_result = false; |
| ASSERT_TRUE(ui_test_utils::ExecuteJavaScriptAndExtractBool( |
| @@ -710,6 +710,14 @@ |
| NavigateToDestURL(); |
| } |
| +// Checks that the visibility API works when the prerender is quickly opened |
| +// in a new tab before it stops loading. |
| +IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, PrerenderVisibilityQuickSwitch) { |
| + PrerenderTestURL("files/prerender/prerender_visibility_quick.html", |
| + FINAL_STATUS_USED, 0); |
| + NavigateToDestURL(); |
| +} |
| + |
| // Checks that the visibility API works when opening a page in a new hidden |
| // tab. |
| IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, PrerenderVisibilityBackgroundTab) { |
| @@ -719,6 +727,15 @@ |
| NavigateToDestURLWithDisposition(NEW_BACKGROUND_TAB); |
| } |
| +// Checks that the visibility API works when opening a page in a new hidden |
| +// tab, which is switched to before it stops loading. |
| +IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, |
| + PrerenderVisibilityBackgroundTabQuickSwitch) { |
| + PrerenderTestURL("files/prerender/prerender_visibility_hidden_quick.html", |
| + FINAL_STATUS_USED, 0); |
| + NavigateToDestURLWithDisposition(NEW_BACKGROUND_TAB); |
| +} |
| + |
| // Checks that the visibility API works when opening a page in a new foreground |
| // tab. |
| IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, PrerenderVisibilityForegroundTab) { |
| @@ -728,6 +745,15 @@ |
| NavigateToDestURLWithDisposition(NEW_FOREGROUND_TAB); |
| } |
| +// Checks that the visibility API works when the prerender is quickly opened |
| +// in a new tab foreground before it stops loading. |
| +IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, |
| + PrerenderVisibilityForegroundTabQuickSwitch) { |
| + PrerenderTestURL("files/prerender/prerender_visibility_quick.html", |
| + FINAL_STATUS_USED, 0); |
| + NavigateToDestURL(); |
| +} |
| + |
| // Checks that the prerendering of a page is canceled correctly when a |
| // Javascript alert is called. |
| IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, PrerenderAlertBeforeOnload) { |