| 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 131 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 142 using content::WebContentsObserver; | 142 using content::WebContentsObserver; |
| 143 using net::NetworkChangeNotifier; | 143 using net::NetworkChangeNotifier; |
| 144 using prerender::test_utils::RequestCounter; | 144 using prerender::test_utils::RequestCounter; |
| 145 using prerender::test_utils::CreateCountingInterceptorOnIO; | 145 using prerender::test_utils::CreateCountingInterceptorOnIO; |
| 146 using prerender::test_utils::CreateHangingFirstRequestInterceptorOnIO; | 146 using prerender::test_utils::CreateHangingFirstRequestInterceptorOnIO; |
| 147 using prerender::test_utils::CreateMockInterceptorOnIO; | 147 using prerender::test_utils::CreateMockInterceptorOnIO; |
| 148 using prerender::test_utils::TestPrerender; | 148 using prerender::test_utils::TestPrerender; |
| 149 using prerender::test_utils::TestPrerenderContents; | 149 using prerender::test_utils::TestPrerenderContents; |
| 150 using task_manager::browsertest_util::WaitForTaskManagerRows; | 150 using task_manager::browsertest_util::WaitForTaskManagerRows; |
| 151 | 151 |
| 152 // crbug.com/708158 |
| 153 #if !defined(OS_MACOSX) || !defined(ADDRESS_SANITIZER) |
| 154 |
| 152 // Prerender tests work as follows: | 155 // Prerender tests work as follows: |
| 153 // | 156 // |
| 154 // A page with a prefetch link to the test page is loaded. Once prerendered, | 157 // A page with a prefetch link to the test page is loaded. Once prerendered, |
| 155 // its Javascript function DidPrerenderPass() is called, which returns true if | 158 // its Javascript function DidPrerenderPass() is called, which returns true if |
| 156 // the page behaves as expected when prerendered. | 159 // the page behaves as expected when prerendered. |
| 157 // | 160 // |
| 158 // The prerendered page is then displayed on a tab. The Javascript function | 161 // The prerendered page is then displayed on a tab. The Javascript function |
| 159 // DidDisplayPass() is called, and returns true if the page behaved as it | 162 // DidDisplayPass() is called, and returns true if the page behaved as it |
| 160 // should while being displayed. | 163 // should while being displayed. |
| 161 | 164 |
| (...skipping 1869 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2031 | 2034 |
| 2032 ChannelDestructionWatcher channel_close_watcher; | 2035 ChannelDestructionWatcher channel_close_watcher; |
| 2033 channel_close_watcher.WatchChannel(browser()->tab_strip_model()-> | 2036 channel_close_watcher.WatchChannel(browser()->tab_strip_model()-> |
| 2034 GetActiveWebContents()->GetRenderProcessHost()); | 2037 GetActiveWebContents()->GetRenderProcessHost()); |
| 2035 NavigateToDestURL(); | 2038 NavigateToDestURL(); |
| 2036 channel_close_watcher.WaitForChannelClose(); | 2039 channel_close_watcher.WaitForChannelClose(); |
| 2037 | 2040 |
| 2038 ASSERT_TRUE(IsEmptyPrerenderLinkManager()); | 2041 ASSERT_TRUE(IsEmptyPrerenderLinkManager()); |
| 2039 } | 2042 } |
| 2040 | 2043 |
| 2041 // crbug.com/708158 | |
| 2042 #if defined(OS_MACOSX) && defined(ADDRESS_SANITIZER) | |
| 2043 #define MAYBE_PrerenderPageNavigateFragment \ | |
| 2044 DISABLED_PrerenderPageNavigateFragment | |
| 2045 #else | |
| 2046 #define MAYBE_PrerenderPageNavigateFragment PrerenderPageNavigateFragment | |
| 2047 #endif | |
| 2048 // Checks that we do not use a prerendered page when navigating from | 2044 // Checks that we do not use a prerendered page when navigating from |
| 2049 // the main page to a fragment. | 2045 // the main page to a fragment. |
| 2050 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, | 2046 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, PrerenderPageNavigateFragment) { |
| 2051 MAYBE_PrerenderPageNavigateFragment) { | |
| 2052 PrerenderTestURL("/prerender/no_prerender_page.html", | 2047 PrerenderTestURL("/prerender/no_prerender_page.html", |
| 2053 FINAL_STATUS_APP_TERMINATING, 1); | 2048 FINAL_STATUS_APP_TERMINATING, 1); |
| 2054 NavigateToURLWithDisposition("/prerender/no_prerender_page.html#fragment", | 2049 NavigateToURLWithDisposition("/prerender/no_prerender_page.html#fragment", |
| 2055 WindowOpenDisposition::CURRENT_TAB, false); | 2050 WindowOpenDisposition::CURRENT_TAB, false); |
| 2056 } | 2051 } |
| 2057 | 2052 |
| 2058 // crbug.com/708158 | |
| 2059 #if defined(OS_MACOSX) && defined(ADDRESS_SANITIZER) | |
| 2060 #define MAYBE_PrerenderFragmentNavigatePage \ | |
| 2061 DISABLED_PrerenderFragmentNavigatePage | |
| 2062 #else | |
| 2063 #define MAYBE_PrerenderFragmentNavigatePage PrerenderFragmentNavigatePage | |
| 2064 #endif | |
| 2065 // Checks that we do not use a prerendered page when we prerender a fragment | 2053 // Checks that we do not use a prerendered page when we prerender a fragment |
| 2066 // but navigate to the main page. | 2054 // but navigate to the main page. |
| 2067 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, | 2055 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, PrerenderFragmentNavigatePage) { |
| 2068 MAYBE_PrerenderFragmentNavigatePage) { | |
| 2069 PrerenderTestURL("/prerender/no_prerender_page.html#fragment", | 2056 PrerenderTestURL("/prerender/no_prerender_page.html#fragment", |
| 2070 FINAL_STATUS_APP_TERMINATING, 1); | 2057 FINAL_STATUS_APP_TERMINATING, 1); |
| 2071 NavigateToURLWithDisposition("/prerender/no_prerender_page.html", | 2058 NavigateToURLWithDisposition("/prerender/no_prerender_page.html", |
| 2072 WindowOpenDisposition::CURRENT_TAB, false); | 2059 WindowOpenDisposition::CURRENT_TAB, false); |
| 2073 } | 2060 } |
| 2074 | 2061 |
| 2075 // crbug.com/708158 | |
| 2076 #if defined(OS_MACOSX) && defined(ADDRESS_SANITIZER) | |
| 2077 #define MAYBE_PrerenderFragmentNavigateFragment \ | |
| 2078 DISABLED_PrerenderFragmentNavigateFragment | |
| 2079 #else | |
| 2080 #define MAYBE_PrerenderFragmentNavigateFragment \ | |
| 2081 PrerenderFragmentNavigateFragment | |
| 2082 #endif | |
| 2083 // Checks that we do not use a prerendered page when we prerender a fragment | 2062 // Checks that we do not use a prerendered page when we prerender a fragment |
| 2084 // but navigate to a different fragment on the same page. | 2063 // but navigate to a different fragment on the same page. |
| 2085 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, | 2064 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, |
| 2086 MAYBE_PrerenderFragmentNavigateFragment) { | 2065 PrerenderFragmentNavigateFragment) { |
| 2087 PrerenderTestURL("/prerender/no_prerender_page.html#other_fragment", | 2066 PrerenderTestURL("/prerender/no_prerender_page.html#other_fragment", |
| 2088 FINAL_STATUS_APP_TERMINATING, 1); | 2067 FINAL_STATUS_APP_TERMINATING, 1); |
| 2089 NavigateToURLWithDisposition("/prerender/no_prerender_page.html#fragment", | 2068 NavigateToURLWithDisposition("/prerender/no_prerender_page.html#fragment", |
| 2090 WindowOpenDisposition::CURRENT_TAB, false); | 2069 WindowOpenDisposition::CURRENT_TAB, false); |
| 2091 } | 2070 } |
| 2092 | 2071 |
| 2093 // Checks that we do not use a prerendered page when the page uses a client | 2072 // Checks that we do not use a prerendered page when the page uses a client |
| 2094 // redirect to refresh from a fragment on the same page. | 2073 // redirect to refresh from a fragment on the same page. |
| 2095 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, | 2074 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, |
| 2096 PrerenderClientRedirectFromFragment) { | 2075 PrerenderClientRedirectFromFragment) { |
| (...skipping 1000 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3097 NavigateToDestURL(); | 3076 NavigateToDestURL(); |
| 3098 } | 3077 } |
| 3099 | 3078 |
| 3100 // Checks that deferred redirects in a synchronous XHR abort the prerender. | 3079 // Checks that deferred redirects in a synchronous XHR abort the prerender. |
| 3101 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, PrerenderDeferredSynchronousXHR) { | 3080 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, PrerenderDeferredSynchronousXHR) { |
| 3102 PrerenderTestURL("/prerender/prerender_deferred_sync_xhr.html", | 3081 PrerenderTestURL("/prerender/prerender_deferred_sync_xhr.html", |
| 3103 FINAL_STATUS_BAD_DEFERRED_REDIRECT, 0); | 3082 FINAL_STATUS_BAD_DEFERRED_REDIRECT, 0); |
| 3104 ui_test_utils::NavigateToURL(current_browser(), dest_url()); | 3083 ui_test_utils::NavigateToURL(current_browser(), dest_url()); |
| 3105 } | 3084 } |
| 3106 | 3085 |
| 3107 // crbug.com/708158 | |
| 3108 #if defined(OS_MACOSX) && defined(ADDRESS_SANITIZER) | |
| 3109 #define MAYBE_PrerenderExtraHeadersNoSwap DISABLED_PrerenderExtraHeadersNoSwap | |
| 3110 #else | |
| 3111 #define MAYBE_PrerenderExtraHeadersNoSwap PrerenderExtraHeadersNoSwap | |
| 3112 #endif | |
| 3113 // Checks that prerenders are not swapped for navigations with extra headers. | 3086 // Checks that prerenders are not swapped for navigations with extra headers. |
| 3114 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, | 3087 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, PrerenderExtraHeadersNoSwap) { |
| 3115 MAYBE_PrerenderExtraHeadersNoSwap) { | |
| 3116 PrerenderTestURL("/prerender/prerender_page.html", | 3088 PrerenderTestURL("/prerender/prerender_page.html", |
| 3117 FINAL_STATUS_APP_TERMINATING, 1); | 3089 FINAL_STATUS_APP_TERMINATING, 1); |
| 3118 | 3090 |
| 3119 content::OpenURLParams params(dest_url(), Referrer(), | 3091 content::OpenURLParams params(dest_url(), Referrer(), |
| 3120 WindowOpenDisposition::CURRENT_TAB, | 3092 WindowOpenDisposition::CURRENT_TAB, |
| 3121 ui::PAGE_TRANSITION_TYPED, false); | 3093 ui::PAGE_TRANSITION_TYPED, false); |
| 3122 params.extra_headers = "X-Custom-Header: 42\r\n"; | 3094 params.extra_headers = "X-Custom-Header: 42\r\n"; |
| 3123 NavigateToURLWithParams(params, false); | 3095 NavigateToURLWithParams(params, false); |
| 3124 } | 3096 } |
| 3125 | 3097 |
| (...skipping 686 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3812 WebContents* web_contents = | 3784 WebContents* web_contents = |
| 3813 browser()->tab_strip_model()->GetActiveWebContents(); | 3785 browser()->tab_strip_model()->GetActiveWebContents(); |
| 3814 bool display_test_result = false; | 3786 bool display_test_result = false; |
| 3815 ASSERT_TRUE(content::ExecuteScriptAndExtractBool(web_contents, | 3787 ASSERT_TRUE(content::ExecuteScriptAndExtractBool(web_contents, |
| 3816 "DidDisplayReallyPass()", | 3788 "DidDisplayReallyPass()", |
| 3817 &display_test_result)); | 3789 &display_test_result)); |
| 3818 ASSERT_TRUE(display_test_result); | 3790 ASSERT_TRUE(display_test_result); |
| 3819 } | 3791 } |
| 3820 #endif // !defined(DISABLE_NACL) | 3792 #endif // !defined(DISABLE_NACL) |
| 3821 | 3793 |
| 3794 #endif // !defined(OS_MACOSX) || !defined(ADDRESS_SANITIZER) |
| 3795 |
| 3822 } // namespace prerender | 3796 } // namespace prerender |
| OLD | NEW |