Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(439)

Side by Side Diff: chrome/browser/prerender/prerender_browsertest.cc

Issue 11551003: Change multi-prerender API to include per launcher slots. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: clear to land Created 7 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
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 204 matching lines...) Expand 10 before | Expand all | Expand 10 after
215 : PrerenderContents(prerender_manager, profile, url, 215 : PrerenderContents(prerender_manager, profile, url,
216 referrer, origin, PrerenderManager::kNoExperiment), 216 referrer, origin, PrerenderManager::kNoExperiment),
217 number_of_loads_(0), 217 number_of_loads_(0),
218 expected_number_of_loads_(expected_number_of_loads), 218 expected_number_of_loads_(expected_number_of_loads),
219 expected_final_status_(expected_final_status), 219 expected_final_status_(expected_final_status),
220 new_render_view_host_(NULL), 220 new_render_view_host_(NULL),
221 was_hidden_(false), 221 was_hidden_(false),
222 was_shown_(false), 222 was_shown_(false),
223 should_be_shown_(expected_final_status == FINAL_STATUS_USED), 223 should_be_shown_(expected_final_status == FINAL_STATUS_USED),
224 quit_message_loop_on_destruction_( 224 quit_message_loop_on_destruction_(
225 expected_final_status != FINAL_STATUS_EVICTED &&
226 expected_final_status != FINAL_STATUS_APP_TERMINATING && 225 expected_final_status != FINAL_STATUS_APP_TERMINATING &&
227 expected_final_status != FINAL_STATUS_MAX), 226 expected_final_status != FINAL_STATUS_MAX),
228 expected_pending_prerenders_(0), 227 expected_pending_prerenders_(0),
229 prerender_should_wait_for_ready_title_( 228 prerender_should_wait_for_ready_title_(
230 prerender_should_wait_for_ready_title) { 229 prerender_should_wait_for_ready_title) {
231 if (expected_number_of_loads == 0) 230 if (expected_number_of_loads == 0)
232 MessageLoopForUI::current()->Quit(); 231 MessageLoopForUI::current()->Quit();
233 } 232 }
234 233
235 virtual ~TestPrerenderContents() { 234 virtual ~TestPrerenderContents() {
(...skipping 998 matching lines...) Expand 10 before | Expand all | Expand 10 after
1234 EXPECT_FALSE(DidReceivePrerenderStopEventForLinkNumber(0)); 1233 EXPECT_FALSE(DidReceivePrerenderStopEventForLinkNumber(0));
1235 // IsEmptyPrerenderLinkManager() is not racy because the earlier DidReceive* 1234 // IsEmptyPrerenderLinkManager() is not racy because the earlier DidReceive*
1236 // calls did a thread/process hop to the renderer which insured pending 1235 // calls did a thread/process hop to the renderer which insured pending
1237 // renderer events have arrived. 1236 // renderer events have arrived.
1238 EXPECT_TRUE(IsEmptyPrerenderLinkManager()); 1237 EXPECT_TRUE(IsEmptyPrerenderLinkManager());
1239 } 1238 }
1240 1239
1241 // Flaky, http://crbug.com/167340. 1240 // Flaky, http://crbug.com/167340.
1242 IN_PROC_BROWSER_TEST_F( 1241 IN_PROC_BROWSER_TEST_F(
1243 PrerenderBrowserTest, DISABLED_PrerenderPageRemovingLinkWithTwoLinks) { 1242 PrerenderBrowserTest, DISABLED_PrerenderPageRemovingLinkWithTwoLinks) {
1243 GetPrerenderManager()->mutable_config().max_link_concurrency = 2;
1244 GetPrerenderManager()->mutable_config().max_link_concurrency_per_launcher = 2;
1245
1244 set_loader_path("files/prerender/prerender_loader_removing_links.html"); 1246 set_loader_path("files/prerender/prerender_loader_removing_links.html");
1245 set_loader_query_and_fragment("?links_to_insert=2"); 1247 set_loader_query_and_fragment("?links_to_insert=2");
1246 PrerenderTestURL("files/prerender/prerender_page.html", 1248 PrerenderTestURL("files/prerender/prerender_page.html",
1247 FINAL_STATUS_CANCELLED, 1); 1249 FINAL_STATUS_CANCELLED, 1);
1248 EXPECT_TRUE(DidReceivePrerenderStartEventForLinkNumber(0)); 1250 EXPECT_TRUE(DidReceivePrerenderStartEventForLinkNumber(0));
1249 EXPECT_FALSE(DidReceivePrerenderStopEventForLinkNumber(0)); 1251 EXPECT_FALSE(DidReceivePrerenderStopEventForLinkNumber(0));
1250 EXPECT_TRUE(DidReceivePrerenderStartEventForLinkNumber(1)); 1252 EXPECT_TRUE(DidReceivePrerenderStartEventForLinkNumber(1));
1251 EXPECT_FALSE(DidReceivePrerenderStopEventForLinkNumber(1)); 1253 EXPECT_FALSE(DidReceivePrerenderStopEventForLinkNumber(1));
1252 1254
1253 RemoveLinkElement(0); 1255 RemoveLinkElement(0);
(...skipping 12 matching lines...) Expand all
1266 // TODO(gavinp): Fails on XP Rel - http://crbug.com/128841 1268 // TODO(gavinp): Fails on XP Rel - http://crbug.com/128841
1267 #define MAYBE_PrerenderPageRemovingLinkWithTwoLinksRemovingOne \ 1269 #define MAYBE_PrerenderPageRemovingLinkWithTwoLinksRemovingOne \
1268 DISABLED_PrerenderPageRemovingLinkWithTwoLinksRemovingOne 1270 DISABLED_PrerenderPageRemovingLinkWithTwoLinksRemovingOne
1269 #else 1271 #else
1270 #define MAYBE_PrerenderPageRemovingLinkWithTwoLinksRemovingOne \ 1272 #define MAYBE_PrerenderPageRemovingLinkWithTwoLinksRemovingOne \
1271 PrerenderPageRemovingLinkWithTwoLinksRemovingOne 1273 PrerenderPageRemovingLinkWithTwoLinksRemovingOne
1272 #endif // defined(OS_WIN) 1274 #endif // defined(OS_WIN)
1273 IN_PROC_BROWSER_TEST_F( 1275 IN_PROC_BROWSER_TEST_F(
1274 PrerenderBrowserTest, 1276 PrerenderBrowserTest,
1275 MAYBE_PrerenderPageRemovingLinkWithTwoLinksRemovingOne) { 1277 MAYBE_PrerenderPageRemovingLinkWithTwoLinksRemovingOne) {
1278 GetPrerenderManager()->mutable_config().max_link_concurrency = 2;
1279 GetPrerenderManager()->mutable_config().max_link_concurrency_per_launcher = 2;
1276 set_loader_path("files/prerender/prerender_loader_removing_links.html"); 1280 set_loader_path("files/prerender/prerender_loader_removing_links.html");
1277 set_loader_query_and_fragment("?links_to_insert=2"); 1281 set_loader_query_and_fragment("?links_to_insert=2");
1278 PrerenderTestURL("files/prerender/prerender_page.html", 1282 PrerenderTestURL("files/prerender/prerender_page.html",
1279 FINAL_STATUS_USED, 1); 1283 FINAL_STATUS_USED, 1);
1280 EXPECT_TRUE(DidReceivePrerenderStartEventForLinkNumber(0)); 1284 EXPECT_TRUE(DidReceivePrerenderStartEventForLinkNumber(0));
1281 EXPECT_FALSE(DidReceivePrerenderStopEventForLinkNumber(0)); 1285 EXPECT_FALSE(DidReceivePrerenderStopEventForLinkNumber(0));
1282 EXPECT_TRUE(DidReceivePrerenderStartEventForLinkNumber(1)); 1286 EXPECT_TRUE(DidReceivePrerenderStartEventForLinkNumber(1));
1283 EXPECT_FALSE(DidReceivePrerenderStopEventForLinkNumber(1)); 1287 EXPECT_FALSE(DidReceivePrerenderStopEventForLinkNumber(1));
1284 1288
1285 RemoveLinkElement(0); 1289 RemoveLinkElement(0);
(...skipping 408 matching lines...) Expand 10 before | Expand all | Expand 10 after
1694 1); 1698 1);
1695 } 1699 }
1696 1700
1697 // Checks shutdown code while a prerender is active. 1701 // Checks shutdown code while a prerender is active.
1698 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, PrerenderQuickQuit) { 1702 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, PrerenderQuickQuit) {
1699 PrerenderTestURL("files/prerender/prerender_page.html", 1703 PrerenderTestURL("files/prerender/prerender_page.html",
1700 FINAL_STATUS_APP_TERMINATING, 1704 FINAL_STATUS_APP_TERMINATING,
1701 0); 1705 0);
1702 } 1706 }
1703 1707
1704 #if defined(OS_LINUX) 1708 // TODO(gavinp,sreeram): Fix http://crbug.com/145248 and deflake this test.
1705 // http://crbug.com/145248
1706 #define MAYBE_PrerenderInfiniteLoop DISABLED_PrerenderInfiniteLoop
1707 #else
1708 #define MAYBE_PrerenderInfiniteLoop PrerenderInfiniteLoop
1709 #endif
1710 // Checks that we don't prerender in an infinite loop. 1709 // Checks that we don't prerender in an infinite loop.
1711 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, MAYBE_PrerenderInfiniteLoop) { 1710 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, DISABLED_PrerenderInfiniteLoop) {
1712 const char* const kHtmlFileA = "files/prerender/prerender_infinite_a.html"; 1711 const char* const kHtmlFileA = "files/prerender/prerender_infinite_a.html";
1713 const char* const kHtmlFileB = "files/prerender/prerender_infinite_b.html"; 1712 const char* const kHtmlFileB = "files/prerender/prerender_infinite_b.html";
1714 1713
1715 std::deque<FinalStatus> expected_final_status_queue; 1714 std::deque<FinalStatus> expected_final_status_queue;
1716 expected_final_status_queue.push_back(FINAL_STATUS_USED); 1715 expected_final_status_queue.push_back(FINAL_STATUS_USED);
1717 expected_final_status_queue.push_back(FINAL_STATUS_APP_TERMINATING); 1716 expected_final_status_queue.push_back(FINAL_STATUS_APP_TERMINATING);
1718 1717
1719 PrerenderTestURL(kHtmlFileA, expected_final_status_queue, 1); 1718 PrerenderTestURL(kHtmlFileA, expected_final_status_queue, 1);
1720 ASSERT_TRUE(GetPrerenderContents()); 1719 ASSERT_TRUE(GetPrerenderContents());
1721 GetPrerenderContents()->WaitForPendingPrerenders(1u); 1720 GetPrerenderContents()->WaitForPendingPrerenders(1u);
1722 1721
1723 // Next url should be in pending list but not an active entry. 1722 // Next url should be in pending list but not an active entry.
1724 EXPECT_FALSE(UrlIsInPrerenderManager(kHtmlFileB)); 1723 EXPECT_FALSE(UrlIsInPrerenderManager(kHtmlFileB));
1725 1724
1726 NavigateToDestURL(); 1725 NavigateToDestURL();
1727 1726
1728 // Make sure the PrerenderContents for the next url is now in the manager 1727 // Make sure the PrerenderContents for the next url is now in the manager
1729 // and not pending. 1728 // and not pending.
1730 EXPECT_TRUE(UrlIsInPrerenderManager(kHtmlFileB)); 1729 EXPECT_TRUE(UrlIsInPrerenderManager(kHtmlFileB));
1731 } 1730 }
1732 1731
1733 #if defined(OS_LINUX) || defined(OS_WIN) 1732 // TODO(gavinp,sreeram): Fix http://crbug.com/145248 and deflake this test.
1734 // http://crbug.com/145248
1735 #define MAYBE_PrerenderInfiniteLoopMultiple \
1736 DISABLED_PrerenderInfiniteLoopMultiple
1737 #else
1738 #define MAYBE_PrerenderInfiniteLoopMultiple PrerenderInfiniteLoopMultiple
1739 #endif
1740 // Checks that we don't prerender in an infinite loop and multiple links are 1733 // Checks that we don't prerender in an infinite loop and multiple links are
1741 // handled correctly. 1734 // handled correctly.
1742 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, 1735 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest,
1743 MAYBE_PrerenderInfiniteLoopMultiple) { 1736 DISABLED_PrerenderInfiniteLoopMultiple) {
1744 const char* const kHtmlFileA = 1737 const char* const kHtmlFileA =
1745 "files/prerender/prerender_infinite_a_multiple.html"; 1738 "files/prerender/prerender_infinite_a_multiple.html";
1746 const char* const kHtmlFileB = 1739 const char* const kHtmlFileB =
1747 "files/prerender/prerender_infinite_b_multiple.html"; 1740 "files/prerender/prerender_infinite_b_multiple.html";
1748 const char* const kHtmlFileC = 1741 const char* const kHtmlFileC =
1749 "files/prerender/prerender_infinite_c_multiple.html"; 1742 "files/prerender/prerender_infinite_c_multiple.html";
1750 1743
1751 // This test is conceptually simplest if concurrency is at two, since we 1744 // This test is conceptually simplest if concurrency is at two, since we
1752 // don't have to worry about which of kHtmlFileB or kHtmlFileC gets evicted. 1745 // don't have to worry about which of kHtmlFileB or kHtmlFileC gets evicted.
1753 GetPrerenderManager()->mutable_config().max_concurrency = 2; 1746 GetPrerenderManager()->mutable_config().max_link_concurrency = 2;
1747 GetPrerenderManager()->mutable_config().max_link_concurrency_per_launcher = 2;
1754 1748
1755 std::deque<FinalStatus> expected_final_status_queue; 1749 std::deque<FinalStatus> expected_final_status_queue;
1756 expected_final_status_queue.push_back(FINAL_STATUS_USED); 1750 expected_final_status_queue.push_back(FINAL_STATUS_USED);
1757 expected_final_status_queue.push_back(FINAL_STATUS_APP_TERMINATING); 1751 expected_final_status_queue.push_back(FINAL_STATUS_APP_TERMINATING);
1758 expected_final_status_queue.push_back(FINAL_STATUS_APP_TERMINATING); 1752 expected_final_status_queue.push_back(FINAL_STATUS_APP_TERMINATING);
1759 1753
1760 PrerenderTestURL(kHtmlFileA, expected_final_status_queue, 1); 1754 PrerenderTestURL(kHtmlFileA, expected_final_status_queue, 1);
1761 ASSERT_TRUE(GetPrerenderContents()); 1755 ASSERT_TRUE(GetPrerenderContents());
1762 GetPrerenderContents()->WaitForPendingPrerenders(2u); 1756 GetPrerenderContents()->WaitForPendingPrerenders(2u);
1763 1757
(...skipping 882 matching lines...) Expand 10 before | Expand all | Expand 10 after
2646 channel_close_watcher.WatchChannel( 2640 channel_close_watcher.WatchChannel(
2647 chrome::GetActiveWebContents(browser())->GetRenderProcessHost()); 2641 chrome::GetActiveWebContents(browser())->GetRenderProcessHost());
2648 NavigateToDestURL(); 2642 NavigateToDestURL();
2649 channel_close_watcher.WaitForChannelClose(); 2643 channel_close_watcher.WaitForChannelClose();
2650 2644
2651 ASSERT_TRUE(IsEmptyPrerenderLinkManager()); 2645 ASSERT_TRUE(IsEmptyPrerenderLinkManager());
2652 ASSERT_TRUE(catcher.GetNextResult()) << catcher.message(); 2646 ASSERT_TRUE(catcher.GetNextResult()) << catcher.message();
2653 } 2647 }
2654 2648
2655 } // namespace prerender 2649 } // namespace prerender
OLDNEW
« no previous file with comments | « chrome/browser/predictors/autocomplete_action_predictor.cc ('k') | chrome/browser/prerender/prerender_config.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698