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