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 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 |