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 <deque> | 5 #include <deque> |
6 #include <vector> | 6 #include <vector> |
7 | 7 |
8 #include "base/bind.h" | 8 #include "base/bind.h" |
9 #include "base/command_line.h" | 9 #include "base/command_line.h" |
10 #include "base/files/file_path.h" | 10 #include "base/files/file_path.h" |
(...skipping 1169 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1180 OpenURLWithJSImpl("WindowOpen", dest_url_, GURL(), true); | 1180 OpenURLWithJSImpl("WindowOpen", dest_url_, GURL(), true); |
1181 } | 1181 } |
1182 | 1182 |
1183 void RemoveLinkElement(int i) const { | 1183 void RemoveLinkElement(int i) const { |
1184 GetActiveWebContents()->GetRenderViewHost()->ExecuteJavascriptInWebFrame( | 1184 GetActiveWebContents()->GetRenderViewHost()->ExecuteJavascriptInWebFrame( |
1185 base::string16(), | 1185 base::string16(), |
1186 base::ASCIIToUTF16(base::StringPrintf("RemoveLinkElement(%d)", i))); | 1186 base::ASCIIToUTF16(base::StringPrintf("RemoveLinkElement(%d)", i))); |
1187 } | 1187 } |
1188 | 1188 |
1189 void ClickToNextPageAfterPrerender() { | 1189 void ClickToNextPageAfterPrerender() { |
1190 content::WindowedNotificationObserver new_page_observer( | 1190 TestNavigationObserver nav_observer(GetActiveWebContents()); |
1191 content::NOTIFICATION_NAV_ENTRY_COMMITTED, | |
1192 content::NotificationService::AllSources()); | |
1193 RenderViewHost* render_view_host = | 1191 RenderViewHost* render_view_host = |
1194 GetActiveWebContents()->GetRenderViewHost(); | 1192 GetActiveWebContents()->GetRenderViewHost(); |
1195 render_view_host->ExecuteJavascriptInWebFrame( | 1193 render_view_host->ExecuteJavascriptInWebFrame( |
1196 base::string16(), | 1194 base::string16(), |
1197 base::ASCIIToUTF16("ClickOpenLink()")); | 1195 base::ASCIIToUTF16("ClickOpenLink()")); |
1198 new_page_observer.Wait(); | 1196 nav_observer.Wait(); |
1199 } | 1197 } |
1200 | 1198 |
1201 void NavigateToNextPageAfterPrerender() const { | 1199 void NavigateToNextPageAfterPrerender() const { |
1202 ui_test_utils::NavigateToURL( | 1200 ui_test_utils::NavigateToURL( |
1203 current_browser(), | 1201 current_browser(), |
1204 test_server()->GetURL("files/prerender/prerender_page.html")); | 1202 test_server()->GetURL("files/prerender/prerender_page.html")); |
1205 } | 1203 } |
1206 | 1204 |
1207 // Called after the prerendered page has been navigated to and then away from. | 1205 // Called after the prerendered page has been navigated to and then away from. |
1208 // Navigates back through the history to the prerendered page. | 1206 // Navigates back through the history to the prerendered page. |
1209 void GoBackToPrerender() { | 1207 void GoBackToPrerender() { |
1210 content::WindowedNotificationObserver back_nav_observer( | 1208 TestNavigationObserver back_nav_observer(GetActiveWebContents()); |
1211 content::NOTIFICATION_NAV_ENTRY_COMMITTED, | |
1212 content::NotificationService::AllSources()); | |
1213 chrome::GoBack(current_browser(), CURRENT_TAB); | 1209 chrome::GoBack(current_browser(), CURRENT_TAB); |
1214 back_nav_observer.Wait(); | 1210 back_nav_observer.Wait(); |
1215 bool original_prerender_page = false; | 1211 bool original_prerender_page = false; |
1216 ASSERT_TRUE(content::ExecuteScriptAndExtractBool( | 1212 ASSERT_TRUE(content::ExecuteScriptAndExtractBool( |
1217 GetActiveWebContents(), | 1213 GetActiveWebContents(), |
1218 "window.domAutomationController.send(IsOriginalPrerenderPage())", | 1214 "window.domAutomationController.send(IsOriginalPrerenderPage())", |
1219 &original_prerender_page)); | 1215 &original_prerender_page)); |
1220 EXPECT_TRUE(original_prerender_page); | 1216 EXPECT_TRUE(original_prerender_page); |
1221 } | 1217 } |
1222 | 1218 |
(...skipping 1878 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3101 | 3097 |
3102 EXPECT_FALSE(prerender->contents()); | 3098 EXPECT_FALSE(prerender->contents()); |
3103 } | 3099 } |
3104 | 3100 |
3105 // Prerendering and history tests. | 3101 // Prerendering and history tests. |
3106 // The prerendered page is navigated to in several ways [navigate via | 3102 // The prerendered page is navigated to in several ways [navigate via |
3107 // omnibox, click on link, key-modified click to open in background tab, etc], | 3103 // omnibox, click on link, key-modified click to open in background tab, etc], |
3108 // followed by a navigation to another page from the prerendered page, followed | 3104 // followed by a navigation to another page from the prerendered page, followed |
3109 // by a back navigation. | 3105 // by a back navigation. |
3110 | 3106 |
3111 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, | 3107 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, PrerenderNavigateClickGoBack) { |
3112 DISABLED_PrerenderNavigateClickGoBack) { | |
3113 PrerenderTestURL("files/prerender/prerender_page_with_link.html", | 3108 PrerenderTestURL("files/prerender/prerender_page_with_link.html", |
3114 FINAL_STATUS_USED, | 3109 FINAL_STATUS_USED, |
3115 1); | 3110 1); |
3116 NavigateToDestURL(); | 3111 NavigateToDestURL(); |
3117 ClickToNextPageAfterPrerender(); | 3112 ClickToNextPageAfterPrerender(); |
3118 GoBackToPrerender(); | 3113 GoBackToPrerender(); |
3119 } | 3114 } |
3120 | 3115 |
3121 // Disabled due to timeouts on commit queue. | 3116 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, PrerenderNavigateNavigateGoBack) { |
3122 // http://crbug.com/121130 | |
3123 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, | |
3124 DISABLED_PrerenderNavigateNavigateGoBack) { | |
3125 PrerenderTestURL("files/prerender/prerender_page_with_link.html", | 3117 PrerenderTestURL("files/prerender/prerender_page_with_link.html", |
3126 FINAL_STATUS_USED, | 3118 FINAL_STATUS_USED, |
3127 1); | 3119 1); |
3128 NavigateToDestURL(); | 3120 NavigateToDestURL(); |
3129 NavigateToNextPageAfterPrerender(); | 3121 NavigateToNextPageAfterPrerender(); |
3130 GoBackToPrerender(); | 3122 GoBackToPrerender(); |
3131 } | 3123 } |
3132 | 3124 |
3133 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, | 3125 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, PrerenderClickClickGoBack) { |
3134 DISABLED_PrerenderClickClickGoBack) { | |
3135 PrerenderTestURL("files/prerender/prerender_page_with_link.html", | 3126 PrerenderTestURL("files/prerender/prerender_page_with_link.html", |
3136 FINAL_STATUS_USED, | 3127 FINAL_STATUS_USED, |
3137 1); | 3128 1); |
3138 OpenDestURLViaClick(); | 3129 OpenDestURLViaClick(); |
3139 ClickToNextPageAfterPrerender(); | 3130 ClickToNextPageAfterPrerender(); |
3140 GoBackToPrerender(); | 3131 GoBackToPrerender(); |
3141 } | 3132 } |
3142 | 3133 |
3143 // Disabled due to timeouts on commit queue. | 3134 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, PrerenderClickNavigateGoBack) { |
3144 // http://crbug.com/121130 | |
3145 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, | |
3146 DISABLED_PrerenderClickNavigateGoBack) { | |
3147 PrerenderTestURL("files/prerender/prerender_page_with_link.html", | 3135 PrerenderTestURL("files/prerender/prerender_page_with_link.html", |
3148 FINAL_STATUS_USED, | 3136 FINAL_STATUS_USED, |
3149 1); | 3137 1); |
3150 OpenDestURLViaClick(); | 3138 OpenDestURLViaClick(); |
3151 NavigateToNextPageAfterPrerender(); | 3139 NavigateToNextPageAfterPrerender(); |
3152 GoBackToPrerender(); | 3140 GoBackToPrerender(); |
3153 } | 3141 } |
3154 | 3142 |
3155 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, PrerenderClickNewWindow) { | 3143 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, PrerenderClickNewWindow) { |
3156 PrerenderTestURL("files/prerender/prerender_page_with_link.html", | 3144 PrerenderTestURL("files/prerender/prerender_page_with_link.html", |
3157 FINAL_STATUS_WINDOW_OPENER, | 3145 FINAL_STATUS_WINDOW_OPENER, |
3158 1); | 3146 1); |
3159 OpenDestURLViaClickNewWindow(); | 3147 OpenDestURLViaClickNewWindow(); |
3160 } | 3148 } |
3161 | 3149 |
3162 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, PrerenderClickNewForegroundTab) { | 3150 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, PrerenderClickNewForegroundTab) { |
3163 PrerenderTestURL("files/prerender/prerender_page_with_link.html", | 3151 PrerenderTestURL("files/prerender/prerender_page_with_link.html", |
3164 FINAL_STATUS_WINDOW_OPENER, | 3152 FINAL_STATUS_WINDOW_OPENER, |
3165 1); | 3153 1); |
3166 OpenDestURLViaClickNewForegroundTab(); | 3154 OpenDestURLViaClickNewForegroundTab(); |
3167 } | 3155 } |
3168 | 3156 |
3169 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, | 3157 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, PrerenderClickNewBackgroundTab) { |
3170 DISABLED_PrerenderClickNewBackgroundTab) { | |
3171 scoped_ptr<TestPrerender> prerender = | 3158 scoped_ptr<TestPrerender> prerender = |
3172 PrerenderTestURL("files/prerender/prerender_page_with_link.html", | 3159 PrerenderTestURL("files/prerender/prerender_page_with_link.html", |
3173 FINAL_STATUS_APP_TERMINATING, | 3160 FINAL_STATUS_WINDOW_OPENER, |
3174 1); | 3161 1); |
3175 ASSERT_TRUE(prerender->contents()); | 3162 ASSERT_TRUE(prerender->contents()); |
3176 prerender->contents()->set_should_be_shown(false); | 3163 prerender->contents()->set_should_be_shown(false); |
3177 OpenDestURLViaClickNewBackgroundTab(); | 3164 OpenDestURLViaClickNewBackgroundTab(); |
3178 } | 3165 } |
3179 | 3166 |
3180 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, | 3167 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, |
3181 NavigateToPrerenderedPageWhenDevToolsAttached) { | 3168 NavigateToPrerenderedPageWhenDevToolsAttached) { |
3182 DisableJavascriptCalls(); | 3169 DisableJavascriptCalls(); |
3183 WebContents* web_contents = | 3170 WebContents* web_contents = |
3184 current_browser()->tab_strip_model()->GetActiveWebContents(); | 3171 current_browser()->tab_strip_model()->GetActiveWebContents(); |
3185 scoped_refptr<DevToolsAgentHost> agent(DevToolsAgentHost::GetOrCreateFor( | 3172 scoped_refptr<DevToolsAgentHost> agent(DevToolsAgentHost::GetOrCreateFor( |
3186 web_contents->GetRenderViewHost())); | 3173 web_contents->GetRenderViewHost())); |
3187 DevToolsManager* manager = DevToolsManager::GetInstance(); | 3174 DevToolsManager* manager = DevToolsManager::GetInstance(); |
3188 FakeDevToolsClientHost client_host; | 3175 FakeDevToolsClientHost client_host; |
3189 manager->RegisterDevToolsClientHostFor(agent.get(), &client_host); | 3176 manager->RegisterDevToolsClientHostFor(agent.get(), &client_host); |
3190 const char* url = "files/prerender/prerender_page.html"; | 3177 const char* url = "files/prerender/prerender_page.html"; |
3191 PrerenderTestURL(url, FINAL_STATUS_DEVTOOLS_ATTACHED, 1); | 3178 PrerenderTestURL(url, FINAL_STATUS_DEVTOOLS_ATTACHED, 1); |
3192 NavigateToURLWithDisposition(url, CURRENT_TAB, false); | 3179 NavigateToURLWithDisposition(url, CURRENT_TAB, false); |
3193 manager->ClientHostClosing(&client_host); | 3180 manager->ClientHostClosing(&client_host); |
3194 } | 3181 } |
3195 | 3182 |
3196 // Validate that the sessionStorage namespace remains the same when swapping | 3183 // Validate that the sessionStorage namespace remains the same when swapping |
3197 // in a prerendered page. | 3184 // in a prerendered page. |
3198 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, | 3185 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, PrerenderSessionStorage) { |
3199 DISABLED_PrerenderSessionStorage) { | |
3200 set_loader_path("files/prerender/prerender_loader_with_session_storage.html"); | 3186 set_loader_path("files/prerender/prerender_loader_with_session_storage.html"); |
3201 PrerenderTestURL(GetCrossDomainTestUrl("files/prerender/prerender_page.html"), | 3187 PrerenderTestURL(GetCrossDomainTestUrl("files/prerender/prerender_page.html"), |
3202 FINAL_STATUS_USED, | 3188 FINAL_STATUS_USED, |
3203 1); | 3189 1); |
3204 NavigateToDestURL(); | 3190 NavigateToDestURL(); |
3205 GoBackToPageBeforePrerender(); | 3191 GoBackToPageBeforePrerender(); |
3206 } | 3192 } |
3207 | 3193 |
3208 // Checks that the control group works. An XHR PUT cannot be detected in the | 3194 // Checks that the control group works. An XHR PUT cannot be detected in the |
3209 // control group. | 3195 // control group. |
(...skipping 837 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4047 } | 4033 } |
4048 }; | 4034 }; |
4049 | 4035 |
4050 // Checks that prerendering works in incognito mode. | 4036 // Checks that prerendering works in incognito mode. |
4051 IN_PROC_BROWSER_TEST_F(PrerenderIncognitoBrowserTest, PrerenderIncognito) { | 4037 IN_PROC_BROWSER_TEST_F(PrerenderIncognitoBrowserTest, PrerenderIncognito) { |
4052 PrerenderTestURL("files/prerender/prerender_page.html", FINAL_STATUS_USED, 1); | 4038 PrerenderTestURL("files/prerender/prerender_page.html", FINAL_STATUS_USED, 1); |
4053 NavigateToDestURL(); | 4039 NavigateToDestURL(); |
4054 } | 4040 } |
4055 | 4041 |
4056 } // namespace prerender | 4042 } // namespace prerender |
OLD | NEW |