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 "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 Loading... | |
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 |
OLD | NEW |