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