| 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 |