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 294 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
305 } | 305 } |
306 | 306 |
307 void SetConcurrency(size_t concurrency) { | 307 void SetConcurrency(size_t concurrency) { |
308 prerender_manager()->mutable_config().max_link_concurrency_per_launcher = | 308 prerender_manager()->mutable_config().max_link_concurrency_per_launcher = |
309 concurrency; | 309 concurrency; |
310 prerender_manager()->mutable_config().max_link_concurrency = | 310 prerender_manager()->mutable_config().max_link_concurrency = |
311 std::max(prerender_manager()->mutable_config().max_link_concurrency, | 311 std::max(prerender_manager()->mutable_config().max_link_concurrency, |
312 concurrency); | 312 concurrency); |
313 } | 313 } |
314 | 314 |
315 bool IsEmptyPrerenderLinkManager() { | 315 bool IsEmptyPrerenderLinkManager() { |
mmenke
2013/02/14 16:48:12
While you're here, this could be const, too. Sinc
| |
316 return prerender_link_manager_->IsEmpty(); | 316 return prerender_link_manager_->IsEmpty(); |
317 } | 317 } |
318 | 318 |
319 size_t CountAllLinkPrerenders() { | |
mmenke
2013/02/14 16:48:12
nit: const?
| |
320 return prerender_link_manager_->prerenders_.size(); | |
321 } | |
322 | |
319 int last_prerender_id() const { | 323 int last_prerender_id() const { |
320 return last_prerender_id_; | 324 return last_prerender_id_; |
321 } | 325 } |
322 | 326 |
323 int GetNextPrerenderID() { | 327 int GetNextPrerenderID() { |
324 return ++last_prerender_id_; | 328 return ++last_prerender_id_; |
325 } | 329 } |
326 | 330 |
327 bool LauncherHasRunningPrerender(int child_id, int prerender_id) { | 331 bool LauncherHasRunningPrerender(int child_id, int prerender_id) { |
328 PrerenderLinkManager::LinkPrerender* prerender = | 332 PrerenderLinkManager::LinkPrerender* prerender = |
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
387 url, | 391 url, |
388 FINAL_STATUS_MANAGER_SHUTDOWN); | 392 FINAL_STATUS_MANAGER_SHUTDOWN); |
389 EXPECT_TRUE(AddSimplePrerender(url)); | 393 EXPECT_TRUE(AddSimplePrerender(url)); |
390 EXPECT_EQ(prerender_contents1, | 394 EXPECT_EQ(prerender_contents1, |
391 prerender_manager()->next_prerender_contents()); | 395 prerender_manager()->next_prerender_contents()); |
392 EXPECT_FALSE(prerender_contents1->prerendering_has_started()); | 396 EXPECT_FALSE(prerender_contents1->prerendering_has_started()); |
393 | 397 |
394 ASSERT_EQ(prerender_contents, prerender_manager()->FindAndUseEntry(url)); | 398 ASSERT_EQ(prerender_contents, prerender_manager()->FindAndUseEntry(url)); |
395 } | 399 } |
396 | 400 |
401 // Makes sure that we do not create two running prerender entries for the same | |
402 // launcher and prerender id. | |
403 TEST_F(PrerenderTest, DoubleAddTest) { | |
404 SetConcurrency(2); | |
405 | |
406 GURL url("http://www.google.com/"); | |
407 DummyPrerenderContents* prerender_contents = | |
408 prerender_manager()->CreateNextPrerenderContents( | |
409 url, | |
410 FINAL_STATUS_USED); | |
411 EXPECT_TRUE(AddSimplePrerender(url)); | |
412 EXPECT_TRUE(prerender_contents->prerendering_has_started()); | |
413 EXPECT_EQ(1u, CountAllLinkPrerenders()); | |
414 | |
415 GURL url2("http://www.notgoogle.com/"); | |
416 prerender_link_manager()->OnAddPrerender(kDefaultChildId, | |
417 last_prerender_id(), | |
418 url, content::Referrer(), | |
419 kSize, kDefaultRenderViewRouteId); | |
420 // The second add had the same launcher and prerender_id as a running | |
421 // prerender, so it should have done nothing. | |
422 EXPECT_EQ(1u, CountAllLinkPrerenders()); | |
423 ASSERT_EQ(prerender_contents, prerender_manager()->FindAndUseEntry(url)); | |
424 EXPECT_TRUE(IsEmptyPrerenderLinkManager()); | |
425 } | |
426 | |
397 // Ensure that we expire a prerendered page after the max. permitted time. | 427 // Ensure that we expire a prerendered page after the max. permitted time. |
398 TEST_F(PrerenderTest, ExpireTest) { | 428 TEST_F(PrerenderTest, ExpireTest) { |
399 GURL url("http://www.google.com/"); | 429 GURL url("http://www.google.com/"); |
400 DummyPrerenderContents* prerender_contents = | 430 DummyPrerenderContents* prerender_contents = |
401 prerender_manager()->CreateNextPrerenderContents( | 431 prerender_manager()->CreateNextPrerenderContents( |
402 url, | 432 url, |
403 FINAL_STATUS_TIMED_OUT); | 433 FINAL_STATUS_TIMED_OUT); |
404 DummyPrerenderContents* null = NULL; | 434 DummyPrerenderContents* null = NULL; |
405 EXPECT_TRUE(AddSimplePrerender(url)); | 435 EXPECT_TRUE(AddSimplePrerender(url)); |
406 EXPECT_EQ(null, prerender_manager()->next_prerender_contents()); | 436 EXPECT_EQ(null, prerender_manager()->next_prerender_contents()); |
(...skipping 1007 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1414 EXPECT_EQ(null, prerender_manager()->FindEntry(second_url)); | 1444 EXPECT_EQ(null, prerender_manager()->FindEntry(second_url)); |
1415 | 1445 |
1416 // The first prerender should have died, giving life to the second one. | 1446 // The first prerender should have died, giving life to the second one. |
1417 prerender_manager()->AdvanceTimeTicks(wait_for_first_prerender_to_expire); | 1447 prerender_manager()->AdvanceTimeTicks(wait_for_first_prerender_to_expire); |
1418 EXPECT_EQ(null, prerender_manager()->FindEntry(first_url)); | 1448 EXPECT_EQ(null, prerender_manager()->FindEntry(first_url)); |
1419 EXPECT_EQ(second_prerender_contents, | 1449 EXPECT_EQ(second_prerender_contents, |
1420 prerender_manager()->FindAndUseEntry(second_url)); | 1450 prerender_manager()->FindAndUseEntry(second_url)); |
1421 } | 1451 } |
1422 | 1452 |
1423 } // namespace prerender | 1453 } // namespace prerender |
OLD | NEW |