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 |