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().time_to_live - |
| 1380 wait_to_launch_second_prerender + |
| 1381 TimeDelta::FromSeconds(1); |
| 1382 ASSERT_LT(prerender_manager()->config().time_to_live, |
| 1383 wait_to_launch_second_prerender + |
| 1384 wait_for_first_prerender_to_expire); |
| 1385 ASSERT_GT(prerender_manager()->config().max_wait_to_launch.InSeconds(), |
| 1386 wait_for_first_prerender_to_expire.InSeconds()); |
| 1387 |
| 1388 prerender_manager()->AdvanceTimeTicks(wait_to_launch_second_prerender); |
| 1389 GURL second_url("http://www.willlaunch.com"); |
| 1390 DummyPrerenderContents* second_prerender_contents = |
| 1391 prerender_manager()->CreateNextPrerenderContents( |
| 1392 second_url, FINAL_STATUS_USED); |
| 1393 EXPECT_FALSE(AddSimplePrerender(second_url)); |
| 1394 |
| 1395 // The first prerender is still running, but the second has not yet launched. |
| 1396 EXPECT_EQ(first_prerender_contents, |
| 1397 prerender_manager()->FindEntry(first_url)); |
| 1398 PrerenderContents* null = NULL; |
| 1399 EXPECT_EQ(null, prerender_manager()->FindEntry(second_url)); |
| 1400 |
| 1401 // The first prerender should have died, giving life to the second one. |
| 1402 prerender_manager()->AdvanceTimeTicks(wait_for_first_prerender_to_expire); |
| 1403 EXPECT_EQ(null, prerender_manager()->FindEntry(first_url)); |
| 1404 EXPECT_EQ(second_prerender_contents, |
| 1405 prerender_manager()->FindAndUseEntry(second_url)); |
| 1406 } |
| 1407 |
1358 } // namespace prerender | 1408 } // namespace prerender |
OLD | NEW |