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/stringprintf.h" | 9 #include "base/stringprintf.h" |
| 10 #include "base/string_util.h" | 10 #include "base/string_util.h" |
| (...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 88 switch (status) { | 88 switch (status) { |
| 89 case FINAL_STATUS_USED: | 89 case FINAL_STATUS_USED: |
| 90 case FINAL_STATUS_WINDOW_OPENER: | 90 case FINAL_STATUS_WINDOW_OPENER: |
| 91 case FINAL_STATUS_APP_TERMINATING: | 91 case FINAL_STATUS_APP_TERMINATING: |
| 92 case FINAL_STATUS_FRAGMENT_MISMATCH: | 92 case FINAL_STATUS_FRAGMENT_MISMATCH: |
| 93 case FINAL_STATUS_CACHE_OR_HISTORY_CLEARED: | 93 case FINAL_STATUS_CACHE_OR_HISTORY_CLEARED: |
| 94 // We'll crash the renderer after it's loaded. | 94 // We'll crash the renderer after it's loaded. |
| 95 case FINAL_STATUS_RENDERER_CRASHED: | 95 case FINAL_STATUS_RENDERER_CRASHED: |
| 96 case FINAL_STATUS_CANCELLED: | 96 case FINAL_STATUS_CANCELLED: |
| 97 case FINAL_STATUS_DEVTOOLS_ATTACHED: | 97 case FINAL_STATUS_DEVTOOLS_ATTACHED: |
| 98 case FINAL_STATUS_SESSION_STORAGE_NAMESPACE_MISMATCH: | |
| 98 return true; | 99 return true; |
| 99 default: | 100 default: |
| 100 return false; | 101 return false; |
| 101 } | 102 } |
| 102 } | 103 } |
| 103 | 104 |
| 104 // PrerenderContents that stops the UI message loop on DidStopLoading(). | 105 // PrerenderContents that stops the UI message loop on DidStopLoading(). |
| 105 class TestPrerenderContents : public PrerenderContents { | 106 class TestPrerenderContents : public PrerenderContents { |
| 106 public: | 107 public: |
| 107 TestPrerenderContents( | 108 TestPrerenderContents( |
| 108 PrerenderManager* prerender_manager, | 109 PrerenderManager* prerender_manager, |
| 109 PrerenderTracker* prerender_tracker, | 110 PrerenderTracker* prerender_tracker, |
| 111 SessionStorageNamespace* session_storage_namespace, | |
| 110 Profile* profile, | 112 Profile* profile, |
| 111 const GURL& url, | 113 const GURL& url, |
| 112 const GURL& referrer, | 114 const GURL& referrer, |
| 113 int expected_number_of_loads, | 115 int expected_number_of_loads, |
| 114 FinalStatus expected_final_status) | 116 FinalStatus expected_final_status) |
| 115 : PrerenderContents(prerender_manager, prerender_tracker, profile, | 117 : PrerenderContents(prerender_manager, prerender_tracker, |
| 118 session_storage_namespace, profile, | |
| 116 url, referrer, ORIGIN_LINK_REL_PRERENDER, | 119 url, referrer, ORIGIN_LINK_REL_PRERENDER, |
| 117 PrerenderManager::kNoExperiment), | 120 PrerenderManager::kNoExperiment), |
| 118 number_of_loads_(0), | 121 number_of_loads_(0), |
| 119 expected_number_of_loads_(expected_number_of_loads), | 122 expected_number_of_loads_(expected_number_of_loads), |
| 120 expected_final_status_(expected_final_status), | 123 expected_final_status_(expected_final_status), |
| 121 new_render_view_host_(NULL), | 124 new_render_view_host_(NULL), |
| 122 was_hidden_(false), | 125 was_hidden_(false), |
| 123 was_shown_(false), | 126 was_shown_(false), |
| 124 should_be_shown_(expected_final_status == FINAL_STATUS_USED), | 127 should_be_shown_(expected_final_status == FINAL_STATUS_USED), |
| 125 quit_message_loop_on_destruction_( | 128 quit_message_loop_on_destruction_( |
| (...skipping 162 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 288 const std::deque<FinalStatus>& expected_final_status_queue) | 291 const std::deque<FinalStatus>& expected_final_status_queue) |
| 289 : expected_number_of_loads_(expected_number_of_loads), | 292 : expected_number_of_loads_(expected_number_of_loads), |
| 290 expected_final_status_queue_(expected_final_status_queue) { | 293 expected_final_status_queue_(expected_final_status_queue) { |
| 291 VLOG(1) << "Factory created with queue length " << | 294 VLOG(1) << "Factory created with queue length " << |
| 292 expected_final_status_queue_.size(); | 295 expected_final_status_queue_.size(); |
| 293 } | 296 } |
| 294 | 297 |
| 295 virtual PrerenderContents* CreatePrerenderContents( | 298 virtual PrerenderContents* CreatePrerenderContents( |
| 296 PrerenderManager* prerender_manager, | 299 PrerenderManager* prerender_manager, |
| 297 PrerenderTracker* prerender_tracker, | 300 PrerenderTracker* prerender_tracker, |
| 301 SessionStorageNamespace* session_storage_namespace, | |
| 298 Profile* profile, | 302 Profile* profile, |
| 299 const GURL& url, | 303 const GURL& url, |
| 300 const GURL& referrer, | 304 const GURL& referrer, |
| 301 Origin origin, | 305 Origin origin, |
| 302 uint8 experiment_id) OVERRIDE { | 306 uint8 experiment_id) OVERRIDE { |
| 303 CHECK(!expected_final_status_queue_.empty()) << | 307 CHECK(!expected_final_status_queue_.empty()) << |
| 304 "Creating prerender contents for " << url.path() << | 308 "Creating prerender contents for " << url.path() << |
| 305 " with no expected final status"; | 309 " with no expected final status"; |
| 306 FinalStatus expected_final_status = expected_final_status_queue_.front(); | 310 FinalStatus expected_final_status = expected_final_status_queue_.front(); |
| 307 expected_final_status_queue_.pop_front(); | 311 expected_final_status_queue_.pop_front(); |
| 308 VLOG(1) << "Creating prerender contents for " << url.path() << | 312 VLOG(1) << "Creating prerender contents for " << url.path() << |
| 309 " with expected final status " << expected_final_status; | 313 " with expected final status " << expected_final_status; |
| 310 VLOG(1) << expected_final_status_queue_.size() << " left in the queue."; | 314 VLOG(1) << expected_final_status_queue_.size() << " left in the queue."; |
| 311 return new TestPrerenderContents(prerender_manager, prerender_tracker, | 315 return new TestPrerenderContents(prerender_manager, prerender_tracker, |
| 316 session_storage_namespace, | |
| 312 profile, url, | 317 profile, url, |
| 313 referrer, expected_number_of_loads_, | 318 referrer, expected_number_of_loads_, |
| 314 expected_final_status); | 319 expected_final_status); |
| 315 } | 320 } |
| 316 | 321 |
| 317 private: | 322 private: |
| 318 int expected_number_of_loads_; | 323 int expected_number_of_loads_; |
| 319 std::deque<FinalStatus> expected_final_status_queue_; | 324 std::deque<FinalStatus> expected_final_status_queue_; |
| 320 }; | 325 }; |
| 321 | 326 |
| (...skipping 230 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 552 browser->GoBack(CURRENT_TAB); | 557 browser->GoBack(CURRENT_TAB); |
| 553 back_nav_observer.Wait(); | 558 back_nav_observer.Wait(); |
| 554 bool original_prerender_page = false; | 559 bool original_prerender_page = false; |
| 555 ASSERT_TRUE(ui_test_utils::ExecuteJavaScriptAndExtractBool( | 560 ASSERT_TRUE(ui_test_utils::ExecuteJavaScriptAndExtractBool( |
| 556 browser->GetSelectedTabContents()->render_view_host(), L"", | 561 browser->GetSelectedTabContents()->render_view_host(), L"", |
| 557 L"window.domAutomationController.send(IsOriginalPrerenderPage())", | 562 L"window.domAutomationController.send(IsOriginalPrerenderPage())", |
| 558 &original_prerender_page)); | 563 &original_prerender_page)); |
| 559 EXPECT_TRUE(original_prerender_page); | 564 EXPECT_TRUE(original_prerender_page); |
| 560 } | 565 } |
| 561 | 566 |
| 567 // Goes back to the page that was active before the prerender was swapped | |
| 568 // in. This must be called when the prerendered page is the current page | |
| 569 // in the active tab. | |
| 570 void GoBackToPageBeforePrerender(Browser* browser) { | |
| 571 ui_test_utils::WindowedNotificationObserver back_nav_observer( | |
| 572 content::NOTIFICATION_NAV_ENTRY_COMMITTED, | |
| 573 content::NotificationService::AllSources()); | |
| 574 browser->GoBack(CURRENT_TAB); | |
| 575 back_nav_observer.Wait(); | |
| 576 bool js_result; | |
| 577 ASSERT_TRUE(ui_test_utils::ExecuteJavaScriptAndExtractBool( | |
| 578 browser->GetSelectedTabContents()->render_view_host(), L"", | |
| 579 L"window.domAutomationController.send(DidBackToOriginalPagePass())", | |
| 580 &js_result)); | |
| 581 EXPECT_TRUE(js_result); | |
| 582 } | |
| 583 | |
| 562 // Should be const but test_server()->GetURL(...) is not const. | 584 // Should be const but test_server()->GetURL(...) is not const. |
| 563 void NavigateToURL(const std::string& dest_html_file) { | 585 void NavigateToURL(const std::string& dest_html_file) { |
| 564 GURL dest_url = test_server()->GetURL(dest_html_file); | 586 GURL dest_url = test_server()->GetURL(dest_html_file); |
| 565 NavigateToURLImpl(dest_url, CURRENT_TAB); | 587 NavigateToURLImpl(dest_url, CURRENT_TAB); |
| 566 } | 588 } |
| 567 | 589 |
| 568 bool UrlIsInPrerenderManager(const std::string& html_file) { | 590 bool UrlIsInPrerenderManager(const std::string& html_file) { |
| 569 GURL dest_url = test_server()->GetURL(html_file); | 591 GURL dest_url = test_server()->GetURL(html_file); |
| 570 return (prerender_manager()->FindEntry(dest_url) != NULL); | 592 return (prerender_manager()->FindEntry(dest_url) != NULL); |
| 571 } | 593 } |
| (...skipping 229 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 801 } | 823 } |
| 802 | 824 |
| 803 // Checks that the visibility API works when the prerender is quickly opened | 825 // Checks that the visibility API works when the prerender is quickly opened |
| 804 // in a new tab before it stops loading. | 826 // in a new tab before it stops loading. |
| 805 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, PrerenderVisibilityQuickSwitch) { | 827 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, PrerenderVisibilityQuickSwitch) { |
| 806 PrerenderTestURL("files/prerender/prerender_visibility_quick.html", | 828 PrerenderTestURL("files/prerender/prerender_visibility_quick.html", |
| 807 FINAL_STATUS_USED, 0); | 829 FINAL_STATUS_USED, 0); |
| 808 NavigateToDestURL(); | 830 NavigateToDestURL(); |
| 809 } | 831 } |
| 810 | 832 |
| 811 // Checks that the visibility API works when opening a page in a new hidden | |
| 812 // tab. | |
| 813 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, PrerenderVisibilityBackgroundTab) { | |
| 814 PrerenderTestURL("files/prerender/prerender_visibility_hidden.html", | |
|
mmenke
2011/11/02 02:27:55
nit: The file this references is no longer needed
cbentzel
2011/11/02 15:57:08
Done.
| |
| 815 FINAL_STATUS_USED, | |
| 816 1); | |
| 817 NavigateToDestURLWithDisposition(NEW_BACKGROUND_TAB); | |
| 818 } | |
| 819 | |
| 820 // Checks that the visibility API works when opening a page in a new hidden | |
| 821 // tab, which is switched to before it stops loading. | |
| 822 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, | |
| 823 PrerenderVisibilityBackgroundTabQuickSwitch) { | |
| 824 PrerenderTestURL("files/prerender/prerender_visibility_hidden_quick.html", | |
|
mmenke
2011/11/02 02:27:55
nit: The file this references is no longer needed
cbentzel
2011/11/02 15:57:08
Done.
| |
| 825 FINAL_STATUS_USED, 0); | |
| 826 NavigateToDestURLWithDisposition(NEW_BACKGROUND_TAB); | |
| 827 } | |
| 828 | |
| 829 // Checks that the visibility API works when opening a page in a new foreground | |
| 830 // tab. | |
| 831 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, PrerenderVisibilityForegroundTab) { | |
| 832 PrerenderTestURL("files/prerender/prerender_visibility.html", | |
| 833 FINAL_STATUS_USED, | |
| 834 1); | |
| 835 NavigateToDestURLWithDisposition(NEW_FOREGROUND_TAB); | |
| 836 } | |
| 837 | |
| 838 // Checks that the visibility API works when the prerender is quickly opened | |
| 839 // in a new tab foreground before it stops loading. | |
| 840 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, | |
| 841 PrerenderVisibilityForegroundTabQuickSwitch) { | |
| 842 PrerenderTestURL("files/prerender/prerender_visibility_quick.html", | |
| 843 FINAL_STATUS_USED, 0); | |
| 844 NavigateToDestURL(); | |
| 845 } | |
| 846 | |
| 847 // Checks that the prerendering of a page is canceled correctly when a | 833 // Checks that the prerendering of a page is canceled correctly when a |
| 848 // Javascript alert is called. | 834 // Javascript alert is called. |
| 849 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, PrerenderAlertBeforeOnload) { | 835 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, PrerenderAlertBeforeOnload) { |
| 850 PrerenderTestURL("files/prerender/prerender_alert_before_onload.html", | 836 PrerenderTestURL("files/prerender/prerender_alert_before_onload.html", |
| 851 FINAL_STATUS_JAVASCRIPT_ALERT, | 837 FINAL_STATUS_JAVASCRIPT_ALERT, |
| 852 1); | 838 1); |
| 853 } | 839 } |
| 854 | 840 |
| 855 // Checks that the prerendering of a page is canceled correctly when a | 841 // Checks that the prerendering of a page is canceled correctly when a |
| 856 // Javascript alert is called. | 842 // Javascript alert is called. |
| (...skipping 684 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1541 // Checks that if a page is opened due to click on a href with target="_blank" | 1527 // Checks that if a page is opened due to click on a href with target="_blank" |
| 1542 // and both pages are in the same domain the prerendered page is not used. | 1528 // and both pages are in the same domain the prerendered page is not used. |
| 1543 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, | 1529 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, |
| 1544 PrerenderSameDomainWindowOpenerClickTarget) { | 1530 PrerenderSameDomainWindowOpenerClickTarget) { |
| 1545 PrerenderTestURL("files/prerender/prerender_page.html", | 1531 PrerenderTestURL("files/prerender/prerender_page.html", |
| 1546 FINAL_STATUS_WINDOW_OPENER, | 1532 FINAL_STATUS_WINDOW_OPENER, |
| 1547 1); | 1533 1); |
| 1548 OpenDestURLViaClickTarget(); | 1534 OpenDestURLViaClickTarget(); |
| 1549 } | 1535 } |
| 1550 | 1536 |
| 1551 // Checks that if a page is opened in a new window by javascript and both the | |
| 1552 // pages are in different domains, the prerendered page is used. | |
| 1553 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, | |
| 1554 PrerenderCrossDomainWindowOpenerWindowOpen) { | |
| 1555 PrerenderTestURL( | |
| 1556 GetCrossDomainTestUrl("files/prerender/prerender_page.html"), | |
| 1557 FINAL_STATUS_USED, | |
| 1558 1); | |
| 1559 OpenDestURLViaWindowOpen(); | |
| 1560 } | |
| 1561 | |
| 1562 // Checks that if a page is opened due to click on a href with target="_blank" | |
| 1563 // and both pages are in different domains, the prerendered page is used. | |
| 1564 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, | |
| 1565 PrerenderCrossDomainWindowOpenerClickTarget) { | |
| 1566 PrerenderTestURL( | |
| 1567 GetCrossDomainTestUrl("files/prerender/prerender_page.html"), | |
| 1568 FINAL_STATUS_USED, | |
| 1569 1); | |
| 1570 OpenDestURLViaClickTarget(); | |
| 1571 } | |
| 1572 | |
| 1573 // TODO(shishir): Add a test for the case when the page having the | |
| 1574 // prerendering link already has an opener set. | |
| 1575 | |
| 1576 // Checks that a top-level page which would normally request an SSL client | 1537 // Checks that a top-level page which would normally request an SSL client |
| 1577 // certificate will never be seen since it's an https top-level resource. | 1538 // certificate will never be seen since it's an https top-level resource. |
| 1578 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, PrerenderSSLClientCertTopLevel) { | 1539 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, PrerenderSSLClientCertTopLevel) { |
| 1579 net::TestServer::HTTPSOptions https_options; | 1540 net::TestServer::HTTPSOptions https_options; |
| 1580 https_options.request_client_certificate = true; | 1541 https_options.request_client_certificate = true; |
| 1581 net::TestServer https_server(https_options, | 1542 net::TestServer https_server(https_options, |
| 1582 FilePath(FILE_PATH_LITERAL("chrome/test/data"))); | 1543 FilePath(FILE_PATH_LITERAL("chrome/test/data"))); |
| 1583 ASSERT_TRUE(https_server.Start()); | 1544 ASSERT_TRUE(https_server.Start()); |
| 1584 GURL https_url = https_server.GetURL("files/prerender/prerender_page.html"); | 1545 GURL https_url = https_server.GetURL("files/prerender/prerender_page.html"); |
| 1585 PrerenderTestURL(https_url, FINAL_STATUS_SSL_CLIENT_CERTIFICATE_REQUESTED, 1); | 1546 PrerenderTestURL(https_url, FINAL_STATUS_SSL_CLIENT_CERTIFICATE_REQUESTED, 1); |
| (...skipping 246 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1832 | 1793 |
| 1833 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, PrerenderClickNavigateGoBack) { | 1794 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, PrerenderClickNavigateGoBack) { |
| 1834 PrerenderTestURL("files/prerender/prerender_page_with_link.html", | 1795 PrerenderTestURL("files/prerender/prerender_page_with_link.html", |
| 1835 FINAL_STATUS_USED, | 1796 FINAL_STATUS_USED, |
| 1836 1); | 1797 1); |
| 1837 OpenDestURLViaClick(); | 1798 OpenDestURLViaClick(); |
| 1838 NavigateToNextPageAfterPrerender(browser()); | 1799 NavigateToNextPageAfterPrerender(browser()); |
| 1839 GoBackToPrerender(browser()); | 1800 GoBackToPrerender(browser()); |
| 1840 } | 1801 } |
| 1841 | 1802 |
| 1842 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, | 1803 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, PrerenderClickNewWindow) { |
| 1843 PrerenderClickNewWindowClickGoBack) { | |
| 1844 PrerenderTestURL("files/prerender/prerender_page_with_link.html", | 1804 PrerenderTestURL("files/prerender/prerender_page_with_link.html", |
| 1845 FINAL_STATUS_USED, | 1805 FINAL_STATUS_SESSION_STORAGE_NAMESPACE_MISMATCH, |
| 1846 1); | 1806 1); |
| 1847 OpenDestURLViaClickNewWindow(); | 1807 OpenDestURLViaClickNewWindow(); |
| 1848 Browser* new_browser = BrowserList::GetLastActive(); | 1808 } |
| 1849 NavigateToNextPageAfterPrerender(new_browser); | 1809 |
| 1850 GoBackToPrerender(new_browser); | 1810 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, PrerenderClickNewForegroundTab) { |
| 1811 PrerenderTestURL("files/prerender/prerender_page_with_link.html", | |
| 1812 FINAL_STATUS_SESSION_STORAGE_NAMESPACE_MISMATCH, | |
| 1813 1); | |
| 1814 OpenDestURLViaClickNewForegroundTab(); | |
| 1815 } | |
| 1816 | |
| 1817 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, PrerenderClickNewBackgroundTab) { | |
| 1818 PrerenderTestURL("files/prerender/prerender_page_with_link.html", | |
| 1819 FINAL_STATUS_SESSION_STORAGE_NAMESPACE_MISMATCH, | |
| 1820 1); | |
| 1821 OpenDestURLViaClickNewBackgroundTab(); | |
| 1851 } | 1822 } |
| 1852 | 1823 |
| 1853 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, | 1824 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, |
| 1854 PrerenderClickNewWindowNavigateGoBack) { | |
| 1855 PrerenderTestURL("files/prerender/prerender_page_with_link.html", | |
| 1856 FINAL_STATUS_USED, | |
| 1857 1); | |
| 1858 OpenDestURLViaClickNewWindow(); | |
| 1859 Browser* new_browser = BrowserList::GetLastActive(); | |
| 1860 ClickToNextPageAfterPrerender(new_browser); | |
| 1861 GoBackToPrerender(new_browser); | |
| 1862 } | |
| 1863 | |
| 1864 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, | |
| 1865 PrerenderClickNewForegroundTabClickGoBack) { | |
| 1866 PrerenderTestURL("files/prerender/prerender_page_with_link.html", | |
| 1867 FINAL_STATUS_USED, | |
| 1868 1); | |
| 1869 OpenDestURLViaClickNewForegroundTab(); | |
| 1870 NavigateToNextPageAfterPrerender(browser()); | |
| 1871 GoBackToPrerender(browser()); | |
| 1872 } | |
| 1873 | |
| 1874 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, | |
| 1875 PrerenderClickNewForegroundTabNavigateGoBack) { | |
| 1876 PrerenderTestURL("files/prerender/prerender_page_with_link.html", | |
| 1877 FINAL_STATUS_USED, | |
| 1878 1); | |
| 1879 OpenDestURLViaClickNewForegroundTab(); | |
| 1880 ClickToNextPageAfterPrerender(browser()); | |
| 1881 GoBackToPrerender(browser()); | |
| 1882 } | |
| 1883 | |
| 1884 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, | |
| 1885 PrerenderClickNewBackgroundTabClickGoBack) { | |
| 1886 PrerenderTestURL("files/prerender/prerender_page_with_link.html", | |
| 1887 FINAL_STATUS_USED, | |
| 1888 1); | |
| 1889 OpenDestURLViaClickNewBackgroundTab(); | |
| 1890 // SelectNextTab completes synchronously, in terms of | |
| 1891 // updating the active index. | |
| 1892 browser()->SelectNextTab(); | |
| 1893 NavigateToNextPageAfterPrerender(browser()); | |
| 1894 GoBackToPrerender(browser()); | |
| 1895 } | |
| 1896 | |
| 1897 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, | |
| 1898 PrerenderClickNewBackgroundTabNavigateGoBack) { | |
| 1899 PrerenderTestURL("files/prerender/prerender_page_with_link.html", | |
| 1900 FINAL_STATUS_USED, | |
| 1901 1); | |
| 1902 OpenDestURLViaClickNewBackgroundTab(); | |
| 1903 // SelectNextTab completes synchronously, in terms of | |
| 1904 // updating the active index. | |
| 1905 browser()->SelectNextTab(); | |
| 1906 ClickToNextPageAfterPrerender(browser()); | |
| 1907 GoBackToPrerender(browser()); | |
| 1908 } | |
| 1909 | |
| 1910 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, | |
| 1911 NavigateToPrerenderedPageWhenDevToolsAttached) { | 1825 NavigateToPrerenderedPageWhenDevToolsAttached) { |
| 1912 DisableJavascriptCalls(); | 1826 DisableJavascriptCalls(); |
| 1913 TabContents* tab_contents = browser()->GetSelectedTabContents(); | 1827 TabContents* tab_contents = browser()->GetSelectedTabContents(); |
| 1914 RenderViewHost* inspected_rvh = tab_contents->render_view_host(); | 1828 RenderViewHost* inspected_rvh = tab_contents->render_view_host(); |
| 1915 DevToolsManager* manager = DevToolsManager::GetInstance(); | 1829 DevToolsManager* manager = DevToolsManager::GetInstance(); |
| 1916 FakeDevToolsClientHost client_host; | 1830 FakeDevToolsClientHost client_host; |
| 1917 manager->RegisterDevToolsClientHostFor(inspected_rvh, &client_host); | 1831 manager->RegisterDevToolsClientHostFor(inspected_rvh, &client_host); |
| 1918 const char* url = "files/prerender/prerender_page.html"; | 1832 const char* url = "files/prerender/prerender_page.html"; |
| 1919 PrerenderTestURL(url, FINAL_STATUS_DEVTOOLS_ATTACHED, 1); | 1833 PrerenderTestURL(url, FINAL_STATUS_DEVTOOLS_ATTACHED, 1); |
| 1920 NavigateToURL(url); | 1834 NavigateToURL(url); |
| 1921 } | 1835 } |
| 1922 | 1836 |
| 1837 // Validate that the sessionStorage namespace remains the same when swapping | |
| 1838 // in a prerendered page. | |
| 1839 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, PrerenderSessionStorage) { | |
| 1840 set_loader_path("files/prerender/prerender_loader_with_session_storage.html"); | |
| 1841 PrerenderTestURL(GetCrossDomainTestUrl("files/prerender/prerender_page.html"), | |
| 1842 FINAL_STATUS_USED, | |
| 1843 1); | |
| 1844 NavigateToDestURL(); | |
| 1845 GoBackToPageBeforePrerender(browser()); | |
| 1846 } | |
| 1847 | |
| 1923 } // namespace prerender | 1848 } // namespace prerender |
| OLD | NEW |