Chromium Code Reviews| 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 |