Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(774)

Side by Side Diff: chrome/browser/prerender/prerender_browsertest.cc

Issue 2248873002: Convert WindowOpenDisposition to an enum class. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebase. Created 4 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
OLDNEW
« no previous file with comments | « chrome/browser/policy/policy_browsertest.cc ('k') | chrome/browser/printing/cloud_print/privet_notifications.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698