Chromium Code Reviews| 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(L"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(L"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(L"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) | |
|
cbentzel
2011/08/30 13:44:54
Oops!
| |
| 456 OpenDestURLWithJSImpl(L"MetaShiftClick", true); | |
| 457 #else | |
| 458 OpenDestURLWithJSImpl(L"CtrlShiftClick", true); | |
| 459 #endif | |
| 460 } | |
| 461 | |
| 462 void OpenDestURLViaClickNewBackgroundTab() const { | |
| 463 #if defined(OS_MACOSX) | |
| 464 OpenDestURLWithJSImpl(L"MetaClick", false); | |
| 465 #else | |
| 466 OpenDestURLWithJSImpl(L"CtrlClick", false); | |
| 467 #endif | |
| 468 } | |
| 469 | |
| 470 void OpenDestURLViaWindowOpen() const { | |
| 471 OpenDestURLWithJSImpl(L"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 bool click_link_result = false; | |
| 488 ASSERT_TRUE(ui_test_utils::ExecuteJavaScriptAndExtractBool( | 479 ASSERT_TRUE(ui_test_utils::ExecuteJavaScriptAndExtractBool( |
| 489 browser()->GetSelectedTabContents()->render_view_host(), L"", | 480 browser->GetSelectedTabContents()->render_view_host(), L"", |
| 490 L"window.domAutomationController.send(ClickOpenLink())", | 481 L"window.domAutomationController.send(ClickOpenLink())", |
| 491 &click_prerendered_link_result)); | 482 &click_link_result)); |
| 492 EXPECT_TRUE(click_prerendered_link_result); | 483 EXPECT_TRUE(click_link_result); |
| 484 new_page_observer.Wait(); | |
| 485 } | |
| 493 | 486 |
| 494 // If the prerender contents has not been destroyed, run message loop. | 487 void NavigateToNextPageAfterPrerender(Browser* browser) { |
| 495 if (GetPrerenderContents() != NULL) { | 488 ui_test_utils::NavigateToURL( |
| 496 prerender_contents->set_quit_message_loop_on_destruction(true); | 489 browser, |
| 497 ui_test_utils::RunMessageLoop(); | 490 test_server()->GetURL("files/prerender/prerender_page.html")); |
| 498 } | 491 } |
| 492 | |
| 493 void GoBackToPrerender(Browser* browser) { | |
| 494 ui_test_utils::WindowedNotificationObserver back_nav_observer( | |
| 495 content::NOTIFICATION_NAV_ENTRY_COMMITTED, | |
| 496 NotificationService::AllSources()); | |
| 497 browser->GoBack(CURRENT_TAB); | |
| 498 back_nav_observer.Wait(); | |
| 499 bool original_prerender_page = false; | |
| 500 ASSERT_TRUE(ui_test_utils::ExecuteJavaScriptAndExtractBool( | |
| 501 browser->GetSelectedTabContents()->render_view_host(), L"", | |
| 502 L"window.domAutomationController.send(IsOriginalPrerenderPage())", | |
| 503 &original_prerender_page)); | |
| 504 EXPECT_TRUE(original_prerender_page); | |
| 499 } | 505 } |
| 500 | 506 |
| 501 // Should be const but test_server()->GetURL(...) is not const. | 507 // Should be const but test_server()->GetURL(...) is not const. |
| 502 void NavigateToURL(const std::string& dest_html_file) { | 508 void NavigateToURL(const std::string& dest_html_file) { |
| 503 GURL dest_url = test_server()->GetURL(dest_html_file); | 509 GURL dest_url = test_server()->GetURL(dest_html_file); |
| 504 NavigateToURLImpl(dest_url, CURRENT_TAB); | 510 NavigateToURLImpl(dest_url, CURRENT_TAB); |
| 505 } | 511 } |
| 506 | 512 |
| 507 bool UrlIsInPrerenderManager(const std::string& html_file) { | 513 bool UrlIsInPrerenderManager(const std::string& html_file) { |
| 508 GURL dest_url = test_server()->GetURL(html_file); | 514 GURL dest_url = test_server()->GetURL(html_file); |
| (...skipping 168 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 677 | 683 |
| 678 bool display_test_result = false; | 684 bool display_test_result = false; |
| 679 ASSERT_TRUE(ui_test_utils::ExecuteJavaScriptAndExtractBool( | 685 ASSERT_TRUE(ui_test_utils::ExecuteJavaScriptAndExtractBool( |
| 680 tab_contents->render_view_host(), L"", | 686 tab_contents->render_view_host(), L"", |
| 681 L"window.domAutomationController.send(DidDisplayPass())", | 687 L"window.domAutomationController.send(DidDisplayPass())", |
| 682 &display_test_result)); | 688 &display_test_result)); |
| 683 EXPECT_TRUE(display_test_result); | 689 EXPECT_TRUE(display_test_result); |
| 684 } | 690 } |
| 685 } | 691 } |
| 686 | 692 |
| 693 // Opens the prerendered page using javascript functions in the | |
| 694 // loader page. |javascript_function_name| should be a 0 argument function | |
| 695 // which is invoked. |contents_should_be_shown| indicates whether the | |
| 696 // prerendered page expects to become visible or stay hidden. | |
| 697 void OpenDestURLWithJSImpl(const std::wstring& javascript_function_name, | |
| 698 bool contents_should_be_shown) const { | |
| 699 TestPrerenderContents* prerender_contents = GetPrerenderContents(); | |
| 700 ASSERT_TRUE(prerender_contents != NULL); | |
| 701 prerender_contents->set_quit_message_loop_on_destruction(false); | |
| 702 prerender_contents->set_should_be_shown(contents_should_be_shown); | |
| 703 | |
| 704 bool javascript_function_result = false; | |
| 705 std::wstring javascript_to_execute = | |
| 706 L"window.domAutomationController.send(" + | |
| 707 javascript_function_name + | |
| 708 L"())"; | |
| 709 ASSERT_TRUE(ui_test_utils::ExecuteJavaScriptAndExtractBool( | |
| 710 browser()->GetSelectedTabContents()->render_view_host(), L"", | |
| 711 javascript_to_execute, &javascript_function_result)); | |
| 712 EXPECT_TRUE(javascript_function_result); | |
| 713 | |
| 714 // If the prerender contents has not been destroyed, run message loop. | |
| 715 if (GetPrerenderContents() != NULL) { | |
| 716 prerender_contents->set_quit_message_loop_on_destruction(true); | |
| 717 ui_test_utils::RunMessageLoop(); | |
| 718 } | |
| 719 } | |
| 720 | |
| 687 WaitForLoadPrerenderContentsFactory* prerender_contents_factory_; | 721 WaitForLoadPrerenderContentsFactory* prerender_contents_factory_; |
| 688 #if defined(ENABLE_SAFE_BROWSING) | 722 #if defined(ENABLE_SAFE_BROWSING) |
| 689 scoped_ptr<TestSafeBrowsingServiceFactory> safe_browsing_factory_; | 723 scoped_ptr<TestSafeBrowsingServiceFactory> safe_browsing_factory_; |
| 690 #endif | 724 #endif |
| 691 GURL dest_url_; | 725 GURL dest_url_; |
| 692 bool use_https_src_server_; | 726 bool use_https_src_server_; |
| 693 bool call_javascript_; | 727 bool call_javascript_; |
| 694 std::string loader_path_; | 728 std::string loader_path_; |
| 695 }; | 729 }; |
| 696 | 730 |
| (...skipping 689 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1386 | 1420 |
| 1387 // Checks that we cancel correctly when window.print() is called. | 1421 // Checks that we cancel correctly when window.print() is called. |
| 1388 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, PrerenderPrint) { | 1422 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, PrerenderPrint) { |
| 1389 PrerenderTestURL("files/prerender/prerender_print.html", | 1423 PrerenderTestURL("files/prerender/prerender_print.html", |
| 1390 FINAL_STATUS_WINDOW_PRINT, | 1424 FINAL_STATUS_WINDOW_PRINT, |
| 1391 1); | 1425 1); |
| 1392 } | 1426 } |
| 1393 | 1427 |
| 1394 // Checks that if a page is opened in a new window by javascript the | 1428 // Checks that if a page is opened in a new window by javascript the |
| 1395 // prerendered page is not used. | 1429 // prerendered page is not used. |
| 1396 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, | 1430 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, PrerenderWindowOpenerWindowOpen) { |
| 1397 PrerenderWindowOpenerJsOpenInNewPageTest) { | |
| 1398 PrerenderTestURL("files/prerender/prerender_page.html", | 1431 PrerenderTestURL("files/prerender/prerender_page.html", |
| 1399 FINAL_STATUS_WINDOW_OPENER, | 1432 FINAL_STATUS_WINDOW_OPENER, |
| 1400 1); | 1433 1); |
| 1401 OpenDestUrlInNewWindowViaJs(); | 1434 OpenDestURLViaWindowOpen(); |
| 1402 } | 1435 } |
| 1403 | 1436 |
| 1404 // Checks that if a page is opened due to click on a href with target="_blank" | 1437 // Checks that if a page is opened due to click on a href with target="_blank" |
| 1405 // the prerendered page is not used. | 1438 // the prerendered page is not used. |
| 1406 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, | 1439 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, PrerenderWindowOpenerClickTarget) { |
| 1407 PrerenderWindowOpenerClickOpenInNewPageTest) { | |
| 1408 PrerenderTestURL("files/prerender/prerender_page.html", | 1440 PrerenderTestURL("files/prerender/prerender_page.html", |
| 1409 FINAL_STATUS_WINDOW_OPENER, | 1441 FINAL_STATUS_WINDOW_OPENER, |
| 1410 1); | 1442 1); |
| 1411 OpenDestUrlInNewWindowViaClick(); | 1443 OpenDestURLViaClickTarget(); |
| 1412 } | 1444 } |
| 1413 | 1445 |
| 1414 // TODO(shishir): Add a test for the case when the page having the | 1446 // TODO(shishir): Add a test for the case when the page having the |
| 1415 // prerendering link already has an opener set. | 1447 // prerendering link already has an opener set. |
| 1416 | 1448 |
| 1417 // Checks that a top-level page which would normally request an SSL client | 1449 // 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. | 1450 // certificate will never be seen since it's an https top-level resource. |
| 1419 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, PrerenderSSLClientCertTopLevel) { | 1451 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, PrerenderSSLClientCertTopLevel) { |
| 1420 net::TestServer::HTTPSOptions https_options; | 1452 net::TestServer::HTTPSOptions https_options; |
| 1421 https_options.request_client_certificate = true; | 1453 https_options.request_client_certificate = true; |
| (...skipping 208 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1630 FINAL_STATUS_CANCELLED, | 1662 FINAL_STATUS_CANCELLED, |
| 1631 1); | 1663 1); |
| 1632 // Post a task to cancel all the prerenders. | 1664 // Post a task to cancel all the prerenders. |
| 1633 MessageLoop::current()->PostTask(FROM_HERE, | 1665 MessageLoop::current()->PostTask(FROM_HERE, |
| 1634 NewRunnableFunction(CancelAllPrerenders, | 1666 NewRunnableFunction(CancelAllPrerenders, |
| 1635 prerender_manager())); | 1667 prerender_manager())); |
| 1636 ui_test_utils::RunMessageLoop(); | 1668 ui_test_utils::RunMessageLoop(); |
| 1637 EXPECT_TRUE(GetPrerenderContents() == NULL); | 1669 EXPECT_TRUE(GetPrerenderContents() == NULL); |
| 1638 } | 1670 } |
| 1639 | 1671 |
| 1640 // Flaky on windows: http://crbug.com/92478 | 1672 // Prerendering and history tests. |
| 1641 #if defined(OS_WIN) | 1673 // The prerendered page is navigated to in several ways [navigate via |
| 1642 #define MAYBE_BackToPrerenderedPage DISABLED_BackToPrerenderedPage | 1674 // omnibox, click on link, key-modified click to open in background tab, etc], |
| 1643 #else | 1675 // followed by a navigation to another page from the prerendered page, followed |
| 1644 #define MAYBE_BackToPrerenderedPage BackToPrerenderedPage | 1676 // by a back navigation. |
| 1645 #endif | |
| 1646 | 1677 |
| 1647 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, MAYBE_BackToPrerenderedPage) { | 1678 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, PrerenderNavigateClickGoBack) { |
| 1648 PrerenderTestURL("files/prerender/prerender_page_with_link.html", | 1679 PrerenderTestURL("files/prerender/prerender_page_with_link.html", |
| 1649 FINAL_STATUS_USED, | 1680 FINAL_STATUS_USED, |
| 1650 1); | 1681 1); |
| 1682 NavigateToDestURL(); | |
| 1683 ClickToNextPageAfterPrerender(browser()); | |
| 1684 GoBackToPrerender(browser()); | |
| 1685 } | |
| 1651 | 1686 |
| 1652 OpenDestUrlViaClick(); | 1687 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, |
| 1688 PrerenderNavigateNavigateGoBack) { | |
| 1689 PrerenderTestURL("files/prerender/prerender_page_with_link.html", | |
| 1690 FINAL_STATUS_USED, | |
| 1691 1); | |
| 1692 NavigateToDestURL(); | |
| 1693 NavigateToNextPageAfterPrerender(browser()); | |
| 1694 GoBackToPrerender(browser()); | |
| 1695 } | |
| 1653 | 1696 |
| 1654 // Click on the link in the page and wait for it to commit | 1697 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, PrerenderClickClickGoBack) { |
| 1655 { | 1698 PrerenderTestURL("files/prerender/prerender_page_with_link.html", |
| 1656 ui_test_utils::WindowedNotificationObserver new_page_observer( | 1699 FINAL_STATUS_USED, |
| 1657 content::NOTIFICATION_NAV_ENTRY_COMMITTED, | 1700 1); |
| 1658 NotificationService::AllSources()); | 1701 OpenDestURLViaClick(); |
| 1659 bool click_link_result = false; | 1702 ClickToNextPageAfterPrerender(browser()); |
| 1660 ASSERT_TRUE(ui_test_utils::ExecuteJavaScriptAndExtractBool( | 1703 GoBackToPrerender(browser()); |
| 1661 browser()->GetSelectedTabContents()->render_view_host(), L"", | 1704 } |
| 1662 L"window.domAutomationController.send(ClickOpenLink())", | |
| 1663 &click_link_result)); | |
| 1664 EXPECT_TRUE(click_link_result); | |
| 1665 new_page_observer.Wait(); | |
| 1666 } | |
| 1667 | 1705 |
| 1668 // Now, go back to the prerendered page. | 1706 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, PrerenderClickNavigateGoBack) { |
| 1669 { | 1707 PrerenderTestURL("files/prerender/prerender_page_with_link.html", |
| 1670 ui_test_utils::WindowedNotificationObserver back_nav_observer( | 1708 FINAL_STATUS_USED, |
| 1671 content::NOTIFICATION_NAV_ENTRY_COMMITTED, | 1709 1); |
| 1672 NotificationService::AllSources()); | 1710 OpenDestURLViaClick(); |
| 1673 browser()->GoBack(CURRENT_TAB); | 1711 NavigateToNextPageAfterPrerender(browser()); |
| 1674 back_nav_observer.Wait(); | 1712 GoBackToPrerender(browser()); |
| 1675 bool original_prerender_page = false; | 1713 } |
| 1676 ASSERT_TRUE(ui_test_utils::ExecuteJavaScriptAndExtractBool( | 1714 |
| 1677 browser()->GetSelectedTabContents()->render_view_host(), L"", | 1715 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, |
| 1678 L"window.domAutomationController.send(IsOriginalPrerenderPage())", | 1716 PrerenderClickNewWindowClickGoBack) { |
| 1679 &original_prerender_page)); | 1717 PrerenderTestURL("files/prerender/prerender_page_with_link.html", |
| 1680 EXPECT_TRUE(original_prerender_page); | 1718 FINAL_STATUS_USED, |
| 1681 } | 1719 1); |
| 1720 OpenDestURLViaClickNewWindow(); | |
| 1721 Browser* new_browser = BrowserList::GetLastActive(); | |
| 1722 NavigateToNextPageAfterPrerender(new_browser); | |
| 1723 GoBackToPrerender(new_browser); | |
| 1724 } | |
| 1725 | |
| 1726 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, | |
| 1727 PrerenderClickNewWindowNavigateGoBack) { | |
| 1728 PrerenderTestURL("files/prerender/prerender_page_with_link.html", | |
| 1729 FINAL_STATUS_USED, | |
| 1730 1); | |
| 1731 OpenDestURLViaClickNewWindow(); | |
| 1732 Browser* new_browser = BrowserList::GetLastActive(); | |
| 1733 ClickToNextPageAfterPrerender(new_browser); | |
| 1734 GoBackToPrerender(new_browser); | |
| 1735 } | |
| 1736 | |
| 1737 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, | |
| 1738 PrerenderClickNewForegroundTabClickGoBack) { | |
| 1739 PrerenderTestURL("files/prerender/prerender_page_with_link.html", | |
| 1740 FINAL_STATUS_USED, | |
| 1741 1); | |
| 1742 OpenDestURLViaClickNewForegroundTab(); | |
| 1743 NavigateToNextPageAfterPrerender(browser()); | |
| 1744 GoBackToPrerender(browser()); | |
| 1745 } | |
| 1746 | |
| 1747 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, | |
| 1748 PrerenderClickNewForegroundTabNavigateGoBack) { | |
| 1749 PrerenderTestURL("files/prerender/prerender_page_with_link.html", | |
| 1750 FINAL_STATUS_USED, | |
| 1751 1); | |
| 1752 OpenDestURLViaClickNewForegroundTab(); | |
| 1753 ClickToNextPageAfterPrerender(browser()); | |
| 1754 GoBackToPrerender(browser()); | |
| 1755 } | |
| 1756 | |
| 1757 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, | |
| 1758 PrerenderClickNewBackgroundTabClickGoBack) { | |
| 1759 PrerenderTestURL("files/prerender/prerender_page_with_link.html", | |
| 1760 FINAL_STATUS_USED, | |
| 1761 1); | |
| 1762 OpenDestURLViaClickNewBackgroundTab(); | |
| 1763 // SelectNextTab completes synchronously, in terms of | |
| 1764 // updating the active index. | |
| 1765 browser()->SelectNextTab(); | |
| 1766 NavigateToNextPageAfterPrerender(browser()); | |
| 1767 GoBackToPrerender(browser()); | |
| 1768 } | |
| 1769 | |
| 1770 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, | |
| 1771 PrerenderClickNewBackgroundTabNavigateGoBack) { | |
| 1772 PrerenderTestURL("files/prerender/prerender_page_with_link.html", | |
| 1773 FINAL_STATUS_USED, | |
| 1774 1); | |
| 1775 OpenDestURLViaClickNewBackgroundTab(); | |
| 1776 // SelectNextTab completes synchronously, in terms of | |
| 1777 // updating the active index. | |
| 1778 browser()->SelectNextTab(); | |
| 1779 ClickToNextPageAfterPrerender(browser()); | |
| 1780 GoBackToPrerender(browser()); | |
| 1682 } | 1781 } |
| 1683 | 1782 |
| 1684 } // namespace prerender | 1783 } // namespace prerender |
| OLD | NEW |