| OLD | NEW |
| 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include <deque> | 5 #include <deque> |
| 6 | 6 |
| 7 #include "base/command_line.h" | 7 #include "base/command_line.h" |
| 8 #include "base/path_service.h" | 8 #include "base/path_service.h" |
| 9 #include "base/string_util.h" | 9 #include "base/string_util.h" |
| 10 #include "base/test/test_timeouts.h" | 10 #include "base/test/test_timeouts.h" |
| 11 #include "base/utf_string_conversions.h" | 11 #include "base/utf_string_conversions.h" |
| 12 #include "base/values.h" | 12 #include "base/values.h" |
| 13 #include "chrome/browser/browsing_data_remover.h" | 13 #include "chrome/browser/browsing_data_remover.h" |
| 14 #include "chrome/browser/content_settings/host_content_settings_map.h" | 14 #include "chrome/browser/content_settings/host_content_settings_map.h" |
| 15 #include "chrome/browser/favicon/favicon_tab_helper.h" | 15 #include "chrome/browser/favicon/favicon_tab_helper.h" |
| 16 #include "chrome/browser/prefs/pref_service.h" | 16 #include "chrome/browser/prefs/pref_service.h" |
| 17 #include "chrome/browser/prerender/prerender_contents.h" | 17 #include "chrome/browser/prerender/prerender_contents.h" |
| 18 #include "chrome/browser/prerender/prerender_manager.h" | 18 #include "chrome/browser/prerender/prerender_manager.h" |
| 19 #include "chrome/browser/profiles/profile.h" | 19 #include "chrome/browser/profiles/profile.h" |
| 20 #include "chrome/browser/safe_browsing/safe_browsing_service.h" | 20 #include "chrome/browser/safe_browsing/safe_browsing_service.h" |
| 21 #include "chrome/browser/task_manager/task_manager.h" | 21 #include "chrome/browser/task_manager/task_manager.h" |
| 22 #include "chrome/browser/task_manager/task_manager_browsertest_util.h" | 22 #include "chrome/browser/task_manager/task_manager_browsertest_util.h" |
| 23 #include "chrome/browser/ui/browser.h" | 23 #include "chrome/browser/ui/browser.h" |
| 24 #include "chrome/browser/ui/browser_list.h" |
| 24 #include "chrome/browser/ui/browser_window.h" | 25 #include "chrome/browser/ui/browser_window.h" |
| 25 #include "chrome/browser/ui/tab_contents/tab_contents_wrapper.h" | 26 #include "chrome/browser/ui/tab_contents/tab_contents_wrapper.h" |
| 26 #include "chrome/common/chrome_notification_types.h" | 27 #include "chrome/common/chrome_notification_types.h" |
| 27 #include "chrome/common/chrome_paths.h" | 28 #include "chrome/common/chrome_paths.h" |
| 28 #include "chrome/common/chrome_switches.h" | 29 #include "chrome/common/chrome_switches.h" |
| 29 #include "chrome/common/pref_names.h" | 30 #include "chrome/common/pref_names.h" |
| 30 #include "chrome/test/base/in_process_browser_test.h" | 31 #include "chrome/test/base/in_process_browser_test.h" |
| 31 #include "chrome/test/base/ui_test_utils.h" | 32 #include "chrome/test/base/ui_test_utils.h" |
| 32 #include "content/browser/renderer_host/render_view_host.h" | 33 #include "content/browser/renderer_host/render_view_host.h" |
| 33 #include "content/browser/tab_contents/tab_contents.h" | 34 #include "content/browser/tab_contents/tab_contents.h" |
| (...skipping 397 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 431 void NavigateToDestURL() const { | 432 void NavigateToDestURL() const { |
| 432 NavigateToDestURLWithDisposition(CURRENT_TAB); | 433 NavigateToDestURLWithDisposition(CURRENT_TAB); |
| 433 } | 434 } |
| 434 | 435 |
| 435 // Opens the url in a new tab, with no opener. | 436 // Opens the url in a new tab, with no opener. |
| 436 void NavigateToDestURLWithDisposition( | 437 void NavigateToDestURLWithDisposition( |
| 437 WindowOpenDisposition disposition) const { | 438 WindowOpenDisposition disposition) const { |
| 438 NavigateToURLImpl(dest_url_, disposition); | 439 NavigateToURLImpl(dest_url_, disposition); |
| 439 } | 440 } |
| 440 | 441 |
| 441 void OpenDestUrlInNewWindowViaJs() const { | 442 void OpenDestURLViaClick() const { |
| 442 // Make sure in navigating we have a URL to use in the PrerenderManager. | 443 OpenDestURLWithJSImpl("Click()", true); |
| 443 TestPrerenderContents* prerender_contents = GetPrerenderContents(); | |
| 444 ASSERT_TRUE(prerender_contents != NULL); | |
| 445 prerender_contents->set_quit_message_loop_on_destruction(false); | |
| 446 | |
| 447 bool open_window_result = false; | |
| 448 ASSERT_TRUE(ui_test_utils::ExecuteJavaScriptAndExtractBool( | |
| 449 browser()->GetSelectedTabContents()->render_view_host(), L"", | |
| 450 L"window.domAutomationController.send(JsOpenLinkInNewWindow())", | |
| 451 &open_window_result)); | |
| 452 EXPECT_TRUE(open_window_result); | |
| 453 | |
| 454 // If the prerender contents has not been destroyed, run message loop. | |
| 455 if (GetPrerenderContents() != NULL) { | |
| 456 prerender_contents->set_quit_message_loop_on_destruction(true); | |
| 457 ui_test_utils::RunMessageLoop(); | |
| 458 } | |
| 459 } | 444 } |
| 460 | 445 |
| 461 void OpenDestUrlInNewWindowViaClick() const { | 446 void OpenDestURLViaClickTarget() const { |
| 462 // Make sure in navigating we have a URL to use in the PrerenderManager. | 447 OpenDestURLWithJSImpl("ClickTarget()", false); |
| 463 TestPrerenderContents* prerender_contents = GetPrerenderContents(); | |
| 464 ASSERT_TRUE(prerender_contents != NULL); | |
| 465 prerender_contents->set_quit_message_loop_on_destruction(false); | |
| 466 | |
| 467 bool click_prerendered_link_result = false; | |
| 468 ASSERT_TRUE(ui_test_utils::ExecuteJavaScriptAndExtractBool( | |
| 469 browser()->GetSelectedTabContents()->render_view_host(), L"", | |
| 470 L"window.domAutomationController.send(ClickOpenLinkInNewWindow())", | |
| 471 &click_prerendered_link_result)); | |
| 472 EXPECT_TRUE(click_prerendered_link_result); | |
| 473 | |
| 474 // If the prerender contents has not been destroyed, run message loop. | |
| 475 if (GetPrerenderContents() != NULL) { | |
| 476 prerender_contents->set_quit_message_loop_on_destruction(true); | |
| 477 ui_test_utils::RunMessageLoop(); | |
| 478 } | |
| 479 } | 448 } |
| 480 | 449 |
| 481 void OpenDestUrlViaClick() const { | 450 void OpenDestURLViaClickNewWindow() const { |
| 482 // Make sure in navigating we have a URL to use in the PrerenderManager. | 451 OpenDestURLWithJSImpl("ShiftClick()", true); |
| 483 TestPrerenderContents* prerender_contents = GetPrerenderContents(); | 452 } |
| 484 ASSERT_TRUE(prerender_contents != NULL); | |
| 485 prerender_contents->set_quit_message_loop_on_destruction(false); | |
| 486 | 453 |
| 487 bool click_prerendered_link_result = false; | 454 void OpenDestURLViaClickNewForegroundTab() const { |
| 455 #if defined(OS_MACOSX) |
| 456 OpenDestURLWithJSImpl("MetaShiftClick()", true); |
| 457 #else |
| 458 OpenDestURLWithJSImpl("CtrlShiftClick()", true); |
| 459 #endif |
| 460 } |
| 461 |
| 462 void OpenDestURLViaClickNewBackgroundTab() const { |
| 463 #if defined(OS_MACOSX) |
| 464 OpenDestURLWithJSImpl("MetaClick()", false); |
| 465 #else |
| 466 OpenDestURLWithJSImpl("CtrlClick()", false); |
| 467 #endif |
| 468 } |
| 469 |
| 470 void OpenDestURLViaWindowOpen() const { |
| 471 OpenDestURLWithJSImpl("WindowOpen()", false); |
| 472 } |
| 473 |
| 474 void ClickToNextPageAfterPrerender(Browser* browser) { |
| 475 ui_test_utils::WindowedNotificationObserver new_page_observer( |
| 476 content::NOTIFICATION_NAV_ENTRY_COMMITTED, |
| 477 NotificationService::AllSources()); |
| 478 RenderViewHost* render_view_host = |
| 479 browser->GetSelectedTabContents()->render_view_host(); |
| 480 render_view_host->ExecuteJavascriptInWebFrame( |
| 481 string16(), |
| 482 ASCIIToUTF16("ClickOpenLink()")); |
| 483 new_page_observer.Wait(); |
| 484 } |
| 485 |
| 486 void NavigateToNextPageAfterPrerender(Browser* browser) { |
| 487 ui_test_utils::NavigateToURL( |
| 488 browser, |
| 489 test_server()->GetURL("files/prerender/prerender_page.html")); |
| 490 } |
| 491 |
| 492 // Called after the prerendered page has been navigated to and then away from. |
| 493 // Navigates back through the history to the prerendered page. |
| 494 void GoBackToPrerender(Browser* browser) { |
| 495 ui_test_utils::WindowedNotificationObserver back_nav_observer( |
| 496 content::NOTIFICATION_NAV_ENTRY_COMMITTED, |
| 497 NotificationService::AllSources()); |
| 498 browser->GoBack(CURRENT_TAB); |
| 499 back_nav_observer.Wait(); |
| 500 bool original_prerender_page = false; |
| 488 ASSERT_TRUE(ui_test_utils::ExecuteJavaScriptAndExtractBool( | 501 ASSERT_TRUE(ui_test_utils::ExecuteJavaScriptAndExtractBool( |
| 489 browser()->GetSelectedTabContents()->render_view_host(), L"", | 502 browser->GetSelectedTabContents()->render_view_host(), L"", |
| 490 L"window.domAutomationController.send(ClickOpenLink())", | 503 L"window.domAutomationController.send(IsOriginalPrerenderPage())", |
| 491 &click_prerendered_link_result)); | 504 &original_prerender_page)); |
| 492 EXPECT_TRUE(click_prerendered_link_result); | 505 EXPECT_TRUE(original_prerender_page); |
| 493 | |
| 494 // If the prerender contents has not been destroyed, run message loop. | |
| 495 if (GetPrerenderContents() != NULL) { | |
| 496 prerender_contents->set_quit_message_loop_on_destruction(true); | |
| 497 ui_test_utils::RunMessageLoop(); | |
| 498 } | |
| 499 } | 506 } |
| 500 | 507 |
| 501 // Should be const but test_server()->GetURL(...) is not const. | 508 // Should be const but test_server()->GetURL(...) is not const. |
| 502 void NavigateToURL(const std::string& dest_html_file) { | 509 void NavigateToURL(const std::string& dest_html_file) { |
| 503 GURL dest_url = test_server()->GetURL(dest_html_file); | 510 GURL dest_url = test_server()->GetURL(dest_html_file); |
| 504 NavigateToURLImpl(dest_url, CURRENT_TAB); | 511 NavigateToURLImpl(dest_url, CURRENT_TAB); |
| 505 } | 512 } |
| 506 | 513 |
| 507 bool UrlIsInPrerenderManager(const std::string& html_file) { | 514 bool UrlIsInPrerenderManager(const std::string& html_file) { |
| 508 GURL dest_url = test_server()->GetURL(html_file); | 515 GURL dest_url = test_server()->GetURL(html_file); |
| (...skipping 168 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 677 | 684 |
| 678 bool display_test_result = false; | 685 bool display_test_result = false; |
| 679 ASSERT_TRUE(ui_test_utils::ExecuteJavaScriptAndExtractBool( | 686 ASSERT_TRUE(ui_test_utils::ExecuteJavaScriptAndExtractBool( |
| 680 tab_contents->render_view_host(), L"", | 687 tab_contents->render_view_host(), L"", |
| 681 L"window.domAutomationController.send(DidDisplayPass())", | 688 L"window.domAutomationController.send(DidDisplayPass())", |
| 682 &display_test_result)); | 689 &display_test_result)); |
| 683 EXPECT_TRUE(display_test_result); | 690 EXPECT_TRUE(display_test_result); |
| 684 } | 691 } |
| 685 } | 692 } |
| 686 | 693 |
| 694 // Opens the prerendered page using javascript functions in the |
| 695 // loader page. |javascript_function_name| should be a 0 argument function |
| 696 // which is invoked. |contents_should_be_shown| indicates whether the |
| 697 // prerendered page expects to become visible or stay hidden. |
| 698 void OpenDestURLWithJSImpl(const std::string& javascript_function_name, |
| 699 bool contents_should_be_shown) const { |
| 700 TestPrerenderContents* prerender_contents = GetPrerenderContents(); |
| 701 ASSERT_TRUE(prerender_contents != NULL); |
| 702 prerender_contents->set_should_be_shown(contents_should_be_shown); |
| 703 |
| 704 RenderViewHost* render_view_host = |
| 705 browser()->GetSelectedTabContents()->render_view_host(); |
| 706 render_view_host->ExecuteJavascriptInWebFrame( |
| 707 string16(), |
| 708 ASCIIToUTF16(javascript_function_name)); |
| 709 |
| 710 // Run message loop until the prerender contents is destroyed. |
| 711 ui_test_utils::RunMessageLoop(); |
| 712 } |
| 713 |
| 687 WaitForLoadPrerenderContentsFactory* prerender_contents_factory_; | 714 WaitForLoadPrerenderContentsFactory* prerender_contents_factory_; |
| 688 #if defined(ENABLE_SAFE_BROWSING) | 715 #if defined(ENABLE_SAFE_BROWSING) |
| 689 scoped_ptr<TestSafeBrowsingServiceFactory> safe_browsing_factory_; | 716 scoped_ptr<TestSafeBrowsingServiceFactory> safe_browsing_factory_; |
| 690 #endif | 717 #endif |
| 691 GURL dest_url_; | 718 GURL dest_url_; |
| 692 bool use_https_src_server_; | 719 bool use_https_src_server_; |
| 693 bool call_javascript_; | 720 bool call_javascript_; |
| 694 std::string loader_path_; | 721 std::string loader_path_; |
| 695 }; | 722 }; |
| 696 | 723 |
| (...skipping 689 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1386 | 1413 |
| 1387 // Checks that we cancel correctly when window.print() is called. | 1414 // Checks that we cancel correctly when window.print() is called. |
| 1388 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, PrerenderPrint) { | 1415 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, PrerenderPrint) { |
| 1389 PrerenderTestURL("files/prerender/prerender_print.html", | 1416 PrerenderTestURL("files/prerender/prerender_print.html", |
| 1390 FINAL_STATUS_WINDOW_PRINT, | 1417 FINAL_STATUS_WINDOW_PRINT, |
| 1391 1); | 1418 1); |
| 1392 } | 1419 } |
| 1393 | 1420 |
| 1394 // Checks that if a page is opened in a new window by javascript the | 1421 // Checks that if a page is opened in a new window by javascript the |
| 1395 // prerendered page is not used. | 1422 // prerendered page is not used. |
| 1396 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, | 1423 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, PrerenderWindowOpenerWindowOpen) { |
| 1397 PrerenderWindowOpenerJsOpenInNewPageTest) { | |
| 1398 PrerenderTestURL("files/prerender/prerender_page.html", | 1424 PrerenderTestURL("files/prerender/prerender_page.html", |
| 1399 FINAL_STATUS_WINDOW_OPENER, | 1425 FINAL_STATUS_WINDOW_OPENER, |
| 1400 1); | 1426 1); |
| 1401 OpenDestUrlInNewWindowViaJs(); | 1427 OpenDestURLViaWindowOpen(); |
| 1402 } | 1428 } |
| 1403 | 1429 |
| 1404 // Checks that if a page is opened due to click on a href with target="_blank" | 1430 // Checks that if a page is opened due to click on a href with target="_blank" |
| 1405 // the prerendered page is not used. | 1431 // the prerendered page is not used. |
| 1406 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, | 1432 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, PrerenderWindowOpenerClickTarget) { |
| 1407 PrerenderWindowOpenerClickOpenInNewPageTest) { | |
| 1408 PrerenderTestURL("files/prerender/prerender_page.html", | 1433 PrerenderTestURL("files/prerender/prerender_page.html", |
| 1409 FINAL_STATUS_WINDOW_OPENER, | 1434 FINAL_STATUS_WINDOW_OPENER, |
| 1410 1); | 1435 1); |
| 1411 OpenDestUrlInNewWindowViaClick(); | 1436 OpenDestURLViaClickTarget(); |
| 1412 } | 1437 } |
| 1413 | 1438 |
| 1414 // TODO(shishir): Add a test for the case when the page having the | 1439 // TODO(shishir): Add a test for the case when the page having the |
| 1415 // prerendering link already has an opener set. | 1440 // prerendering link already has an opener set. |
| 1416 | 1441 |
| 1417 // Checks that a top-level page which would normally request an SSL client | 1442 // Checks that a top-level page which would normally request an SSL client |
| 1418 // certificate will never be seen since it's an https top-level resource. | 1443 // certificate will never be seen since it's an https top-level resource. |
| 1419 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, PrerenderSSLClientCertTopLevel) { | 1444 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, PrerenderSSLClientCertTopLevel) { |
| 1420 net::TestServer::HTTPSOptions https_options; | 1445 net::TestServer::HTTPSOptions https_options; |
| 1421 https_options.request_client_certificate = true; | 1446 https_options.request_client_certificate = true; |
| (...skipping 208 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1630 FINAL_STATUS_CANCELLED, | 1655 FINAL_STATUS_CANCELLED, |
| 1631 1); | 1656 1); |
| 1632 // Post a task to cancel all the prerenders. | 1657 // Post a task to cancel all the prerenders. |
| 1633 MessageLoop::current()->PostTask(FROM_HERE, | 1658 MessageLoop::current()->PostTask(FROM_HERE, |
| 1634 NewRunnableFunction(CancelAllPrerenders, | 1659 NewRunnableFunction(CancelAllPrerenders, |
| 1635 prerender_manager())); | 1660 prerender_manager())); |
| 1636 ui_test_utils::RunMessageLoop(); | 1661 ui_test_utils::RunMessageLoop(); |
| 1637 EXPECT_TRUE(GetPrerenderContents() == NULL); | 1662 EXPECT_TRUE(GetPrerenderContents() == NULL); |
| 1638 } | 1663 } |
| 1639 | 1664 |
| 1640 // Flaky on windows: http://crbug.com/92478 | 1665 // Prerendering and history tests. |
| 1641 #if defined(OS_WIN) | 1666 // The prerendered page is navigated to in several ways [navigate via |
| 1642 #define MAYBE_BackToPrerenderedPage DISABLED_BackToPrerenderedPage | 1667 // omnibox, click on link, key-modified click to open in background tab, etc], |
| 1643 #else | 1668 // followed by a navigation to another page from the prerendered page, followed |
| 1644 #define MAYBE_BackToPrerenderedPage BackToPrerenderedPage | 1669 // by a back navigation. |
| 1645 #endif | |
| 1646 | 1670 |
| 1647 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, MAYBE_BackToPrerenderedPage) { | 1671 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, PrerenderNavigateClickGoBack) { |
| 1648 PrerenderTestURL("files/prerender/prerender_page_with_link.html", | 1672 PrerenderTestURL("files/prerender/prerender_page_with_link.html", |
| 1649 FINAL_STATUS_USED, | 1673 FINAL_STATUS_USED, |
| 1650 1); | 1674 1); |
| 1675 NavigateToDestURL(); |
| 1676 ClickToNextPageAfterPrerender(browser()); |
| 1677 GoBackToPrerender(browser()); |
| 1678 } |
| 1651 | 1679 |
| 1652 OpenDestUrlViaClick(); | 1680 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, |
| 1681 PrerenderNavigateNavigateGoBack) { |
| 1682 PrerenderTestURL("files/prerender/prerender_page_with_link.html", |
| 1683 FINAL_STATUS_USED, |
| 1684 1); |
| 1685 NavigateToDestURL(); |
| 1686 NavigateToNextPageAfterPrerender(browser()); |
| 1687 GoBackToPrerender(browser()); |
| 1688 } |
| 1653 | 1689 |
| 1654 // Click on the link in the page and wait for it to commit | 1690 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, PrerenderClickClickGoBack) { |
| 1655 { | 1691 PrerenderTestURL("files/prerender/prerender_page_with_link.html", |
| 1656 ui_test_utils::WindowedNotificationObserver new_page_observer( | 1692 FINAL_STATUS_USED, |
| 1657 content::NOTIFICATION_NAV_ENTRY_COMMITTED, | 1693 1); |
| 1658 NotificationService::AllSources()); | 1694 OpenDestURLViaClick(); |
| 1659 bool click_link_result = false; | 1695 ClickToNextPageAfterPrerender(browser()); |
| 1660 ASSERT_TRUE(ui_test_utils::ExecuteJavaScriptAndExtractBool( | 1696 GoBackToPrerender(browser()); |
| 1661 browser()->GetSelectedTabContents()->render_view_host(), L"", | 1697 } |
| 1662 L"window.domAutomationController.send(ClickOpenLink())", | |
| 1663 &click_link_result)); | |
| 1664 EXPECT_TRUE(click_link_result); | |
| 1665 new_page_observer.Wait(); | |
| 1666 } | |
| 1667 | 1698 |
| 1668 // Now, go back to the prerendered page. | 1699 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, PrerenderClickNavigateGoBack) { |
| 1669 { | 1700 PrerenderTestURL("files/prerender/prerender_page_with_link.html", |
| 1670 ui_test_utils::WindowedNotificationObserver back_nav_observer( | 1701 FINAL_STATUS_USED, |
| 1671 content::NOTIFICATION_NAV_ENTRY_COMMITTED, | 1702 1); |
| 1672 NotificationService::AllSources()); | 1703 OpenDestURLViaClick(); |
| 1673 browser()->GoBack(CURRENT_TAB); | 1704 NavigateToNextPageAfterPrerender(browser()); |
| 1674 back_nav_observer.Wait(); | 1705 GoBackToPrerender(browser()); |
| 1675 bool original_prerender_page = false; | 1706 } |
| 1676 ASSERT_TRUE(ui_test_utils::ExecuteJavaScriptAndExtractBool( | 1707 |
| 1677 browser()->GetSelectedTabContents()->render_view_host(), L"", | 1708 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, |
| 1678 L"window.domAutomationController.send(IsOriginalPrerenderPage())", | 1709 PrerenderClickNewWindowClickGoBack) { |
| 1679 &original_prerender_page)); | 1710 PrerenderTestURL("files/prerender/prerender_page_with_link.html", |
| 1680 EXPECT_TRUE(original_prerender_page); | 1711 FINAL_STATUS_USED, |
| 1681 } | 1712 1); |
| 1713 OpenDestURLViaClickNewWindow(); |
| 1714 Browser* new_browser = BrowserList::GetLastActive(); |
| 1715 NavigateToNextPageAfterPrerender(new_browser); |
| 1716 GoBackToPrerender(new_browser); |
| 1717 } |
| 1718 |
| 1719 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, |
| 1720 PrerenderClickNewWindowNavigateGoBack) { |
| 1721 PrerenderTestURL("files/prerender/prerender_page_with_link.html", |
| 1722 FINAL_STATUS_USED, |
| 1723 1); |
| 1724 OpenDestURLViaClickNewWindow(); |
| 1725 Browser* new_browser = BrowserList::GetLastActive(); |
| 1726 ClickToNextPageAfterPrerender(new_browser); |
| 1727 GoBackToPrerender(new_browser); |
| 1728 } |
| 1729 |
| 1730 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, |
| 1731 PrerenderClickNewForegroundTabClickGoBack) { |
| 1732 PrerenderTestURL("files/prerender/prerender_page_with_link.html", |
| 1733 FINAL_STATUS_USED, |
| 1734 1); |
| 1735 OpenDestURLViaClickNewForegroundTab(); |
| 1736 NavigateToNextPageAfterPrerender(browser()); |
| 1737 GoBackToPrerender(browser()); |
| 1738 } |
| 1739 |
| 1740 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, |
| 1741 PrerenderClickNewForegroundTabNavigateGoBack) { |
| 1742 PrerenderTestURL("files/prerender/prerender_page_with_link.html", |
| 1743 FINAL_STATUS_USED, |
| 1744 1); |
| 1745 OpenDestURLViaClickNewForegroundTab(); |
| 1746 ClickToNextPageAfterPrerender(browser()); |
| 1747 GoBackToPrerender(browser()); |
| 1748 } |
| 1749 |
| 1750 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, |
| 1751 PrerenderClickNewBackgroundTabClickGoBack) { |
| 1752 PrerenderTestURL("files/prerender/prerender_page_with_link.html", |
| 1753 FINAL_STATUS_USED, |
| 1754 1); |
| 1755 OpenDestURLViaClickNewBackgroundTab(); |
| 1756 // SelectNextTab completes synchronously, in terms of |
| 1757 // updating the active index. |
| 1758 browser()->SelectNextTab(); |
| 1759 NavigateToNextPageAfterPrerender(browser()); |
| 1760 GoBackToPrerender(browser()); |
| 1761 } |
| 1762 |
| 1763 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, |
| 1764 PrerenderClickNewBackgroundTabNavigateGoBack) { |
| 1765 PrerenderTestURL("files/prerender/prerender_page_with_link.html", |
| 1766 FINAL_STATUS_USED, |
| 1767 1); |
| 1768 OpenDestURLViaClickNewBackgroundTab(); |
| 1769 // SelectNextTab completes synchronously, in terms of |
| 1770 // updating the active index. |
| 1771 browser()->SelectNextTab(); |
| 1772 ClickToNextPageAfterPrerender(browser()); |
| 1773 GoBackToPrerender(browser()); |
| 1682 } | 1774 } |
| 1683 | 1775 |
| 1684 } // namespace prerender | 1776 } // namespace prerender |
| OLD | NEW |