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

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

Issue 10802024: Make three simultanious prerenders the default maximum in Canary and Dev only. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: remediation to review, rebase on top of field trial change Created 8 years, 5 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 217 matching lines...) Expand 10 before | Expand all | Expand 10 after
228 ++number_of_loads_; 228 ++number_of_loads_;
229 if (ShouldRenderPrerenderedPageCorrectly(expected_final_status_) && 229 if (ShouldRenderPrerenderedPageCorrectly(expected_final_status_) &&
230 number_of_loads_ == expected_number_of_loads_) { 230 number_of_loads_ == expected_number_of_loads_) {
231 MessageLoopForUI::current()->Quit(); 231 MessageLoopForUI::current()->Quit();
232 } 232 }
233 } 233 }
234 234
235 virtual void AddPendingPrerender( 235 virtual void AddPendingPrerender(
236 base::WeakPtr<PrerenderHandle> weak_prerender_handle, 236 base::WeakPtr<PrerenderHandle> weak_prerender_handle,
237 const GURL& url, 237 const GURL& url,
238 const content::Referrer& referrer, 238 const content::Referrer& referrer,
239 const gfx::Size& size) OVERRIDE { 239 const gfx::Size& size) OVERRIDE {
240 PrerenderContents::AddPendingPrerender( 240 PrerenderContents::AddPendingPrerender(
241 weak_prerender_handle, url, referrer, size); 241 weak_prerender_handle, url, referrer, size);
242 if (expected_pending_prerenders_ > 0 && 242 if (expected_pending_prerenders_ > 0 &&
243 pending_prerenders().size() == expected_pending_prerenders_) { 243 pending_prerenders().size() == expected_pending_prerenders_) {
244 MessageLoop::current()->Quit(); 244 MessageLoop::current()->Quit();
245 } 245 }
246 } 246 }
247 247
248 virtual WebContents* CreateWebContents( 248 virtual WebContents* CreateWebContents(
249 content::SessionStorageNamespace* session_storage_namespace) OVERRIDE { 249 content::SessionStorageNamespace* session_storage_namespace) OVERRIDE {
(...skipping 1267 matching lines...) Expand 10 before | Expand all | Expand 10 after
1517 // Checks that we don't prerender in an infinite loop and multiple links are 1517 // Checks that we don't prerender in an infinite loop and multiple links are
1518 // handled correctly. 1518 // handled correctly.
1519 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, PrerenderInfiniteLoopMultiple) { 1519 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, PrerenderInfiniteLoopMultiple) {
1520 const char* const kHtmlFileA = 1520 const char* const kHtmlFileA =
1521 "files/prerender/prerender_infinite_a_multiple.html"; 1521 "files/prerender/prerender_infinite_a_multiple.html";
1522 const char* const kHtmlFileB = 1522 const char* const kHtmlFileB =
1523 "files/prerender/prerender_infinite_b_multiple.html"; 1523 "files/prerender/prerender_infinite_b_multiple.html";
1524 const char* const kHtmlFileC = 1524 const char* const kHtmlFileC =
1525 "files/prerender/prerender_infinite_c_multiple.html"; 1525 "files/prerender/prerender_infinite_c_multiple.html";
1526 1526
1527 // We need to set the final status to expect here before starting any 1527 // This test is conceptually simplest if concurrency is at two, since we
1528 // prerenders. We set them on a queue so whichever we see first is expected to 1528 // don't have to worry about which of kHtmlFileB or kHtmlFileC gets evicted.
1529 // be evicted, and the second should stick around until we exit. 1529 GetPrerenderManager()->mutable_config().max_concurrency = 2;
1530
1530 std::deque<FinalStatus> expected_final_status_queue; 1531 std::deque<FinalStatus> expected_final_status_queue;
1531 expected_final_status_queue.push_back(FINAL_STATUS_USED); 1532 expected_final_status_queue.push_back(FINAL_STATUS_USED);
1532 expected_final_status_queue.push_back(FINAL_STATUS_EVICTED); 1533 expected_final_status_queue.push_back(FINAL_STATUS_APP_TERMINATING);
1533 expected_final_status_queue.push_back(FINAL_STATUS_APP_TERMINATING); 1534 expected_final_status_queue.push_back(FINAL_STATUS_APP_TERMINATING);
1534 1535
1535 PrerenderTestURL(kHtmlFileA, expected_final_status_queue, 1); 1536 PrerenderTestURL(kHtmlFileA, expected_final_status_queue, 1);
1536 ASSERT_TRUE(GetPrerenderContents()); 1537 ASSERT_TRUE(GetPrerenderContents());
1537 GetPrerenderContents()->WaitForPendingPrerenders(2u); 1538 GetPrerenderContents()->WaitForPendingPrerenders(2u);
1538 1539
1539 // Next url should be in pending list but not an active entry. 1540 // Next url should be in pending list but not an active entry.
1540 EXPECT_FALSE(UrlIsInPrerenderManager(kHtmlFileB)); 1541 EXPECT_FALSE(UrlIsInPrerenderManager(kHtmlFileB));
1541 EXPECT_FALSE(UrlIsInPrerenderManager(kHtmlFileC)); 1542 EXPECT_FALSE(UrlIsInPrerenderManager(kHtmlFileC));
1542 EXPECT_TRUE(UrlIsPending(kHtmlFileB)); 1543 EXPECT_TRUE(UrlIsPending(kHtmlFileB));
1543 EXPECT_TRUE(UrlIsPending(kHtmlFileC)); 1544 EXPECT_TRUE(UrlIsPending(kHtmlFileC));
1544 1545
1545 NavigateToDestURL(); 1546 NavigateToDestURL();
1546 1547
1547 // Make sure the PrerenderContents for the next urls are now in the manager 1548 // Make sure the PrerenderContents for the next urls are now in the manager
1548 // and not pending. One and only one of the URLs (the last seen) should be the 1549 // and not pending. One and only one of the URLs (the last seen) should be the
1549 // active entry. 1550 // active entry.
1550 bool url_b_is_active_prerender = UrlIsInPrerenderManager(kHtmlFileB); 1551 bool url_b_is_active_prerender = UrlIsInPrerenderManager(kHtmlFileB);
1551 bool url_c_is_active_prerender = UrlIsInPrerenderManager(kHtmlFileC); 1552 bool url_c_is_active_prerender = UrlIsInPrerenderManager(kHtmlFileC);
1552 EXPECT_TRUE((url_b_is_active_prerender || url_c_is_active_prerender) && 1553 EXPECT_TRUE(url_b_is_active_prerender && url_c_is_active_prerender);
1553 !(url_b_is_active_prerender && url_c_is_active_prerender));
1554 EXPECT_FALSE(UrlIsPending(kHtmlFileB)); 1554 EXPECT_FALSE(UrlIsPending(kHtmlFileB));
1555 EXPECT_FALSE(UrlIsPending(kHtmlFileC)); 1555 EXPECT_FALSE(UrlIsPending(kHtmlFileC));
1556 } 1556 }
1557 1557
1558 // See crbug.com/131836. 1558 // See crbug.com/131836.
1559 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, DISABLED_PrerenderTaskManager) { 1559 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, DISABLED_PrerenderTaskManager) {
1560 // Show the task manager. This populates the model. 1560 // Show the task manager. This populates the model.
1561 current_browser()->window()->ShowTaskManager(); 1561 current_browser()->window()->ShowTaskManager();
1562 // Wait for the model of task manager to start. 1562 // Wait for the model of task manager to start.
1563 TaskManagerBrowserTestUtil::WaitForResourceChange(2); 1563 TaskManagerBrowserTestUtil::WaitForResourceChange(2);
(...skipping 819 matching lines...) Expand 10 before | Expand all | Expand 10 after
2383 ResultCatcher catcher; 2383 ResultCatcher catcher;
2384 2384
2385 PrerenderTestURL("files/prerender/prerender_page.html", FINAL_STATUS_USED, 1); 2385 PrerenderTestURL("files/prerender/prerender_page.html", FINAL_STATUS_USED, 1);
2386 NavigateToDestURL(); 2386 NavigateToDestURL();
2387 ASSERT_TRUE(IsEmptyPrerenderLinkManager()); 2387 ASSERT_TRUE(IsEmptyPrerenderLinkManager());
2388 2388
2389 ASSERT_TRUE(catcher.GetNextResult()) << catcher.message(); 2389 ASSERT_TRUE(catcher.GetNextResult()) << catcher.message();
2390 } 2390 }
2391 2391
2392 } // namespace prerender 2392 } // namespace prerender
OLDNEW
« no previous file with comments | « no previous file | chrome/browser/prerender/prerender_config.h » ('j') | chrome/browser/prerender/prerender_config.h » ('J')

Powered by Google App Engine
This is Rietveld 408576698