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

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

Issue 11727006: Do not recursively delete prerenders from within deleting prerenders. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: 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
« no previous file with comments | « chrome/browser/prerender/prerender_manager.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 "base/command_line.h" 5 #include "base/command_line.h"
6 #include "base/format_macros.h" 6 #include "base/format_macros.h"
7 #include "base/memory/scoped_vector.h" 7 #include "base/memory/scoped_vector.h"
8 #include "base/message_loop.h" 8 #include "base/message_loop.h"
9 #include "base/stringprintf.h" 9 #include "base/stringprintf.h"
10 #include "base/time.h" 10 #include "base/time.h"
(...skipping 1337 matching lines...) Expand 10 before | Expand all | Expand 10 after
1348 EXPECT_EQ(null, prerender_manager()->FindEntry(second_url)); 1348 EXPECT_EQ(null, prerender_manager()->FindEntry(second_url));
1349 1349
1350 EXPECT_EQ(prerender_contents, 1350 EXPECT_EQ(prerender_contents,
1351 prerender_manager()->FindAndUseEntry(first_url)); 1351 prerender_manager()->FindAndUseEntry(first_url));
1352 1352
1353 EXPECT_EQ(null, prerender_manager()->FindEntry(first_url)); 1353 EXPECT_EQ(null, prerender_manager()->FindEntry(first_url));
1354 EXPECT_EQ(null, prerender_manager()->FindEntry(second_url)); 1354 EXPECT_EQ(null, prerender_manager()->FindEntry(second_url));
1355 EXPECT_TRUE(IsEmptyPrerenderLinkManager()); 1355 EXPECT_TRUE(IsEmptyPrerenderLinkManager());
1356 } 1356 }
1357 1357
1358 // Creates two prerenders, one of which should start when the first one expires.
1359 TEST_F(PrerenderTest, LinkManagerExpireRevealingLaunch) {
1360 SetConcurrency(1);
1361 ASSERT_LT(prerender_manager()->config().max_wait_to_launch,
1362 prerender_manager()->config().time_to_live);
1363
1364 GURL first_url("http://www.willexpire.com");
1365 DummyPrerenderContents* first_prerender_contents =
1366 prerender_manager()->CreateNextPrerenderContents(
1367 first_url, FINAL_STATUS_TIMED_OUT);
1368 EXPECT_TRUE(AddSimplePrerender(first_url));
1369 EXPECT_EQ(first_prerender_contents,
1370 prerender_manager()->FindEntry(first_url));
1371
1372 // Insert the second prerender so it will be still be launchable when the
1373 // first expires.
1374 const TimeDelta wait_to_launch_second_prerender =
1375 prerender_manager()->config().time_to_live -
1376 prerender_manager()->config().max_wait_to_launch +
1377 TimeDelta::FromSeconds(2);
1378 const TimeDelta wait_for_first_prerender_to_expire =
1379 prerender_manager()->config().max_wait_to_launch -
1380 TimeDelta::FromSeconds(1);
mmenke 2013/01/01 18:18:36 optional: This may be a little clearer if you use
gavinp 2013/01/02 14:54:04 Done. Writing these types of equations is always t
1381 EXPECT_LT(prerender_manager()->config().time_to_live,
1382 wait_to_launch_second_prerender +
1383 wait_for_first_prerender_to_expire);
1384 EXPECT_GT(prerender_manager()->config().max_wait_to_launch.InSeconds(),
1385 wait_for_first_prerender_to_expire.InSeconds());;
mmenke 2013/01/01 18:18:36 nit: extra semi-colon.
gavinp 2013/01/02 14:54:04 Done.
1386
1387 prerender_manager()->AdvanceTimeTicks(wait_to_launch_second_prerender);
1388 GURL second_url("http://www.willlaunch.com");
1389 DummyPrerenderContents* second_prerender_contents =
1390 prerender_manager()->CreateNextPrerenderContents(
1391 second_url, FINAL_STATUS_USED);
1392 EXPECT_FALSE(AddSimplePrerender(second_url));
1393
1394 // The first prerender is still running, but the second has not yet launched.
1395 EXPECT_EQ(first_prerender_contents,
1396 prerender_manager()->FindEntry(first_url));
1397 PrerenderContents* null = NULL;
1398 EXPECT_EQ(null, prerender_manager()->FindEntry(second_url));
1399
1400 // The first prerender should have died, giving life to the second one.
1401 prerender_manager()->AdvanceTimeTicks(wait_for_first_prerender_to_expire);
1402 EXPECT_EQ(null, prerender_manager()->FindEntry(first_url));
1403 EXPECT_EQ(second_prerender_contents,
1404 prerender_manager()->FindAndUseEntry(second_url));
1405 }
1406
1358 } // namespace prerender 1407 } // namespace prerender
OLDNEW
« no previous file with comments | « chrome/browser/prerender/prerender_manager.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698