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 997 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1235 EXPECT_TRUE(DidReceivePrerenderStartEventForLinkNumber(0)); | 1234 EXPECT_TRUE(DidReceivePrerenderStartEventForLinkNumber(0)); |
1236 EXPECT_FALSE(DidReceivePrerenderStopEventForLinkNumber(0)); | 1235 EXPECT_FALSE(DidReceivePrerenderStopEventForLinkNumber(0)); |
1237 // IsEmptyPrerenderLinkManager() is not racy because the earlier DidReceive* | 1236 // IsEmptyPrerenderLinkManager() is not racy because the earlier DidReceive* |
1238 // calls did a thread/process hop to the renderer which insured pending | 1237 // calls did a thread/process hop to the renderer which insured pending |
1239 // renderer events have arrived. | 1238 // renderer events have arrived. |
1240 EXPECT_TRUE(IsEmptyPrerenderLinkManager()); | 1239 EXPECT_TRUE(IsEmptyPrerenderLinkManager()); |
1241 } | 1240 } |
1242 | 1241 |
1243 IN_PROC_BROWSER_TEST_F( | 1242 IN_PROC_BROWSER_TEST_F( |
1244 PrerenderBrowserTest, PrerenderPageRemovingLinkWithTwoLinks) { | 1243 PrerenderBrowserTest, PrerenderPageRemovingLinkWithTwoLinks) { |
| 1244 GetPrerenderManager()->mutable_config().max_concurrency = 2; |
| 1245 GetPrerenderManager()->mutable_config().max_concurrency_per_launcher = 2; |
| 1246 |
1245 set_loader_path("files/prerender/prerender_loader_removing_links.html"); | 1247 set_loader_path("files/prerender/prerender_loader_removing_links.html"); |
1246 set_loader_query_and_fragment("?links_to_insert=2"); | 1248 set_loader_query_and_fragment("?links_to_insert=2"); |
1247 PrerenderTestURL("files/prerender/prerender_page.html", | 1249 PrerenderTestURL("files/prerender/prerender_page.html", |
1248 FINAL_STATUS_CANCELLED, 1); | 1250 FINAL_STATUS_CANCELLED, 1); |
1249 EXPECT_TRUE(DidReceivePrerenderStartEventForLinkNumber(0)); | 1251 EXPECT_TRUE(DidReceivePrerenderStartEventForLinkNumber(0)); |
1250 EXPECT_FALSE(DidReceivePrerenderStopEventForLinkNumber(0)); | 1252 EXPECT_FALSE(DidReceivePrerenderStopEventForLinkNumber(0)); |
1251 EXPECT_TRUE(DidReceivePrerenderStartEventForLinkNumber(1)); | 1253 EXPECT_TRUE(DidReceivePrerenderStartEventForLinkNumber(1)); |
1252 EXPECT_FALSE(DidReceivePrerenderStopEventForLinkNumber(1)); | 1254 EXPECT_FALSE(DidReceivePrerenderStopEventForLinkNumber(1)); |
1253 | 1255 |
1254 RemoveLinkElement(0); | 1256 RemoveLinkElement(0); |
(...skipping 12 matching lines...) Expand all Loading... |
1267 // TODO(gavinp): Fails on XP Rel - http://crbug.com/128841 | 1269 // TODO(gavinp): Fails on XP Rel - http://crbug.com/128841 |
1268 #define MAYBE_PrerenderPageRemovingLinkWithTwoLinksRemovingOne \ | 1270 #define MAYBE_PrerenderPageRemovingLinkWithTwoLinksRemovingOne \ |
1269 DISABLED_PrerenderPageRemovingLinkWithTwoLinksRemovingOne | 1271 DISABLED_PrerenderPageRemovingLinkWithTwoLinksRemovingOne |
1270 #else | 1272 #else |
1271 #define MAYBE_PrerenderPageRemovingLinkWithTwoLinksRemovingOne \ | 1273 #define MAYBE_PrerenderPageRemovingLinkWithTwoLinksRemovingOne \ |
1272 PrerenderPageRemovingLinkWithTwoLinksRemovingOne | 1274 PrerenderPageRemovingLinkWithTwoLinksRemovingOne |
1273 #endif // defined(OS_WIN) | 1275 #endif // defined(OS_WIN) |
1274 IN_PROC_BROWSER_TEST_F( | 1276 IN_PROC_BROWSER_TEST_F( |
1275 PrerenderBrowserTest, | 1277 PrerenderBrowserTest, |
1276 MAYBE_PrerenderPageRemovingLinkWithTwoLinksRemovingOne) { | 1278 MAYBE_PrerenderPageRemovingLinkWithTwoLinksRemovingOne) { |
| 1279 GetPrerenderManager()->mutable_config().max_concurrency = 2; |
| 1280 GetPrerenderManager()->mutable_config().max_concurrency_per_launcher = 2; |
1277 set_loader_path("files/prerender/prerender_loader_removing_links.html"); | 1281 set_loader_path("files/prerender/prerender_loader_removing_links.html"); |
1278 set_loader_query_and_fragment("?links_to_insert=2"); | 1282 set_loader_query_and_fragment("?links_to_insert=2"); |
1279 PrerenderTestURL("files/prerender/prerender_page.html", | 1283 PrerenderTestURL("files/prerender/prerender_page.html", |
1280 FINAL_STATUS_USED, 1); | 1284 FINAL_STATUS_USED, 1); |
1281 EXPECT_TRUE(DidReceivePrerenderStartEventForLinkNumber(0)); | 1285 EXPECT_TRUE(DidReceivePrerenderStartEventForLinkNumber(0)); |
1282 EXPECT_FALSE(DidReceivePrerenderStopEventForLinkNumber(0)); | 1286 EXPECT_FALSE(DidReceivePrerenderStopEventForLinkNumber(0)); |
1283 EXPECT_TRUE(DidReceivePrerenderStartEventForLinkNumber(1)); | 1287 EXPECT_TRUE(DidReceivePrerenderStartEventForLinkNumber(1)); |
1284 EXPECT_FALSE(DidReceivePrerenderStopEventForLinkNumber(1)); | 1288 EXPECT_FALSE(DidReceivePrerenderStopEventForLinkNumber(1)); |
1285 | 1289 |
1286 RemoveLinkElement(0); | 1290 RemoveLinkElement(0); |
(...skipping 458 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1745 const char* const kHtmlFileA = | 1749 const char* const kHtmlFileA = |
1746 "files/prerender/prerender_infinite_a_multiple.html"; | 1750 "files/prerender/prerender_infinite_a_multiple.html"; |
1747 const char* const kHtmlFileB = | 1751 const char* const kHtmlFileB = |
1748 "files/prerender/prerender_infinite_b_multiple.html"; | 1752 "files/prerender/prerender_infinite_b_multiple.html"; |
1749 const char* const kHtmlFileC = | 1753 const char* const kHtmlFileC = |
1750 "files/prerender/prerender_infinite_c_multiple.html"; | 1754 "files/prerender/prerender_infinite_c_multiple.html"; |
1751 | 1755 |
1752 // This test is conceptually simplest if concurrency is at two, since we | 1756 // This test is conceptually simplest if concurrency is at two, since we |
1753 // don't have to worry about which of kHtmlFileB or kHtmlFileC gets evicted. | 1757 // don't have to worry about which of kHtmlFileB or kHtmlFileC gets evicted. |
1754 GetPrerenderManager()->mutable_config().max_concurrency = 2; | 1758 GetPrerenderManager()->mutable_config().max_concurrency = 2; |
| 1759 GetPrerenderManager()->mutable_config().max_concurrency_per_launcher = 2; |
1755 | 1760 |
1756 std::deque<FinalStatus> expected_final_status_queue; | 1761 std::deque<FinalStatus> expected_final_status_queue; |
1757 expected_final_status_queue.push_back(FINAL_STATUS_USED); | 1762 expected_final_status_queue.push_back(FINAL_STATUS_USED); |
1758 expected_final_status_queue.push_back(FINAL_STATUS_APP_TERMINATING); | 1763 expected_final_status_queue.push_back(FINAL_STATUS_APP_TERMINATING); |
1759 expected_final_status_queue.push_back(FINAL_STATUS_APP_TERMINATING); | 1764 expected_final_status_queue.push_back(FINAL_STATUS_APP_TERMINATING); |
1760 | 1765 |
1761 PrerenderTestURL(kHtmlFileA, expected_final_status_queue, 1); | 1766 PrerenderTestURL(kHtmlFileA, expected_final_status_queue, 1); |
1762 ASSERT_TRUE(GetPrerenderContents()); | 1767 ASSERT_TRUE(GetPrerenderContents()); |
1763 GetPrerenderContents()->WaitForPendingPrerenders(2u); | 1768 GetPrerenderContents()->WaitForPendingPrerenders(2u); |
1764 | 1769 |
(...skipping 881 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2646 channel_close_watcher.WatchChannel( | 2651 channel_close_watcher.WatchChannel( |
2647 chrome::GetActiveWebContents(browser())->GetRenderProcessHost()); | 2652 chrome::GetActiveWebContents(browser())->GetRenderProcessHost()); |
2648 NavigateToDestURL(); | 2653 NavigateToDestURL(); |
2649 channel_close_watcher.WaitForChannelClose(); | 2654 channel_close_watcher.WaitForChannelClose(); |
2650 | 2655 |
2651 ASSERT_TRUE(IsEmptyPrerenderLinkManager()); | 2656 ASSERT_TRUE(IsEmptyPrerenderLinkManager()); |
2652 ASSERT_TRUE(catcher.GetNextResult()) << catcher.message(); | 2657 ASSERT_TRUE(catcher.GetNextResult()) << catcher.message(); |
2653 } | 2658 } |
2654 | 2659 |
2655 } // namespace prerender | 2660 } // namespace prerender |
OLD | NEW |