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 | 6 |
7 #include "base/command_line.h" | 7 #include "base/command_line.h" |
8 #include "base/path_service.h" | 8 #include "base/path_service.h" |
9 #include "base/string_util.h" | 9 #include "base/string_util.h" |
10 #include "base/stringprintf.h" | 10 #include "base/stringprintf.h" |
(...skipping 206 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
217 : PrerenderContents(prerender_manager, profile, url, | 217 : PrerenderContents(prerender_manager, profile, url, |
218 referrer, origin, PrerenderManager::kNoExperiment), | 218 referrer, origin, PrerenderManager::kNoExperiment), |
219 number_of_loads_(0), | 219 number_of_loads_(0), |
220 expected_number_of_loads_(expected_number_of_loads), | 220 expected_number_of_loads_(expected_number_of_loads), |
221 expected_final_status_(expected_final_status), | 221 expected_final_status_(expected_final_status), |
222 new_render_view_host_(NULL), | 222 new_render_view_host_(NULL), |
223 was_hidden_(false), | 223 was_hidden_(false), |
224 was_shown_(false), | 224 was_shown_(false), |
225 should_be_shown_(expected_final_status == FINAL_STATUS_USED), | 225 should_be_shown_(expected_final_status == FINAL_STATUS_USED), |
226 quit_message_loop_on_destruction_( | 226 quit_message_loop_on_destruction_( |
227 expected_final_status != FINAL_STATUS_EVICTED && | |
228 expected_final_status != FINAL_STATUS_APP_TERMINATING && | 227 expected_final_status != FINAL_STATUS_APP_TERMINATING && |
229 expected_final_status != FINAL_STATUS_MAX), | 228 expected_final_status != FINAL_STATUS_MAX), |
230 expected_pending_prerenders_(0), | 229 expected_pending_prerenders_(0), |
231 prerender_should_wait_for_ready_title_( | 230 prerender_should_wait_for_ready_title_( |
232 prerender_should_wait_for_ready_title) { | 231 prerender_should_wait_for_ready_title) { |
233 if (expected_number_of_loads == 0) | 232 if (expected_number_of_loads == 0) |
234 MessageLoopForUI::current()->Quit(); | 233 MessageLoopForUI::current()->Quit(); |
235 } | 234 } |
236 | 235 |
237 virtual ~TestPrerenderContents() { | 236 virtual ~TestPrerenderContents() { |
(...skipping 991 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1229 // PrerenderLinkManager should be deleted by removing the links, rather than | 1228 // PrerenderLinkManager should be deleted by removing the links, rather than |
1230 // shutting down the renderer process. | 1229 // shutting down the renderer process. |
1231 RemoveLinkElements(); | 1230 RemoveLinkElements(); |
1232 EXPECT_TRUE(DidReceivePrerenderStartEventForLinkNumber(1)); | 1231 EXPECT_TRUE(DidReceivePrerenderStartEventForLinkNumber(1)); |
1233 EXPECT_FALSE(DidReceivePrerenderStopEventForLinkNumber(1)); | 1232 EXPECT_FALSE(DidReceivePrerenderStopEventForLinkNumber(1)); |
1234 EXPECT_TRUE(IsEmptyPrerenderLinkManager()); | 1233 EXPECT_TRUE(IsEmptyPrerenderLinkManager()); |
1235 } | 1234 } |
1236 | 1235 |
1237 IN_PROC_BROWSER_TEST_F( | 1236 IN_PROC_BROWSER_TEST_F( |
1238 PrerenderBrowserTest, PrerenderPageRemovingLinkWithTwoLinks) { | 1237 PrerenderBrowserTest, PrerenderPageRemovingLinkWithTwoLinks) { |
| 1238 GetPrerenderManager()->mutable_config().max_concurrency = 2; |
| 1239 GetPrerenderManager()->mutable_config().max_concurrency_per_launcher = 2; |
| 1240 |
1239 set_loader_path("files/prerender/prerender_loader_removing_links.html"); | 1241 set_loader_path("files/prerender/prerender_loader_removing_links.html"); |
1240 set_loader_query_and_fragment("?links_to_insert=2&links_to_remove=2"); | 1242 set_loader_query_and_fragment("?links_to_insert=2&links_to_remove=2"); |
1241 PrerenderTestURL("files/prerender/prerender_page.html", | 1243 PrerenderTestURL("files/prerender/prerender_page.html", |
1242 FINAL_STATUS_CANCELLED, 1); | 1244 FINAL_STATUS_CANCELLED, 1); |
1243 EXPECT_TRUE(DidReceivePrerenderStartEventForLinkNumber(1)); | 1245 EXPECT_TRUE(DidReceivePrerenderStartEventForLinkNumber(1)); |
1244 EXPECT_FALSE(DidReceivePrerenderStopEventForLinkNumber(1)); | 1246 EXPECT_FALSE(DidReceivePrerenderStopEventForLinkNumber(1)); |
1245 EXPECT_TRUE(DidReceivePrerenderStartEventForLinkNumber(2)); | 1247 EXPECT_TRUE(DidReceivePrerenderStartEventForLinkNumber(2)); |
1246 EXPECT_FALSE(DidReceivePrerenderStopEventForLinkNumber(2)); | 1248 EXPECT_FALSE(DidReceivePrerenderStopEventForLinkNumber(2)); |
1247 | 1249 |
1248 RemoveLinkElements(); | 1250 RemoveLinkElements(); |
1249 EXPECT_TRUE(DidReceivePrerenderStartEventForLinkNumber(1)); | 1251 EXPECT_TRUE(DidReceivePrerenderStartEventForLinkNumber(1)); |
1250 EXPECT_FALSE(DidReceivePrerenderStopEventForLinkNumber(1)); | 1252 EXPECT_FALSE(DidReceivePrerenderStopEventForLinkNumber(1)); |
1251 EXPECT_TRUE(DidReceivePrerenderStartEventForLinkNumber(2)); | 1253 EXPECT_TRUE(DidReceivePrerenderStartEventForLinkNumber(2)); |
1252 | 1254 |
1253 EXPECT_FALSE(DidReceivePrerenderStopEventForLinkNumber(2)); | 1255 EXPECT_FALSE(DidReceivePrerenderStopEventForLinkNumber(2)); |
1254 EXPECT_TRUE(IsEmptyPrerenderLinkManager()); | 1256 EXPECT_TRUE(IsEmptyPrerenderLinkManager()); |
1255 } | 1257 } |
1256 | 1258 |
1257 #if defined(OS_WIN) | 1259 #if defined(OS_WIN) |
1258 // TODO(gavinp): Fails on XP Rel - http://crbug.com/128841 | 1260 // TODO(gavinp): Fails on XP Rel - http://crbug.com/128841 |
1259 #define MAYBE_PrerenderPageRemovingLinkWithTwoLinksRemovingOne \ | 1261 #define MAYBE_PrerenderPageRemovingLinkWithTwoLinksRemovingOne \ |
1260 DISABLED_PrerenderPageRemovingLinkWithTwoLinksRemovingOne | 1262 DISABLED_PrerenderPageRemovingLinkWithTwoLinksRemovingOne |
1261 #else | 1263 #else |
1262 #define MAYBE_PrerenderPageRemovingLinkWithTwoLinksRemovingOne \ | 1264 #define MAYBE_PrerenderPageRemovingLinkWithTwoLinksRemovingOne \ |
1263 PrerenderPageRemovingLinkWithTwoLinksRemovingOne | 1265 PrerenderPageRemovingLinkWithTwoLinksRemovingOne |
1264 #endif // defined(OS_WIN) | 1266 #endif // defined(OS_WIN) |
1265 IN_PROC_BROWSER_TEST_F( | 1267 IN_PROC_BROWSER_TEST_F( |
1266 PrerenderBrowserTest, | 1268 PrerenderBrowserTest, |
1267 MAYBE_PrerenderPageRemovingLinkWithTwoLinksRemovingOne) { | 1269 MAYBE_PrerenderPageRemovingLinkWithTwoLinksRemovingOne) { |
| 1270 GetPrerenderManager()->mutable_config().max_concurrency = 2; |
| 1271 GetPrerenderManager()->mutable_config().max_concurrency_per_launcher = 2; |
1268 set_loader_path("files/prerender/prerender_loader_removing_links.html"); | 1272 set_loader_path("files/prerender/prerender_loader_removing_links.html"); |
1269 set_loader_query_and_fragment("?links_to_insert=2&links_to_remove=1"); | 1273 set_loader_query_and_fragment("?links_to_insert=2&links_to_remove=1"); |
1270 PrerenderTestURL("files/prerender/prerender_page.html", | 1274 PrerenderTestURL("files/prerender/prerender_page.html", |
1271 FINAL_STATUS_USED, 1); | 1275 FINAL_STATUS_USED, 1); |
1272 EXPECT_TRUE(DidReceivePrerenderStartEventForLinkNumber(1)); | 1276 EXPECT_TRUE(DidReceivePrerenderStartEventForLinkNumber(1)); |
1273 EXPECT_FALSE(DidReceivePrerenderStopEventForLinkNumber(1)); | 1277 EXPECT_FALSE(DidReceivePrerenderStopEventForLinkNumber(1)); |
1274 EXPECT_TRUE(DidReceivePrerenderStartEventForLinkNumber(2)); | 1278 EXPECT_TRUE(DidReceivePrerenderStartEventForLinkNumber(2)); |
1275 EXPECT_FALSE(DidReceivePrerenderStopEventForLinkNumber(2)); | 1279 EXPECT_FALSE(DidReceivePrerenderStopEventForLinkNumber(2)); |
1276 | 1280 |
1277 RemoveLinkElements(); | 1281 RemoveLinkElements(); |
(...skipping 456 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1734 const char* const kHtmlFileA = | 1738 const char* const kHtmlFileA = |
1735 "files/prerender/prerender_infinite_a_multiple.html"; | 1739 "files/prerender/prerender_infinite_a_multiple.html"; |
1736 const char* const kHtmlFileB = | 1740 const char* const kHtmlFileB = |
1737 "files/prerender/prerender_infinite_b_multiple.html"; | 1741 "files/prerender/prerender_infinite_b_multiple.html"; |
1738 const char* const kHtmlFileC = | 1742 const char* const kHtmlFileC = |
1739 "files/prerender/prerender_infinite_c_multiple.html"; | 1743 "files/prerender/prerender_infinite_c_multiple.html"; |
1740 | 1744 |
1741 // This test is conceptually simplest if concurrency is at two, since we | 1745 // This test is conceptually simplest if concurrency is at two, since we |
1742 // don't have to worry about which of kHtmlFileB or kHtmlFileC gets evicted. | 1746 // don't have to worry about which of kHtmlFileB or kHtmlFileC gets evicted. |
1743 GetPrerenderManager()->mutable_config().max_concurrency = 2; | 1747 GetPrerenderManager()->mutable_config().max_concurrency = 2; |
| 1748 GetPrerenderManager()->mutable_config().max_concurrency_per_launcher = 2; |
1744 | 1749 |
1745 std::deque<FinalStatus> expected_final_status_queue; | 1750 std::deque<FinalStatus> expected_final_status_queue; |
1746 expected_final_status_queue.push_back(FINAL_STATUS_USED); | 1751 expected_final_status_queue.push_back(FINAL_STATUS_USED); |
1747 expected_final_status_queue.push_back(FINAL_STATUS_APP_TERMINATING); | 1752 expected_final_status_queue.push_back(FINAL_STATUS_APP_TERMINATING); |
1748 expected_final_status_queue.push_back(FINAL_STATUS_APP_TERMINATING); | 1753 expected_final_status_queue.push_back(FINAL_STATUS_APP_TERMINATING); |
1749 | 1754 |
1750 PrerenderTestURL(kHtmlFileA, expected_final_status_queue, 1); | 1755 PrerenderTestURL(kHtmlFileA, expected_final_status_queue, 1); |
1751 ASSERT_TRUE(GetPrerenderContents()); | 1756 ASSERT_TRUE(GetPrerenderContents()); |
1752 GetPrerenderContents()->WaitForPendingPrerenders(2u); | 1757 GetPrerenderContents()->WaitForPendingPrerenders(2u); |
1753 | 1758 |
(...skipping 887 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2641 channel_close_watcher.WatchChannel( | 2646 channel_close_watcher.WatchChannel( |
2642 chrome::GetActiveWebContents(browser())->GetRenderProcessHost()); | 2647 chrome::GetActiveWebContents(browser())->GetRenderProcessHost()); |
2643 NavigateToDestURL(); | 2648 NavigateToDestURL(); |
2644 channel_close_watcher.WaitForChannelClose(); | 2649 channel_close_watcher.WaitForChannelClose(); |
2645 | 2650 |
2646 ASSERT_TRUE(IsEmptyPrerenderLinkManager()); | 2651 ASSERT_TRUE(IsEmptyPrerenderLinkManager()); |
2647 ASSERT_TRUE(catcher.GetNextResult()) << catcher.message(); | 2652 ASSERT_TRUE(catcher.GetNextResult()) << catcher.message(); |
2648 } | 2653 } |
2649 | 2654 |
2650 } // namespace prerender | 2655 } // namespace prerender |
OLD | NEW |