| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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 <stddef.h> | 5 #include <stddef.h> |
| 6 #include <deque> | 6 #include <deque> |
| 7 #include <set> | 7 #include <set> |
| 8 #include <string> | 8 #include <string> |
| 9 #include <unordered_map> | 9 #include <unordered_map> |
| 10 #include <utility> | 10 #include <utility> |
| (...skipping 1164 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1175 1, expected_final_status); | 1175 1, expected_final_status); |
| 1176 std::vector<TestPrerender*> prerenders; | 1176 std::vector<TestPrerender*> prerenders; |
| 1177 PrerenderTestURLImpl(url, | 1177 PrerenderTestURLImpl(url, |
| 1178 expected_final_status_queue, | 1178 expected_final_status_queue, |
| 1179 expected_number_of_loads).release(&prerenders); | 1179 expected_number_of_loads).release(&prerenders); |
| 1180 CHECK_EQ(1u, prerenders.size()); | 1180 CHECK_EQ(1u, prerenders.size()); |
| 1181 return std::unique_ptr<TestPrerender>(prerenders[0]); | 1181 return std::unique_ptr<TestPrerender>(prerenders[0]); |
| 1182 } | 1182 } |
| 1183 | 1183 |
| 1184 void NavigateToDestURL() const { | 1184 void NavigateToDestURL() const { |
| 1185 NavigateToDestURLWithDisposition(CURRENT_TAB, true); | 1185 NavigateToDestURLWithDisposition(WindowOpenDisposition::CURRENT_TAB, true); |
| 1186 } | 1186 } |
| 1187 | 1187 |
| 1188 // Opens the url in a new tab, with no opener. | 1188 // Opens the url in a new tab, with no opener. |
| 1189 void NavigateToDestURLWithDisposition( | 1189 void NavigateToDestURLWithDisposition( |
| 1190 WindowOpenDisposition disposition, | 1190 WindowOpenDisposition disposition, |
| 1191 bool expect_swap_to_succeed) const { | 1191 bool expect_swap_to_succeed) const { |
| 1192 NavigateToURLWithParams( | 1192 NavigateToURLWithParams( |
| 1193 content::OpenURLParams(dest_url_, Referrer(), disposition, | 1193 content::OpenURLParams(dest_url_, Referrer(), disposition, |
| 1194 ui::PAGE_TRANSITION_TYPED, false), | 1194 ui::PAGE_TRANSITION_TYPED, false), |
| 1195 expect_swap_to_succeed); | 1195 expect_swap_to_succeed); |
| 1196 } | 1196 } |
| 1197 | 1197 |
| 1198 void NavigateToURL(const std::string& dest_html_file) const { | 1198 void NavigateToURL(const std::string& dest_html_file) const { |
| 1199 NavigateToURLWithDisposition(dest_html_file, CURRENT_TAB, true); | 1199 NavigateToURLWithDisposition(dest_html_file, |
| 1200 WindowOpenDisposition::CURRENT_TAB, true); |
| 1200 } | 1201 } |
| 1201 | 1202 |
| 1202 void NavigateToURLWithDisposition(const std::string& dest_html_file, | 1203 void NavigateToURLWithDisposition(const std::string& dest_html_file, |
| 1203 WindowOpenDisposition disposition, | 1204 WindowOpenDisposition disposition, |
| 1204 bool expect_swap_to_succeed) const { | 1205 bool expect_swap_to_succeed) const { |
| 1205 GURL dest_url = embedded_test_server()->GetURL(dest_html_file); | 1206 GURL dest_url = embedded_test_server()->GetURL(dest_html_file); |
| 1206 NavigateToURLWithDisposition(dest_url, disposition, expect_swap_to_succeed); | 1207 NavigateToURLWithDisposition(dest_url, disposition, expect_swap_to_succeed); |
| 1207 } | 1208 } |
| 1208 | 1209 |
| 1209 void NavigateToURLWithDisposition(const GURL& dest_url, | 1210 void NavigateToURLWithDisposition(const GURL& dest_url, |
| (...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1272 void NavigateToNextPageAfterPrerender() const { | 1273 void NavigateToNextPageAfterPrerender() const { |
| 1273 ui_test_utils::NavigateToURL( | 1274 ui_test_utils::NavigateToURL( |
| 1274 current_browser(), | 1275 current_browser(), |
| 1275 embedded_test_server()->GetURL("/prerender/prerender_page.html")); | 1276 embedded_test_server()->GetURL("/prerender/prerender_page.html")); |
| 1276 } | 1277 } |
| 1277 | 1278 |
| 1278 // Called after the prerendered page has been navigated to and then away from. | 1279 // Called after the prerendered page has been navigated to and then away from. |
| 1279 // Navigates back through the history to the prerendered page. | 1280 // Navigates back through the history to the prerendered page. |
| 1280 void GoBackToPrerender() { | 1281 void GoBackToPrerender() { |
| 1281 TestNavigationObserver back_nav_observer(GetActiveWebContents()); | 1282 TestNavigationObserver back_nav_observer(GetActiveWebContents()); |
| 1282 chrome::GoBack(current_browser(), CURRENT_TAB); | 1283 chrome::GoBack(current_browser(), WindowOpenDisposition::CURRENT_TAB); |
| 1283 back_nav_observer.Wait(); | 1284 back_nav_observer.Wait(); |
| 1284 bool original_prerender_page = false; | 1285 bool original_prerender_page = false; |
| 1285 ASSERT_TRUE(content::ExecuteScriptAndExtractBool( | 1286 ASSERT_TRUE(content::ExecuteScriptAndExtractBool( |
| 1286 GetActiveWebContents(), | 1287 GetActiveWebContents(), |
| 1287 "window.domAutomationController.send(IsOriginalPrerenderPage())", | 1288 "window.domAutomationController.send(IsOriginalPrerenderPage())", |
| 1288 &original_prerender_page)); | 1289 &original_prerender_page)); |
| 1289 EXPECT_TRUE(original_prerender_page); | 1290 EXPECT_TRUE(original_prerender_page); |
| 1290 } | 1291 } |
| 1291 | 1292 |
| 1292 // Goes back to the page that was active before the prerender was swapped | 1293 // Goes back to the page that was active before the prerender was swapped |
| 1293 // in. This must be called when the prerendered page is the current page | 1294 // in. This must be called when the prerendered page is the current page |
| 1294 // in the active tab. | 1295 // in the active tab. |
| 1295 void GoBackToPageBeforePrerender() { | 1296 void GoBackToPageBeforePrerender() { |
| 1296 WebContents* tab = GetActiveWebContents(); | 1297 WebContents* tab = GetActiveWebContents(); |
| 1297 ASSERT_TRUE(tab); | 1298 ASSERT_TRUE(tab); |
| 1298 EXPECT_FALSE(tab->IsLoading()); | 1299 EXPECT_FALSE(tab->IsLoading()); |
| 1299 TestNavigationObserver back_nav_observer(tab); | 1300 TestNavigationObserver back_nav_observer(tab); |
| 1300 chrome::GoBack(current_browser(), CURRENT_TAB); | 1301 chrome::GoBack(current_browser(), WindowOpenDisposition::CURRENT_TAB); |
| 1301 back_nav_observer.Wait(); | 1302 back_nav_observer.Wait(); |
| 1302 bool js_result; | 1303 bool js_result; |
| 1303 ASSERT_TRUE(content::ExecuteScriptAndExtractBool( | 1304 ASSERT_TRUE(content::ExecuteScriptAndExtractBool( |
| 1304 tab, | 1305 tab, |
| 1305 "window.domAutomationController.send(DidBackToOriginalPagePass())", | 1306 "window.domAutomationController.send(DidBackToOriginalPagePass())", |
| 1306 &js_result)); | 1307 &js_result)); |
| 1307 EXPECT_TRUE(js_result); | 1308 EXPECT_TRUE(js_result); |
| 1308 } | 1309 } |
| 1309 | 1310 |
| 1310 bool UrlIsInPrerenderManager(const std::string& html_file) const { | 1311 bool UrlIsInPrerenderManager(const std::string& html_file) const { |
| (...skipping 309 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1620 ASSERT_TRUE(GetPrerenderManager()); | 1621 ASSERT_TRUE(GetPrerenderManager()); |
| 1621 // Make sure in navigating we have a URL to use in the PrerenderManager. | 1622 // Make sure in navigating we have a URL to use in the PrerenderManager. |
| 1622 ASSERT_TRUE(GetPrerenderContents()); | 1623 ASSERT_TRUE(GetPrerenderContents()); |
| 1623 | 1624 |
| 1624 WebContents* web_contents = GetPrerenderContents()->prerender_contents(); | 1625 WebContents* web_contents = GetPrerenderContents()->prerender_contents(); |
| 1625 | 1626 |
| 1626 // Navigate and wait for either the load to finish normally or for a swap to | 1627 // Navigate and wait for either the load to finish normally or for a swap to |
| 1627 // occur. | 1628 // occur. |
| 1628 // TODO(davidben): The only handles CURRENT_TAB navigations, which is the | 1629 // TODO(davidben): The only handles CURRENT_TAB navigations, which is the |
| 1629 // only case tested or prerendered right now. | 1630 // only case tested or prerendered right now. |
| 1630 CHECK_EQ(CURRENT_TAB, params.disposition); | 1631 CHECK_EQ(WindowOpenDisposition::CURRENT_TAB, params.disposition); |
| 1631 NavigationOrSwapObserver swap_observer(current_browser()->tab_strip_model(), | 1632 NavigationOrSwapObserver swap_observer(current_browser()->tab_strip_model(), |
| 1632 GetActiveWebContents()); | 1633 GetActiveWebContents()); |
| 1633 WebContents* target_web_contents = current_browser()->OpenURL(params); | 1634 WebContents* target_web_contents = current_browser()->OpenURL(params); |
| 1634 swap_observer.Wait(); | 1635 swap_observer.Wait(); |
| 1635 | 1636 |
| 1636 if (web_contents && expect_swap_to_succeed) { | 1637 if (web_contents && expect_swap_to_succeed) { |
| 1637 EXPECT_EQ(web_contents, target_web_contents); | 1638 EXPECT_EQ(web_contents, target_web_contents); |
| 1638 if (call_javascript_) | 1639 if (call_javascript_) |
| 1639 EXPECT_TRUE(DidDisplayPass(web_contents)); | 1640 EXPECT_TRUE(DidDisplayPass(web_contents)); |
| 1640 } | 1641 } |
| (...skipping 107 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1748 | 1749 |
| 1749 const GURL prerender_page_url = | 1750 const GURL prerender_page_url = |
| 1750 embedded_test_server()->GetURL("/prerender/prerender_page.html"); | 1751 embedded_test_server()->GetURL("/prerender/prerender_page.html"); |
| 1751 EXPECT_FALSE(IsEmptyPrerenderLinkManager()); | 1752 EXPECT_FALSE(IsEmptyPrerenderLinkManager()); |
| 1752 EXPECT_TRUE(GetPrerenderContentsFor(prerender_page_url)); | 1753 EXPECT_TRUE(GetPrerenderContentsFor(prerender_page_url)); |
| 1753 | 1754 |
| 1754 // Now navigate to our target page. | 1755 // Now navigate to our target page. |
| 1755 NavigationOrSwapObserver swap_observer(current_browser()->tab_strip_model(), | 1756 NavigationOrSwapObserver swap_observer(current_browser()->tab_strip_model(), |
| 1756 GetActiveWebContents()); | 1757 GetActiveWebContents()); |
| 1757 ui_test_utils::NavigateToURLWithDisposition( | 1758 ui_test_utils::NavigateToURLWithDisposition( |
| 1758 current_browser(), prerender_page_url, CURRENT_TAB, | 1759 current_browser(), prerender_page_url, WindowOpenDisposition::CURRENT_TAB, |
| 1759 ui_test_utils::BROWSER_TEST_NONE); | 1760 ui_test_utils::BROWSER_TEST_NONE); |
| 1760 swap_observer.Wait(); | 1761 swap_observer.Wait(); |
| 1761 | 1762 |
| 1762 EXPECT_TRUE(IsEmptyPrerenderLinkManager()); | 1763 EXPECT_TRUE(IsEmptyPrerenderLinkManager()); |
| 1763 } | 1764 } |
| 1764 | 1765 |
| 1765 // Checks that pending prerenders which are canceled before they are launched | 1766 // Checks that pending prerenders which are canceled before they are launched |
| 1766 // never get started. | 1767 // never get started. |
| 1767 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, PrerenderPageRemovesPending) { | 1768 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, PrerenderPageRemovesPending) { |
| 1768 PrerenderTestURL("/prerender/prerender_page_removes_pending.html", | 1769 PrerenderTestURL("/prerender/prerender_page_removes_pending.html", |
| (...skipping 145 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1914 base::Bind(&CreateHangingFirstRequestInterceptorOnIO, kNoCommitUrl, file, | 1915 base::Bind(&CreateHangingFirstRequestInterceptorOnIO, kNoCommitUrl, file, |
| 1915 prerender_start_loop.QuitClosure())); | 1916 prerender_start_loop.QuitClosure())); |
| 1916 DisableJavascriptCalls(); | 1917 DisableJavascriptCalls(); |
| 1917 PrerenderTestURL(kNoCommitUrl, | 1918 PrerenderTestURL(kNoCommitUrl, |
| 1918 FINAL_STATUS_NAVIGATION_UNCOMMITTED, | 1919 FINAL_STATUS_NAVIGATION_UNCOMMITTED, |
| 1919 0); | 1920 0); |
| 1920 // Wait for the hanging request to be scheduled. | 1921 // Wait for the hanging request to be scheduled. |
| 1921 prerender_start_loop.Run(); | 1922 prerender_start_loop.Run(); |
| 1922 | 1923 |
| 1923 // Navigate to the URL, but assume the contents won't be swapped in. | 1924 // Navigate to the URL, but assume the contents won't be swapped in. |
| 1924 NavigateToDestURLWithDisposition(CURRENT_TAB, false); | 1925 NavigateToDestURLWithDisposition(WindowOpenDisposition::CURRENT_TAB, false); |
| 1925 } | 1926 } |
| 1926 | 1927 |
| 1927 // Checks that client redirects don't add alias URLs until after they commit. | 1928 // Checks that client redirects don't add alias URLs until after they commit. |
| 1928 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, PrerenderNoCommitNoSwap2) { | 1929 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, PrerenderNoCommitNoSwap2) { |
| 1929 // Navigate to a page that then navigates to a URL that never commits. | 1930 // Navigate to a page that then navigates to a URL that never commits. |
| 1930 const GURL kNoCommitUrl("http://never-respond.example.com"); | 1931 const GURL kNoCommitUrl("http://never-respond.example.com"); |
| 1931 base::FilePath file(GetTestPath("prerender_page.html")); | 1932 base::FilePath file(GetTestPath("prerender_page.html")); |
| 1932 | 1933 |
| 1933 base::RunLoop prerender_start_loop; | 1934 base::RunLoop prerender_start_loop; |
| 1934 BrowserThread::PostTask( | 1935 BrowserThread::PostTask( |
| 1935 BrowserThread::IO, FROM_HERE, | 1936 BrowserThread::IO, FROM_HERE, |
| 1936 base::Bind(&CreateHangingFirstRequestInterceptorOnIO, kNoCommitUrl, file, | 1937 base::Bind(&CreateHangingFirstRequestInterceptorOnIO, kNoCommitUrl, file, |
| 1937 prerender_start_loop.QuitClosure())); | 1938 prerender_start_loop.QuitClosure())); |
| 1938 DisableJavascriptCalls(); | 1939 DisableJavascriptCalls(); |
| 1939 PrerenderTestURL(CreateClientRedirect(kNoCommitUrl.spec()), | 1940 PrerenderTestURL(CreateClientRedirect(kNoCommitUrl.spec()), |
| 1940 FINAL_STATUS_APP_TERMINATING, 1); | 1941 FINAL_STATUS_APP_TERMINATING, 1); |
| 1941 // Wait for the hanging request to be scheduled. | 1942 // Wait for the hanging request to be scheduled. |
| 1942 prerender_start_loop.Run(); | 1943 prerender_start_loop.Run(); |
| 1943 | 1944 |
| 1944 // Navigating to the second URL should not swap. | 1945 // Navigating to the second URL should not swap. |
| 1945 NavigateToURLWithDisposition(kNoCommitUrl, CURRENT_TAB, false); | 1946 NavigateToURLWithDisposition(kNoCommitUrl, WindowOpenDisposition::CURRENT_TAB, |
| 1947 false); |
| 1946 } | 1948 } |
| 1947 | 1949 |
| 1948 // Checks that the prerendering of a page is canceled correctly when a | 1950 // Checks that the prerendering of a page is canceled correctly when a |
| 1949 // Javascript alert is called. | 1951 // Javascript alert is called. |
| 1950 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, PrerenderAlertBeforeOnload) { | 1952 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, PrerenderAlertBeforeOnload) { |
| 1951 PrerenderTestURL("/prerender/prerender_alert_before_onload.html", | 1953 PrerenderTestURL("/prerender/prerender_alert_before_onload.html", |
| 1952 FINAL_STATUS_JAVASCRIPT_ALERT, 0); | 1954 FINAL_STATUS_JAVASCRIPT_ALERT, 0); |
| 1953 } | 1955 } |
| 1954 | 1956 |
| 1955 // Checks that the prerendering of a page is canceled correctly when a | 1957 // Checks that the prerendering of a page is canceled correctly when a |
| (...skipping 172 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2128 0); | 2130 0); |
| 2129 | 2131 |
| 2130 GURL navigate_url = embedded_test_server()->GetURL( | 2132 GURL navigate_url = embedded_test_server()->GetURL( |
| 2131 "/prerender/prerender_location_replace.html?" + | 2133 "/prerender/prerender_location_replace.html?" + |
| 2132 net::EscapeQueryParamValue(dest_url.spec(), false) + "#navigate"); | 2134 net::EscapeQueryParamValue(dest_url.spec(), false) + "#navigate"); |
| 2133 navigate_url = navigate_url.ReplaceComponents(replacements); | 2135 navigate_url = navigate_url.ReplaceComponents(replacements); |
| 2134 | 2136 |
| 2135 NavigationOrSwapObserver swap_observer( | 2137 NavigationOrSwapObserver swap_observer( |
| 2136 current_browser()->tab_strip_model(), | 2138 current_browser()->tab_strip_model(), |
| 2137 GetActiveWebContents(), 2); | 2139 GetActiveWebContents(), 2); |
| 2138 current_browser()->OpenURL(OpenURLParams( | 2140 current_browser()->OpenURL(OpenURLParams(navigate_url, Referrer(), |
| 2139 navigate_url, Referrer(), CURRENT_TAB, | 2141 WindowOpenDisposition::CURRENT_TAB, |
| 2140 ui::PAGE_TRANSITION_TYPED, false)); | 2142 ui::PAGE_TRANSITION_TYPED, false)); |
| 2141 swap_observer.Wait(); | 2143 swap_observer.Wait(); |
| 2142 | 2144 |
| 2143 EXPECT_TRUE(DidDisplayPass(GetActiveWebContents())); | 2145 EXPECT_TRUE(DidDisplayPass(GetActiveWebContents())); |
| 2144 | 2146 |
| 2145 histogram_tester().ExpectTotalCount("Prerender.gws_PrerenderNotSwappedInPLT", | 2147 histogram_tester().ExpectTotalCount("Prerender.gws_PrerenderNotSwappedInPLT", |
| 2146 0); | 2148 0); |
| 2147 histogram_tester().ExpectTotalCount("Prerender.gws_PerceivedPLT", 1); | 2149 histogram_tester().ExpectTotalCount("Prerender.gws_PerceivedPLT", 1); |
| 2148 histogram_tester().ExpectTotalCount("Prerender.gws_PerceivedPLTMatched", 1); | 2150 histogram_tester().ExpectTotalCount("Prerender.gws_PerceivedPLTMatched", 1); |
| 2149 histogram_tester().ExpectTotalCount( | 2151 histogram_tester().ExpectTotalCount( |
| 2150 "Prerender.gws_PerceivedPLTMatchedComplete", 1); | 2152 "Prerender.gws_PerceivedPLTMatchedComplete", 1); |
| (...skipping 490 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2641 ASSERT_TRUE(IsEmptyPrerenderLinkManager()); | 2643 ASSERT_TRUE(IsEmptyPrerenderLinkManager()); |
| 2642 } | 2644 } |
| 2643 | 2645 |
| 2644 // Checks that we do not use a prerendered page when navigating from | 2646 // Checks that we do not use a prerendered page when navigating from |
| 2645 // the main page to a fragment. | 2647 // the main page to a fragment. |
| 2646 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, | 2648 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, |
| 2647 PrerenderPageNavigateFragment) { | 2649 PrerenderPageNavigateFragment) { |
| 2648 PrerenderTestURL("/prerender/no_prerender_page.html", | 2650 PrerenderTestURL("/prerender/no_prerender_page.html", |
| 2649 FINAL_STATUS_APP_TERMINATING, 1); | 2651 FINAL_STATUS_APP_TERMINATING, 1); |
| 2650 NavigateToURLWithDisposition("/prerender/no_prerender_page.html#fragment", | 2652 NavigateToURLWithDisposition("/prerender/no_prerender_page.html#fragment", |
| 2651 CURRENT_TAB, false); | 2653 WindowOpenDisposition::CURRENT_TAB, false); |
| 2652 } | 2654 } |
| 2653 | 2655 |
| 2654 // Checks that we do not use a prerendered page when we prerender a fragment | 2656 // Checks that we do not use a prerendered page when we prerender a fragment |
| 2655 // but navigate to the main page. | 2657 // but navigate to the main page. |
| 2656 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, | 2658 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, |
| 2657 PrerenderFragmentNavigatePage) { | 2659 PrerenderFragmentNavigatePage) { |
| 2658 PrerenderTestURL("/prerender/no_prerender_page.html#fragment", | 2660 PrerenderTestURL("/prerender/no_prerender_page.html#fragment", |
| 2659 FINAL_STATUS_APP_TERMINATING, 1); | 2661 FINAL_STATUS_APP_TERMINATING, 1); |
| 2660 NavigateToURLWithDisposition("/prerender/no_prerender_page.html", CURRENT_TAB, | 2662 NavigateToURLWithDisposition("/prerender/no_prerender_page.html", |
| 2661 false); | 2663 WindowOpenDisposition::CURRENT_TAB, false); |
| 2662 } | 2664 } |
| 2663 | 2665 |
| 2664 // Checks that we do not use a prerendered page when we prerender a fragment | 2666 // Checks that we do not use a prerendered page when we prerender a fragment |
| 2665 // but navigate to a different fragment on the same page. | 2667 // but navigate to a different fragment on the same page. |
| 2666 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, | 2668 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, |
| 2667 PrerenderFragmentNavigateFragment) { | 2669 PrerenderFragmentNavigateFragment) { |
| 2668 PrerenderTestURL("/prerender/no_prerender_page.html#other_fragment", | 2670 PrerenderTestURL("/prerender/no_prerender_page.html#other_fragment", |
| 2669 FINAL_STATUS_APP_TERMINATING, 1); | 2671 FINAL_STATUS_APP_TERMINATING, 1); |
| 2670 NavigateToURLWithDisposition("/prerender/no_prerender_page.html#fragment", | 2672 NavigateToURLWithDisposition("/prerender/no_prerender_page.html#fragment", |
| 2671 CURRENT_TAB, false); | 2673 WindowOpenDisposition::CURRENT_TAB, false); |
| 2672 } | 2674 } |
| 2673 | 2675 |
| 2674 // Checks that we do not use a prerendered page when the page uses a client | 2676 // Checks that we do not use a prerendered page when the page uses a client |
| 2675 // redirect to refresh from a fragment on the same page. | 2677 // redirect to refresh from a fragment on the same page. |
| 2676 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, | 2678 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, |
| 2677 PrerenderClientRedirectFromFragment) { | 2679 PrerenderClientRedirectFromFragment) { |
| 2678 PrerenderTestURL( | 2680 PrerenderTestURL( |
| 2679 CreateClientRedirect("/prerender/no_prerender_page.html#fragment"), | 2681 CreateClientRedirect("/prerender/no_prerender_page.html#fragment"), |
| 2680 FINAL_STATUS_APP_TERMINATING, 2); | 2682 FINAL_STATUS_APP_TERMINATING, 2); |
| 2681 NavigateToURLWithDisposition("/prerender/no_prerender_page.html", CURRENT_TAB, | 2683 NavigateToURLWithDisposition("/prerender/no_prerender_page.html", |
| 2682 false); | 2684 WindowOpenDisposition::CURRENT_TAB, false); |
| 2683 } | 2685 } |
| 2684 | 2686 |
| 2685 // Checks that we do not use a prerendered page when the page uses a client | 2687 // Checks that we do not use a prerendered page when the page uses a client |
| 2686 // redirect to refresh to a fragment on the same page. | 2688 // redirect to refresh to a fragment on the same page. |
| 2687 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, | 2689 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, |
| 2688 PrerenderClientRedirectToFragment) { | 2690 PrerenderClientRedirectToFragment) { |
| 2689 PrerenderTestURL(CreateClientRedirect("/prerender/no_prerender_page.html"), | 2691 PrerenderTestURL(CreateClientRedirect("/prerender/no_prerender_page.html"), |
| 2690 FINAL_STATUS_APP_TERMINATING, 2); | 2692 FINAL_STATUS_APP_TERMINATING, 2); |
| 2691 NavigateToURLWithDisposition("/prerender/no_prerender_page.html#fragment", | 2693 NavigateToURLWithDisposition("/prerender/no_prerender_page.html#fragment", |
| 2692 CURRENT_TAB, false); | 2694 WindowOpenDisposition::CURRENT_TAB, false); |
| 2693 } | 2695 } |
| 2694 | 2696 |
| 2695 // Checks that we correctly use a prerendered page when the page uses JS to set | 2697 // Checks that we correctly use a prerendered page when the page uses JS to set |
| 2696 // the window.location.hash to a fragment on the same page. | 2698 // the window.location.hash to a fragment on the same page. |
| 2697 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, | 2699 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, |
| 2698 PrerenderPageChangeFragmentLocationHash) { | 2700 PrerenderPageChangeFragmentLocationHash) { |
| 2699 PrerenderTestURL("/prerender/prerender_fragment_location_hash.html", | 2701 PrerenderTestURL("/prerender/prerender_fragment_location_hash.html", |
| 2700 FINAL_STATUS_USED, 1); | 2702 FINAL_STATUS_USED, 1); |
| 2701 NavigateToURL("/prerender/prerender_fragment_location_hash.html"); | 2703 NavigateToURL("/prerender/prerender_fragment_location_hash.html"); |
| 2702 } | 2704 } |
| (...skipping 123 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2826 | 2828 |
| 2827 // Checks that prerenders do not get swapped into target pages that have opened | 2829 // Checks that prerenders do not get swapped into target pages that have opened |
| 2828 // popups; the BrowsingInstance is not empty. | 2830 // popups; the BrowsingInstance is not empty. |
| 2829 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, PrerenderTargetHasPopup) { | 2831 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, PrerenderTargetHasPopup) { |
| 2830 PrerenderTestURL("/prerender/prerender_page.html", | 2832 PrerenderTestURL("/prerender/prerender_page.html", |
| 2831 FINAL_STATUS_NON_EMPTY_BROWSING_INSTANCE, 1); | 2833 FINAL_STATUS_NON_EMPTY_BROWSING_INSTANCE, 1); |
| 2832 OpenURLViaWindowOpen(GURL(url::kAboutBlankURL)); | 2834 OpenURLViaWindowOpen(GURL(url::kAboutBlankURL)); |
| 2833 | 2835 |
| 2834 // Switch back to the current tab and attempt to swap it in. | 2836 // Switch back to the current tab and attempt to swap it in. |
| 2835 current_browser()->tab_strip_model()->ActivateTabAt(0, true); | 2837 current_browser()->tab_strip_model()->ActivateTabAt(0, true); |
| 2836 NavigateToDestURLWithDisposition(CURRENT_TAB, false); | 2838 NavigateToDestURLWithDisposition(WindowOpenDisposition::CURRENT_TAB, false); |
| 2837 } | 2839 } |
| 2838 | 2840 |
| 2839 class TestClientCertStore : public net::ClientCertStore { | 2841 class TestClientCertStore : public net::ClientCertStore { |
| 2840 public: | 2842 public: |
| 2841 explicit TestClientCertStore(const net::CertificateList& certs) | 2843 explicit TestClientCertStore(const net::CertificateList& certs) |
| 2842 : certs_(certs) {} | 2844 : certs_(certs) {} |
| 2843 ~TestClientCertStore() override {} | 2845 ~TestClientCertStore() override {} |
| 2844 | 2846 |
| 2845 // net::ClientCertStore: | 2847 // net::ClientCertStore: |
| 2846 void GetClientCerts(const net::SSLCertRequestInfo& cert_request_info, | 2848 void GetClientCerts(const net::SSLCertRequestInfo& cert_request_info, |
| (...skipping 377 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3224 NavigateToPrerenderedPageWhenDevToolsAttached) { | 3226 NavigateToPrerenderedPageWhenDevToolsAttached) { |
| 3225 DisableJavascriptCalls(); | 3227 DisableJavascriptCalls(); |
| 3226 WebContents* web_contents = | 3228 WebContents* web_contents = |
| 3227 current_browser()->tab_strip_model()->GetActiveWebContents(); | 3229 current_browser()->tab_strip_model()->GetActiveWebContents(); |
| 3228 scoped_refptr<DevToolsAgentHost> agent( | 3230 scoped_refptr<DevToolsAgentHost> agent( |
| 3229 DevToolsAgentHost::GetOrCreateFor(web_contents)); | 3231 DevToolsAgentHost::GetOrCreateFor(web_contents)); |
| 3230 FakeDevToolsClient client; | 3232 FakeDevToolsClient client; |
| 3231 agent->AttachClient(&client); | 3233 agent->AttachClient(&client); |
| 3232 const char* url = "/prerender/prerender_page.html"; | 3234 const char* url = "/prerender/prerender_page.html"; |
| 3233 PrerenderTestURL(url, FINAL_STATUS_DEVTOOLS_ATTACHED, 1); | 3235 PrerenderTestURL(url, FINAL_STATUS_DEVTOOLS_ATTACHED, 1); |
| 3234 NavigateToURLWithDisposition(url, CURRENT_TAB, false); | 3236 NavigateToURLWithDisposition(url, WindowOpenDisposition::CURRENT_TAB, false); |
| 3235 agent->DetachClient(&client); | 3237 agent->DetachClient(&client); |
| 3236 } | 3238 } |
| 3237 | 3239 |
| 3238 // Validate that the sessionStorage namespace remains the same when swapping | 3240 // Validate that the sessionStorage namespace remains the same when swapping |
| 3239 // in a prerendered page. | 3241 // in a prerendered page. |
| 3240 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, PrerenderSessionStorage) { | 3242 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, PrerenderSessionStorage) { |
| 3241 set_loader_path("/prerender/prerender_loader_with_session_storage.html"); | 3243 set_loader_path("/prerender/prerender_loader_with_session_storage.html"); |
| 3242 PrerenderTestURL(GetCrossDomainTestUrl("prerender/prerender_page.html"), | 3244 PrerenderTestURL(GetCrossDomainTestUrl("prerender/prerender_page.html"), |
| 3243 FINAL_STATUS_USED, 1); | 3245 FINAL_STATUS_USED, 1); |
| 3244 NavigateToDestURL(); | 3246 NavigateToDestURL(); |
| (...skipping 274 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3519 PrerenderTestURL("/prerender/prerender_web_audio_device.html", | 3521 PrerenderTestURL("/prerender/prerender_web_audio_device.html", |
| 3520 FINAL_STATUS_CREATING_AUDIO_STREAM, 0); | 3522 FINAL_STATUS_CREATING_AUDIO_STREAM, 0); |
| 3521 } | 3523 } |
| 3522 | 3524 |
| 3523 // Checks that prerenders do not swap in to WebContents being captured. | 3525 // Checks that prerenders do not swap in to WebContents being captured. |
| 3524 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, PrerenderCapturedWebContents) { | 3526 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, PrerenderCapturedWebContents) { |
| 3525 PrerenderTestURL("/prerender/prerender_page.html", | 3527 PrerenderTestURL("/prerender/prerender_page.html", |
| 3526 FINAL_STATUS_PAGE_BEING_CAPTURED, 1); | 3528 FINAL_STATUS_PAGE_BEING_CAPTURED, 1); |
| 3527 WebContents* web_contents = GetActiveWebContents(); | 3529 WebContents* web_contents = GetActiveWebContents(); |
| 3528 web_contents->IncrementCapturerCount(gfx::Size()); | 3530 web_contents->IncrementCapturerCount(gfx::Size()); |
| 3529 NavigateToDestURLWithDisposition(CURRENT_TAB, false); | 3531 NavigateToDestURLWithDisposition(WindowOpenDisposition::CURRENT_TAB, false); |
| 3530 web_contents->DecrementCapturerCount(); | 3532 web_contents->DecrementCapturerCount(); |
| 3531 } | 3533 } |
| 3532 | 3534 |
| 3533 // Checks that prerenders are aborted on cross-process navigation from | 3535 // Checks that prerenders are aborted on cross-process navigation from |
| 3534 // a server redirect. | 3536 // a server redirect. |
| 3535 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, | 3537 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, |
| 3536 PrerenderCrossProcessServerRedirect) { | 3538 PrerenderCrossProcessServerRedirect) { |
| 3537 // Force everything to be a process swap. | 3539 // Force everything to be a process swap. |
| 3538 SwapProcessesContentBrowserClient test_browser_client; | 3540 SwapProcessesContentBrowserClient test_browser_client; |
| 3539 content::ContentBrowserClient* original_browser_client = | 3541 content::ContentBrowserClient* original_browser_client = |
| (...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3602 histogram_tester().ExpectTotalCount("Prerender.none_PerceivedPLTMatched", 0); | 3604 histogram_tester().ExpectTotalCount("Prerender.none_PerceivedPLTMatched", 0); |
| 3603 histogram_tester().ExpectTotalCount( | 3605 histogram_tester().ExpectTotalCount( |
| 3604 "Prerender.none_PerceivedPLTMatchedComplete", 0); | 3606 "Prerender.none_PerceivedPLTMatchedComplete", 0); |
| 3605 histogram_tester().ExpectTotalCount( | 3607 histogram_tester().ExpectTotalCount( |
| 3606 "Prerender.websame_PrerenderNotSwappedInPLT", 0); | 3608 "Prerender.websame_PrerenderNotSwappedInPLT", 0); |
| 3607 | 3609 |
| 3608 // Swap. | 3610 // Swap. |
| 3609 NavigationOrSwapObserver swap_observer(current_browser()->tab_strip_model(), | 3611 NavigationOrSwapObserver swap_observer(current_browser()->tab_strip_model(), |
| 3610 GetActiveWebContents()); | 3612 GetActiveWebContents()); |
| 3611 ui_test_utils::NavigateToURLWithDisposition( | 3613 ui_test_utils::NavigateToURLWithDisposition( |
| 3612 current_browser(), dest_url(), CURRENT_TAB, | 3614 current_browser(), dest_url(), WindowOpenDisposition::CURRENT_TAB, |
| 3613 ui_test_utils::BROWSER_TEST_NONE); | 3615 ui_test_utils::BROWSER_TEST_NONE); |
| 3614 swap_observer.Wait(); | 3616 swap_observer.Wait(); |
| 3615 | 3617 |
| 3616 // The prerender never observes the final load. | 3618 // The prerender never observes the final load. |
| 3617 EXPECT_EQ(0, prerender->number_of_loads()); | 3619 EXPECT_EQ(0, prerender->number_of_loads()); |
| 3618 | 3620 |
| 3619 // Now check DidDisplayPass. | 3621 // Now check DidDisplayPass. |
| 3620 EXPECT_TRUE(DidDisplayPass(GetActiveWebContents())); | 3622 EXPECT_TRUE(DidDisplayPass(GetActiveWebContents())); |
| 3621 | 3623 |
| 3622 histogram_tester().ExpectTotalCount( | 3624 histogram_tester().ExpectTotalCount( |
| (...skipping 16 matching lines...) Expand all Loading... |
| 3639 std::unique_ptr<TestPrerender> prerender = PrerenderTestURL( | 3641 std::unique_ptr<TestPrerender> prerender = PrerenderTestURL( |
| 3640 "/prerender/prerender_deferred_image.html", FINAL_STATUS_USED, 0); | 3642 "/prerender/prerender_deferred_image.html", FINAL_STATUS_USED, 0); |
| 3641 WaitForASCIITitle(prerender->contents()->prerender_contents(), kReadyTitle); | 3643 WaitForASCIITitle(prerender->contents()->prerender_contents(), kReadyTitle); |
| 3642 EXPECT_TRUE(DidPrerenderPass(prerender->contents()->prerender_contents())); | 3644 EXPECT_TRUE(DidPrerenderPass(prerender->contents()->prerender_contents())); |
| 3643 EXPECT_EQ(0, prerender->number_of_loads()); | 3645 EXPECT_EQ(0, prerender->number_of_loads()); |
| 3644 | 3646 |
| 3645 // Swap. | 3647 // Swap. |
| 3646 NavigationOrSwapObserver swap_observer(current_browser()->tab_strip_model(), | 3648 NavigationOrSwapObserver swap_observer(current_browser()->tab_strip_model(), |
| 3647 GetActiveWebContents()); | 3649 GetActiveWebContents()); |
| 3648 ui_test_utils::NavigateToURLWithDisposition( | 3650 ui_test_utils::NavigateToURLWithDisposition( |
| 3649 current_browser(), dest_url(), CURRENT_TAB, | 3651 current_browser(), dest_url(), WindowOpenDisposition::CURRENT_TAB, |
| 3650 ui_test_utils::BROWSER_TEST_NONE); | 3652 ui_test_utils::BROWSER_TEST_NONE); |
| 3651 swap_observer.Wait(); | 3653 swap_observer.Wait(); |
| 3652 | 3654 |
| 3653 // The prerender never observes the final load. | 3655 // The prerender never observes the final load. |
| 3654 EXPECT_EQ(0, prerender->number_of_loads()); | 3656 EXPECT_EQ(0, prerender->number_of_loads()); |
| 3655 | 3657 |
| 3656 // Now check DidDisplayPass. | 3658 // Now check DidDisplayPass. |
| 3657 EXPECT_TRUE(DidDisplayPass(GetActiveWebContents())); | 3659 EXPECT_TRUE(DidDisplayPass(GetActiveWebContents())); |
| 3658 } | 3660 } |
| 3659 | 3661 |
| (...skipping 19 matching lines...) Expand all Loading... |
| 3679 PrerenderTestURL("/prerender/prerender_deferred_sync_xhr.html", | 3681 PrerenderTestURL("/prerender/prerender_deferred_sync_xhr.html", |
| 3680 FINAL_STATUS_BAD_DEFERRED_REDIRECT, 0); | 3682 FINAL_STATUS_BAD_DEFERRED_REDIRECT, 0); |
| 3681 ui_test_utils::NavigateToURL(current_browser(), dest_url()); | 3683 ui_test_utils::NavigateToURL(current_browser(), dest_url()); |
| 3682 } | 3684 } |
| 3683 | 3685 |
| 3684 // Checks that prerenders are not swapped for navigations with extra headers. | 3686 // Checks that prerenders are not swapped for navigations with extra headers. |
| 3685 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, PrerenderExtraHeadersNoSwap) { | 3687 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, PrerenderExtraHeadersNoSwap) { |
| 3686 PrerenderTestURL("/prerender/prerender_page.html", | 3688 PrerenderTestURL("/prerender/prerender_page.html", |
| 3687 FINAL_STATUS_APP_TERMINATING, 1); | 3689 FINAL_STATUS_APP_TERMINATING, 1); |
| 3688 | 3690 |
| 3689 content::OpenURLParams params(dest_url(), Referrer(), CURRENT_TAB, | 3691 content::OpenURLParams params(dest_url(), Referrer(), |
| 3692 WindowOpenDisposition::CURRENT_TAB, |
| 3690 ui::PAGE_TRANSITION_TYPED, false); | 3693 ui::PAGE_TRANSITION_TYPED, false); |
| 3691 params.extra_headers = "X-Custom-Header: 42\r\n"; | 3694 params.extra_headers = "X-Custom-Header: 42\r\n"; |
| 3692 NavigateToURLWithParams(params, false); | 3695 NavigateToURLWithParams(params, false); |
| 3693 } | 3696 } |
| 3694 | 3697 |
| 3695 // Checks that prerenders are not swapped for navigations with browser-initiated | 3698 // Checks that prerenders are not swapped for navigations with browser-initiated |
| 3696 // POST data. | 3699 // POST data. |
| 3697 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, | 3700 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, |
| 3698 PrerenderBrowserInitiatedPostNoSwap) { | 3701 PrerenderBrowserInitiatedPostNoSwap) { |
| 3699 PrerenderTestURL("/prerender/prerender_page.html", | 3702 PrerenderTestURL("/prerender/prerender_page.html", |
| 3700 FINAL_STATUS_APP_TERMINATING, 1); | 3703 FINAL_STATUS_APP_TERMINATING, 1); |
| 3701 | 3704 |
| 3702 std::string post_data = "DATA"; | 3705 std::string post_data = "DATA"; |
| 3703 content::OpenURLParams params(dest_url(), Referrer(), CURRENT_TAB, | 3706 content::OpenURLParams params(dest_url(), Referrer(), |
| 3707 WindowOpenDisposition::CURRENT_TAB, |
| 3704 ui::PAGE_TRANSITION_TYPED, false); | 3708 ui::PAGE_TRANSITION_TYPED, false); |
| 3705 params.uses_post = true; | 3709 params.uses_post = true; |
| 3706 params.post_data = content::ResourceRequestBody::CreateFromBytes( | 3710 params.post_data = content::ResourceRequestBody::CreateFromBytes( |
| 3707 post_data.data(), post_data.size()); | 3711 post_data.data(), post_data.size()); |
| 3708 NavigateToURLWithParams(params, false); | 3712 NavigateToURLWithParams(params, false); |
| 3709 } | 3713 } |
| 3710 | 3714 |
| 3711 // Checks that the prerendering of a page is canceled correctly when the | 3715 // Checks that the prerendering of a page is canceled correctly when the |
| 3712 // prerendered page tries to make a second navigation entry. | 3716 // prerendered page tries to make a second navigation entry. |
| 3713 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, PrerenderNewNavigationEntry) { | 3717 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, PrerenderNewNavigationEntry) { |
| 3714 PrerenderTestURL("/prerender/prerender_new_entry.html", | 3718 PrerenderTestURL("/prerender/prerender_new_entry.html", |
| 3715 FINAL_STATUS_NEW_NAVIGATION_ENTRY, 1); | 3719 FINAL_STATUS_NEW_NAVIGATION_ENTRY, 1); |
| 3716 } | 3720 } |
| 3717 | 3721 |
| 3718 // Attempt a swap-in in a new tab. The session storage doesn't match, so it | 3722 // Attempt a swap-in in a new tab. The session storage doesn't match, so it |
| 3719 // should not swap. | 3723 // should not swap. |
| 3720 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, PrerenderPageNewTab) { | 3724 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, PrerenderPageNewTab) { |
| 3721 PrerenderTestURL("/prerender/prerender_page.html", | 3725 PrerenderTestURL("/prerender/prerender_page.html", |
| 3722 FINAL_STATUS_APP_TERMINATING, 1); | 3726 FINAL_STATUS_APP_TERMINATING, 1); |
| 3723 | 3727 |
| 3724 // Open a new tab to navigate in. | 3728 // Open a new tab to navigate in. |
| 3725 ui_test_utils::NavigateToURLWithDisposition( | 3729 ui_test_utils::NavigateToURLWithDisposition( |
| 3726 current_browser(), GURL(url::kAboutBlankURL), NEW_FOREGROUND_TAB, | 3730 current_browser(), GURL(url::kAboutBlankURL), |
| 3731 WindowOpenDisposition::NEW_FOREGROUND_TAB, |
| 3727 ui_test_utils::BROWSER_TEST_WAIT_FOR_NAVIGATION); | 3732 ui_test_utils::BROWSER_TEST_WAIT_FOR_NAVIGATION); |
| 3728 | 3733 |
| 3729 // Now navigate in the new tab. | 3734 // Now navigate in the new tab. |
| 3730 NavigateToDestURLWithDisposition(CURRENT_TAB, false); | 3735 NavigateToDestURLWithDisposition(WindowOpenDisposition::CURRENT_TAB, false); |
| 3731 } | 3736 } |
| 3732 | 3737 |
| 3733 // Checks that prerenders honor |should_replace_current_entry|. | 3738 // Checks that prerenders honor |should_replace_current_entry|. |
| 3734 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, PrerenderReplaceCurrentEntry) { | 3739 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, PrerenderReplaceCurrentEntry) { |
| 3735 PrerenderTestURL("/prerender/prerender_page.html", FINAL_STATUS_USED, 1); | 3740 PrerenderTestURL("/prerender/prerender_page.html", FINAL_STATUS_USED, 1); |
| 3736 | 3741 |
| 3737 content::OpenURLParams params(dest_url(), Referrer(), CURRENT_TAB, | 3742 content::OpenURLParams params(dest_url(), Referrer(), |
| 3743 WindowOpenDisposition::CURRENT_TAB, |
| 3738 ui::PAGE_TRANSITION_TYPED, false); | 3744 ui::PAGE_TRANSITION_TYPED, false); |
| 3739 params.should_replace_current_entry = true; | 3745 params.should_replace_current_entry = true; |
| 3740 NavigateToURLWithParams(params, false); | 3746 NavigateToURLWithParams(params, false); |
| 3741 | 3747 |
| 3742 const NavigationController& controller = | 3748 const NavigationController& controller = |
| 3743 GetActiveWebContents()->GetController(); | 3749 GetActiveWebContents()->GetController(); |
| 3744 // First entry is about:blank, second is prerender_page.html. | 3750 // First entry is about:blank, second is prerender_page.html. |
| 3745 EXPECT_FALSE(controller.GetPendingEntry()); | 3751 EXPECT_FALSE(controller.GetPendingEntry()); |
| 3746 ASSERT_EQ(2, controller.GetEntryCount()); | 3752 ASSERT_EQ(2, controller.GetEntryCount()); |
| 3747 EXPECT_EQ(GURL(url::kAboutBlankURL), controller.GetEntryAtIndex(0)->GetURL()); | 3753 EXPECT_EQ(GURL(url::kAboutBlankURL), controller.GetEntryAtIndex(0)->GetURL()); |
| (...skipping 179 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3927 StartOmniboxPrerender(embedded_test_server()->GetURL("/empty.html?2"), | 3933 StartOmniboxPrerender(embedded_test_server()->GetURL("/empty.html?2"), |
| 3928 FINAL_STATUS_APP_TERMINATING); | 3934 FINAL_STATUS_APP_TERMINATING); |
| 3929 | 3935 |
| 3930 // The final status may be either FINAL_STATUS_APP_TERMINATING or | 3936 // The final status may be either FINAL_STATUS_APP_TERMINATING or |
| 3931 // FINAL_STATUS_CANCELLED. Although closing the omnibox will not cancel an | 3937 // FINAL_STATUS_CANCELLED. Although closing the omnibox will not cancel an |
| 3932 // abandoned prerender, the AutocompleteActionPredictor will cancel the | 3938 // abandoned prerender, the AutocompleteActionPredictor will cancel the |
| 3933 // predictor on destruction. | 3939 // predictor on destruction. |
| 3934 prerender->contents()->set_skip_final_checks(true); | 3940 prerender->contents()->set_skip_final_checks(true); |
| 3935 | 3941 |
| 3936 // Navigate to the URL entered. | 3942 // Navigate to the URL entered. |
| 3937 omnibox_view->model()->AcceptInput(CURRENT_TAB, false); | 3943 omnibox_view->model()->AcceptInput(WindowOpenDisposition::CURRENT_TAB, false); |
| 3938 | 3944 |
| 3939 // Prerender should be running, but abandoned. | 3945 // Prerender should be running, but abandoned. |
| 3940 EXPECT_TRUE( | 3946 EXPECT_TRUE( |
| 3941 GetAutocompleteActionPredictor()->IsPrerenderAbandonedForTesting()); | 3947 GetAutocompleteActionPredictor()->IsPrerenderAbandonedForTesting()); |
| 3942 } | 3948 } |
| 3943 | 3949 |
| 3944 // Can't run tests with NaCl plugins if built with DISABLE_NACL. | 3950 // Can't run tests with NaCl plugins if built with DISABLE_NACL. |
| 3945 #if !defined(DISABLE_NACL) | 3951 #if !defined(DISABLE_NACL) |
| 3946 class PrerenderBrowserTestWithNaCl : public PrerenderBrowserTest { | 3952 class PrerenderBrowserTestWithNaCl : public PrerenderBrowserTest { |
| 3947 public: | 3953 public: |
| (...skipping 26 matching lines...) Expand all Loading... |
| 3974 browser()->tab_strip_model()->GetActiveWebContents(); | 3980 browser()->tab_strip_model()->GetActiveWebContents(); |
| 3975 bool display_test_result = false; | 3981 bool display_test_result = false; |
| 3976 ASSERT_TRUE(content::ExecuteScriptAndExtractBool(web_contents, | 3982 ASSERT_TRUE(content::ExecuteScriptAndExtractBool(web_contents, |
| 3977 "DidDisplayReallyPass()", | 3983 "DidDisplayReallyPass()", |
| 3978 &display_test_result)); | 3984 &display_test_result)); |
| 3979 ASSERT_TRUE(display_test_result); | 3985 ASSERT_TRUE(display_test_result); |
| 3980 } | 3986 } |
| 3981 #endif // !defined(DISABLE_NACL) | 3987 #endif // !defined(DISABLE_NACL) |
| 3982 | 3988 |
| 3983 } // namespace prerender | 3989 } // namespace prerender |
| OLD | NEW |