| 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())
|
| + 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) {
|
|
|