| 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/memory/scoped_vector.h" | 6 #include "base/memory/scoped_vector.h" |
| 7 #include "base/message_loop.h" | 7 #include "base/message_loop.h" |
| 8 #include "base/time.h" | 8 #include "base/time.h" |
| 9 #include "chrome/browser/prerender/prerender_contents.h" | 9 #include "chrome/browser/prerender/prerender_contents.h" |
| 10 #include "chrome/browser/prerender/prerender_link_manager.h" | 10 #include "chrome/browser/prerender/prerender_link_manager.h" |
| 11 #include "chrome/browser/prerender/prerender_manager.h" | 11 #include "chrome/browser/prerender/prerender_manager.h" |
| 12 #include "chrome/browser/prerender/prerender_origin.h" | 12 #include "chrome/browser/prerender/prerender_origin.h" |
| 13 #include "chrome/common/chrome_switches.h" | 13 #include "chrome/common/chrome_switches.h" |
| 14 #include "chrome/test/base/testing_browser_process.h" | 14 #include "chrome/test/base/testing_browser_process.h" |
| 15 #include "chrome/test/base/testing_profile.h" | 15 #include "chrome/test/base/testing_profile.h" |
| 16 #include "content/public/browser/render_view_host.h" | 16 #include "content/public/browser/render_view_host.h" |
| 17 #include "content/test/test_browser_thread.h" | 17 #include "content/test/test_browser_thread.h" |
| 18 #include "googleurl/src/gurl.h" | 18 #include "googleurl/src/gurl.h" |
| 19 #include "testing/gtest/include/gtest/gtest.h" | 19 #include "testing/gtest/include/gtest/gtest.h" |
| 20 #include "ui/gfx/size.h" | 20 #include "ui/gfx/size.h" |
| 21 | 21 |
| 22 using content::BrowserThread; | 22 using content::BrowserThread; |
| 23 using content::Referrer; |
| 23 | 24 |
| 24 namespace prerender { | 25 namespace prerender { |
| 25 | 26 |
| 26 namespace { | 27 namespace { |
| 27 | 28 |
| 28 class DummyPrerenderContents : public PrerenderContents { | 29 class DummyPrerenderContents : public PrerenderContents { |
| 29 public: | 30 public: |
| 30 DummyPrerenderContents(PrerenderManager* prerender_manager, | 31 DummyPrerenderContents(PrerenderManager* prerender_manager, |
| 31 PrerenderTracker* prerender_tracker, | 32 PrerenderTracker* prerender_tracker, |
| 32 const GURL& url, | 33 const GURL& url, |
| 33 Origin origin, | 34 Origin origin, |
| 34 FinalStatus expected_final_status) | 35 FinalStatus expected_final_status) |
| 35 : PrerenderContents(prerender_manager, prerender_tracker, | 36 : PrerenderContents(prerender_manager, prerender_tracker, |
| 36 NULL, url, content::Referrer(), | 37 NULL, url, Referrer(), origin, |
| 37 origin, PrerenderManager::kNoExperiment), | 38 PrerenderManager::kNoExperiment), |
| 38 has_started_(false), | |
| 39 expected_final_status_(expected_final_status) { | 39 expected_final_status_(expected_final_status) { |
| 40 } | 40 } |
| 41 | 41 |
| 42 virtual ~DummyPrerenderContents() { | 42 virtual ~DummyPrerenderContents() { |
| 43 EXPECT_EQ(expected_final_status_, final_status()); | 43 EXPECT_EQ(expected_final_status_, final_status()); |
| 44 } | 44 } |
| 45 | 45 |
| 46 virtual void StartPrerendering( | 46 virtual void StartPrerendering( |
| 47 int ALLOW_UNUSED creator_child_id, | 47 int ALLOW_UNUSED creator_child_id, |
| 48 const gfx::Size& ALLOW_UNUSED size, | 48 const gfx::Size& ALLOW_UNUSED size, |
| 49 content::SessionStorageNamespace* ALLOW_UNUSED | 49 content::SessionStorageNamespace* ALLOW_UNUSED |
| 50 session_storage_namespace) OVERRIDE { | 50 session_storage_namespace) OVERRIDE { |
| 51 has_started_ = true; | 51 prerendering_has_started_ = true; |
| 52 } | 52 } |
| 53 | 53 |
| 54 virtual bool GetChildId(int* child_id) const OVERRIDE { | 54 virtual bool GetChildId(int* child_id) const OVERRIDE { |
| 55 *child_id = 0; | 55 *child_id = 0; |
| 56 return true; | 56 return true; |
| 57 } | 57 } |
| 58 | 58 |
| 59 virtual bool GetRouteId(int* route_id) const OVERRIDE { | 59 virtual bool GetRouteId(int* route_id) const OVERRIDE { |
| 60 *route_id = 0; | 60 *route_id = 0; |
| 61 return true; | 61 return true; |
| 62 } | 62 } |
| 63 | 63 |
| 64 bool has_started() const { return has_started_; } | |
| 65 | |
| 66 FinalStatus expected_final_status() const { return expected_final_status_; } | 64 FinalStatus expected_final_status() const { return expected_final_status_; } |
| 67 | 65 |
| 68 bool prerendering_has_been_cancelled() const { | 66 bool prerendering_has_been_cancelled() const { |
| 69 return PrerenderContents::prerendering_has_been_cancelled(); | 67 return PrerenderContents::prerendering_has_been_cancelled(); |
| 70 } | 68 } |
| 71 | 69 |
| 72 private: | 70 private: |
| 73 bool has_started_; | |
| 74 FinalStatus expected_final_status_; | 71 FinalStatus expected_final_status_; |
| 75 }; | 72 }; |
| 76 | 73 |
| 77 class TestPrerenderManager : public PrerenderManager { | 74 class TestPrerenderManager : public PrerenderManager { |
| 78 public: | 75 public: |
| 79 explicit TestPrerenderManager(PrerenderTracker* prerender_tracker) | 76 explicit TestPrerenderManager(PrerenderTracker* prerender_tracker) |
| 80 : PrerenderManager(&profile_, prerender_tracker), | 77 : PrerenderManager(&profile_, prerender_tracker), |
| 81 time_(base::Time::Now()), | 78 time_(base::Time::Now()), |
| 82 time_ticks_(base::TimeTicks::Now()), | 79 time_ticks_(base::TimeTicks::Now()), |
| 83 next_prerender_contents_(NULL), | 80 next_prerender_contents_(NULL), |
| (...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 168 virtual base::Time GetCurrentTime() const OVERRIDE { | 165 virtual base::Time GetCurrentTime() const OVERRIDE { |
| 169 return time_; | 166 return time_; |
| 170 } | 167 } |
| 171 | 168 |
| 172 virtual base::TimeTicks GetCurrentTimeTicks() const OVERRIDE { | 169 virtual base::TimeTicks GetCurrentTimeTicks() const OVERRIDE { |
| 173 return time_ticks_; | 170 return time_ticks_; |
| 174 } | 171 } |
| 175 | 172 |
| 176 virtual PrerenderContents* CreatePrerenderContents( | 173 virtual PrerenderContents* CreatePrerenderContents( |
| 177 const GURL& url, | 174 const GURL& url, |
| 178 const content::Referrer& referrer, | 175 const Referrer& referrer, |
| 179 Origin origin, | 176 Origin origin, |
| 180 uint8 experiment_id) OVERRIDE { | 177 uint8 experiment_id) OVERRIDE { |
| 181 DCHECK(next_prerender_contents_.get()); | 178 DCHECK(next_prerender_contents_.get()); |
| 182 DCHECK_EQ(next_prerender_contents_->prerender_url(), url); | 179 DCHECK_EQ(next_prerender_contents_->prerender_url(), url); |
| 183 DCHECK_EQ(next_prerender_contents_->origin(), origin); | 180 DCHECK_EQ(next_prerender_contents_->origin(), origin); |
| 184 return next_prerender_contents_.release(); | 181 return next_prerender_contents_.release(); |
| 185 } | 182 } |
| 186 | 183 |
| 187 base::Time time_; | 184 base::Time time_; |
| 188 base::TimeTicks time_ticks_; | 185 base::TimeTicks time_ticks_; |
| (...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 272 GURL("http://www.google.com/"))); | 269 GURL("http://www.google.com/"))); |
| 273 } | 270 } |
| 274 | 271 |
| 275 TEST_F(PrerenderTest, FoundTest) { | 272 TEST_F(PrerenderTest, FoundTest) { |
| 276 GURL url("http://www.google.com/"); | 273 GURL url("http://www.google.com/"); |
| 277 DummyPrerenderContents* prerender_contents = | 274 DummyPrerenderContents* prerender_contents = |
| 278 prerender_manager()->CreateNextPrerenderContents( | 275 prerender_manager()->CreateNextPrerenderContents( |
| 279 url, | 276 url, |
| 280 FINAL_STATUS_USED); | 277 FINAL_STATUS_USED); |
| 281 EXPECT_TRUE(AddSimplePrerender(url)); | 278 EXPECT_TRUE(AddSimplePrerender(url)); |
| 282 EXPECT_TRUE(prerender_contents->has_started()); | 279 EXPECT_TRUE(prerender_contents->prerendering_has_started()); |
| 283 ASSERT_EQ(prerender_contents, prerender_manager()->GetEntry(url)); | 280 ASSERT_EQ(prerender_contents, prerender_manager()->GetEntry(url)); |
| 284 } | 281 } |
| 285 | 282 |
| 286 // Make sure that if queue a request, and a second prerender request for the | 283 // Make sure that if queue a request, and a second prerender request for the |
| 287 // same URL comes in, that we drop the second request and keep the first one. | 284 // same URL comes in, that we drop the second request and keep the first one. |
| 288 TEST_F(PrerenderTest, DropSecondRequestTest) { | 285 TEST_F(PrerenderTest, DropSecondRequestTest) { |
| 289 GURL url("http://www.google.com/"); | 286 GURL url("http://www.google.com/"); |
| 290 DummyPrerenderContents* prerender_contents = | 287 DummyPrerenderContents* prerender_contents = |
| 291 prerender_manager()->CreateNextPrerenderContents( | 288 prerender_manager()->CreateNextPrerenderContents( |
| 292 url, | 289 url, |
| 293 FINAL_STATUS_USED); | 290 FINAL_STATUS_USED); |
| 294 DummyPrerenderContents* null = NULL; | 291 DummyPrerenderContents* null = NULL; |
| 295 EXPECT_TRUE(AddSimplePrerender(url)); | 292 EXPECT_TRUE(AddSimplePrerender(url)); |
| 296 EXPECT_EQ(null, prerender_manager()->next_prerender_contents()); | 293 EXPECT_EQ(null, prerender_manager()->next_prerender_contents()); |
| 297 EXPECT_TRUE(prerender_contents->has_started()); | 294 EXPECT_TRUE(prerender_contents->prerendering_has_started()); |
| 298 | 295 |
| 299 DummyPrerenderContents* prerender_contents1 = | 296 DummyPrerenderContents* prerender_contents1 = |
| 300 prerender_manager()->CreateNextPrerenderContents( | 297 prerender_manager()->CreateNextPrerenderContents( |
| 301 url, | 298 url, |
| 302 FINAL_STATUS_MANAGER_SHUTDOWN); | 299 FINAL_STATUS_MANAGER_SHUTDOWN); |
| 303 EXPECT_TRUE(AddSimplePrerender(url)); | 300 EXPECT_TRUE(AddSimplePrerender(url)); |
| 304 EXPECT_EQ(prerender_contents1, | 301 EXPECT_EQ(prerender_contents1, |
| 305 prerender_manager()->next_prerender_contents()); | 302 prerender_manager()->next_prerender_contents()); |
| 306 EXPECT_FALSE(prerender_contents1->has_started()); | 303 EXPECT_FALSE(prerender_contents1->prerendering_has_started()); |
| 307 | 304 |
| 308 ASSERT_EQ(prerender_contents, prerender_manager()->GetEntry(url)); | 305 ASSERT_EQ(prerender_contents, prerender_manager()->GetEntry(url)); |
| 309 } | 306 } |
| 310 | 307 |
| 311 // Ensure that we expire a prerendered page after the max. permitted time. | 308 // Ensure that we expire a prerendered page after the max. permitted time. |
| 312 TEST_F(PrerenderTest, ExpireTest) { | 309 TEST_F(PrerenderTest, ExpireTest) { |
| 313 GURL url("http://www.google.com/"); | 310 GURL url("http://www.google.com/"); |
| 314 DummyPrerenderContents* prerender_contents = | 311 DummyPrerenderContents* prerender_contents = |
| 315 prerender_manager()->CreateNextPrerenderContents( | 312 prerender_manager()->CreateNextPrerenderContents( |
| 316 url, | 313 url, |
| 317 FINAL_STATUS_TIMED_OUT); | 314 FINAL_STATUS_TIMED_OUT); |
| 318 DummyPrerenderContents* null = NULL; | 315 DummyPrerenderContents* null = NULL; |
| 319 EXPECT_TRUE(AddSimplePrerender(url)); | 316 EXPECT_TRUE(AddSimplePrerender(url)); |
| 320 EXPECT_EQ(null, prerender_manager()->next_prerender_contents()); | 317 EXPECT_EQ(null, prerender_manager()->next_prerender_contents()); |
| 321 EXPECT_TRUE(prerender_contents->has_started()); | 318 EXPECT_TRUE(prerender_contents->prerendering_has_started()); |
| 322 prerender_manager()->AdvanceTime(prerender_manager()->GetMaxAge() + | 319 prerender_manager()->AdvanceTime(prerender_manager()->GetMaxAge() + |
| 323 base::TimeDelta::FromSeconds(1)); | 320 base::TimeDelta::FromSeconds(1)); |
| 324 ASSERT_EQ(null, prerender_manager()->GetEntry(url)); | 321 ASSERT_EQ(null, prerender_manager()->GetEntry(url)); |
| 325 } | 322 } |
| 326 | 323 |
| 327 // LRU Test. Make sure that if we prerender more than one request, that | 324 // LRU Test. Make sure that if we prerender more than one request, that |
| 328 // the oldest one will be dropped. | 325 // the oldest one will be dropped. |
| 329 TEST_F(PrerenderTest, DropOldestRequestTest) { | 326 TEST_F(PrerenderTest, DropOldestRequestTest) { |
| 330 GURL url("http://www.google.com/"); | 327 GURL url("http://www.google.com/"); |
| 331 DummyPrerenderContents* prerender_contents = | 328 DummyPrerenderContents* prerender_contents = |
| 332 prerender_manager()->CreateNextPrerenderContents( | 329 prerender_manager()->CreateNextPrerenderContents( |
| 333 url, | 330 url, |
| 334 FINAL_STATUS_EVICTED); | 331 FINAL_STATUS_EVICTED); |
| 335 DummyPrerenderContents* null = NULL; | 332 DummyPrerenderContents* null = NULL; |
| 336 EXPECT_TRUE(AddSimplePrerender(url)); | 333 EXPECT_TRUE(AddSimplePrerender(url)); |
| 337 EXPECT_EQ(null, prerender_manager()->next_prerender_contents()); | 334 EXPECT_EQ(null, prerender_manager()->next_prerender_contents()); |
| 338 EXPECT_TRUE(prerender_contents->has_started()); | 335 EXPECT_TRUE(prerender_contents->prerendering_has_started()); |
| 339 | 336 |
| 340 GURL url1("http://news.google.com/"); | 337 GURL url1("http://news.google.com/"); |
| 341 DummyPrerenderContents* prerender_contents1 = | 338 DummyPrerenderContents* prerender_contents1 = |
| 342 prerender_manager()->CreateNextPrerenderContents( | 339 prerender_manager()->CreateNextPrerenderContents( |
| 343 url1, | 340 url1, |
| 344 FINAL_STATUS_USED); | 341 FINAL_STATUS_USED); |
| 345 EXPECT_TRUE(AddSimplePrerender(url1)); | 342 EXPECT_TRUE(AddSimplePrerender(url1)); |
| 346 EXPECT_EQ(null, prerender_manager()->next_prerender_contents()); | 343 EXPECT_EQ(null, prerender_manager()->next_prerender_contents()); |
| 347 EXPECT_TRUE(prerender_contents1->has_started()); | 344 EXPECT_TRUE(prerender_contents1->prerendering_has_started()); |
| 348 | 345 |
| 349 ASSERT_EQ(null, prerender_manager()->GetEntry(url)); | 346 ASSERT_EQ(null, prerender_manager()->GetEntry(url)); |
| 350 ASSERT_EQ(prerender_contents1, prerender_manager()->GetEntry(url1)); | 347 ASSERT_EQ(prerender_contents1, prerender_manager()->GetEntry(url1)); |
| 351 } | 348 } |
| 352 | 349 |
| 353 // Two element prerender test. Ensure that the LRU operates correctly if we | 350 // Two element prerender test. Ensure that the LRU operates correctly if we |
| 354 // permit 2 elements to be kept prerendered. | 351 // permit 2 elements to be kept prerendered. |
| 355 TEST_F(PrerenderTest, TwoElementPrerenderTest) { | 352 TEST_F(PrerenderTest, TwoElementPrerenderTest) { |
| 356 prerender_manager()->mutable_config().max_elements = 2; | 353 prerender_manager()->mutable_config().max_elements = 2; |
| 357 GURL url("http://www.google.com/"); | 354 GURL url("http://www.google.com/"); |
| 358 DummyPrerenderContents* prerender_contents = | 355 DummyPrerenderContents* prerender_contents = |
| 359 prerender_manager()->CreateNextPrerenderContents( | 356 prerender_manager()->CreateNextPrerenderContents( |
| 360 url, | 357 url, |
| 361 FINAL_STATUS_EVICTED); | 358 FINAL_STATUS_EVICTED); |
| 362 DummyPrerenderContents* null = NULL; | 359 DummyPrerenderContents* null = NULL; |
| 363 EXPECT_TRUE(AddSimplePrerender(url)); | 360 EXPECT_TRUE(AddSimplePrerender(url)); |
| 364 EXPECT_EQ(null, prerender_manager()->next_prerender_contents()); | 361 EXPECT_EQ(null, prerender_manager()->next_prerender_contents()); |
| 365 EXPECT_TRUE(prerender_contents->has_started()); | 362 EXPECT_TRUE(prerender_contents->prerendering_has_started()); |
| 366 | 363 |
| 367 GURL url1("http://news.google.com/"); | 364 GURL url1("http://news.google.com/"); |
| 368 DummyPrerenderContents* prerender_contents1 = | 365 DummyPrerenderContents* prerender_contents1 = |
| 369 prerender_manager()->CreateNextPrerenderContents( | 366 prerender_manager()->CreateNextPrerenderContents( |
| 370 url1, | 367 url1, |
| 371 FINAL_STATUS_USED); | 368 FINAL_STATUS_USED); |
| 372 EXPECT_TRUE(AddSimplePrerender(url1)); | 369 EXPECT_TRUE(AddSimplePrerender(url1)); |
| 373 EXPECT_EQ(null, prerender_manager()->next_prerender_contents()); | 370 EXPECT_EQ(null, prerender_manager()->next_prerender_contents()); |
| 374 EXPECT_TRUE(prerender_contents1->has_started()); | 371 EXPECT_TRUE(prerender_contents1->prerendering_has_started()); |
| 375 | 372 |
| 376 GURL url2("http://images.google.com/"); | 373 GURL url2("http://images.google.com/"); |
| 377 DummyPrerenderContents* prerender_contents2 = | 374 DummyPrerenderContents* prerender_contents2 = |
| 378 prerender_manager()->CreateNextPrerenderContents( | 375 prerender_manager()->CreateNextPrerenderContents( |
| 379 url2, | 376 url2, |
| 380 FINAL_STATUS_USED); | 377 FINAL_STATUS_USED); |
| 381 EXPECT_TRUE(AddSimplePrerender(url2)); | 378 EXPECT_TRUE(AddSimplePrerender(url2)); |
| 382 EXPECT_EQ(null, prerender_manager()->next_prerender_contents()); | 379 EXPECT_EQ(null, prerender_manager()->next_prerender_contents()); |
| 383 EXPECT_TRUE(prerender_contents2->has_started()); | 380 EXPECT_TRUE(prerender_contents2->prerendering_has_started()); |
| 384 | 381 |
| 385 ASSERT_EQ(null, prerender_manager()->GetEntry(url)); | 382 ASSERT_EQ(null, prerender_manager()->GetEntry(url)); |
| 386 ASSERT_EQ(prerender_contents1, prerender_manager()->GetEntry(url1)); | 383 ASSERT_EQ(prerender_contents1, prerender_manager()->GetEntry(url1)); |
| 387 ASSERT_EQ(prerender_contents2, prerender_manager()->GetEntry(url2)); | 384 ASSERT_EQ(prerender_contents2, prerender_manager()->GetEntry(url2)); |
| 388 } | 385 } |
| 389 | 386 |
| 390 TEST_F(PrerenderTest, AliasURLTest) { | 387 TEST_F(PrerenderTest, AliasURLTest) { |
| 391 GURL url("http://www.google.com/"); | 388 GURL url("http://www.google.com/"); |
| 392 GURL alias_url1("http://www.google.com/index.html"); | 389 GURL alias_url1("http://www.google.com/index.html"); |
| 393 GURL alias_url2("http://google.com/"); | 390 GURL alias_url2("http://google.com/"); |
| (...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 425 // Ensure that we ignore prerender requests within the rate limit. | 422 // Ensure that we ignore prerender requests within the rate limit. |
| 426 TEST_F(PrerenderTest, RateLimitInWindowTest) { | 423 TEST_F(PrerenderTest, RateLimitInWindowTest) { |
| 427 GURL url("http://www.google.com/"); | 424 GURL url("http://www.google.com/"); |
| 428 DummyPrerenderContents* prerender_contents = | 425 DummyPrerenderContents* prerender_contents = |
| 429 prerender_manager()->CreateNextPrerenderContents( | 426 prerender_manager()->CreateNextPrerenderContents( |
| 430 url, | 427 url, |
| 431 FINAL_STATUS_MANAGER_SHUTDOWN); | 428 FINAL_STATUS_MANAGER_SHUTDOWN); |
| 432 DummyPrerenderContents* null = NULL; | 429 DummyPrerenderContents* null = NULL; |
| 433 EXPECT_TRUE(AddSimplePrerender(url)); | 430 EXPECT_TRUE(AddSimplePrerender(url)); |
| 434 EXPECT_EQ(null, prerender_manager()->next_prerender_contents()); | 431 EXPECT_EQ(null, prerender_manager()->next_prerender_contents()); |
| 435 EXPECT_TRUE(prerender_contents->has_started()); | 432 EXPECT_TRUE(prerender_contents->prerendering_has_started()); |
| 436 | 433 |
| 437 prerender_manager()->set_rate_limit_enabled(true); | 434 prerender_manager()->set_rate_limit_enabled(true); |
| 438 prerender_manager()->AdvanceTimeTicks(base::TimeDelta::FromMilliseconds(1)); | 435 prerender_manager()->AdvanceTimeTicks(base::TimeDelta::FromMilliseconds(1)); |
| 439 | 436 |
| 440 GURL url1("http://news.google.com/"); | 437 GURL url1("http://news.google.com/"); |
| 441 prerender_manager()->CreateNextPrerenderContents( | 438 prerender_manager()->CreateNextPrerenderContents( |
| 442 url, | 439 url, |
| 443 FINAL_STATUS_MANAGER_SHUTDOWN); | 440 FINAL_STATUS_MANAGER_SHUTDOWN); |
| 444 EXPECT_FALSE(AddSimplePrerender(url1)); | 441 EXPECT_FALSE(AddSimplePrerender(url1)); |
| 445 prerender_manager()->set_rate_limit_enabled(false); | 442 prerender_manager()->set_rate_limit_enabled(false); |
| 446 } | 443 } |
| 447 | 444 |
| 448 // Ensure that we don't ignore prerender requests outside the rate limit. | 445 // Ensure that we don't ignore prerender requests outside the rate limit. |
| 449 TEST_F(PrerenderTest, RateLimitOutsideWindowTest) { | 446 TEST_F(PrerenderTest, RateLimitOutsideWindowTest) { |
| 450 GURL url("http://www.google.com/"); | 447 GURL url("http://www.google.com/"); |
| 451 DummyPrerenderContents* prerender_contents = | 448 DummyPrerenderContents* prerender_contents = |
| 452 prerender_manager()->CreateNextPrerenderContents( | 449 prerender_manager()->CreateNextPrerenderContents( |
| 453 url, | 450 url, |
| 454 FINAL_STATUS_EVICTED); | 451 FINAL_STATUS_EVICTED); |
| 455 DummyPrerenderContents* null = NULL; | 452 DummyPrerenderContents* null = NULL; |
| 456 EXPECT_TRUE(AddSimplePrerender(url)); | 453 EXPECT_TRUE(AddSimplePrerender(url)); |
| 457 EXPECT_EQ(null, prerender_manager()->next_prerender_contents()); | 454 EXPECT_EQ(null, prerender_manager()->next_prerender_contents()); |
| 458 EXPECT_TRUE(prerender_contents->has_started()); | 455 EXPECT_TRUE(prerender_contents->prerendering_has_started()); |
| 459 | 456 |
| 460 prerender_manager()->set_rate_limit_enabled(true); | 457 prerender_manager()->set_rate_limit_enabled(true); |
| 461 prerender_manager()->AdvanceTimeTicks( | 458 prerender_manager()->AdvanceTimeTicks( |
| 462 base::TimeDelta::FromMilliseconds(2000)); | 459 base::TimeDelta::FromMilliseconds(2000)); |
| 463 | 460 |
| 464 GURL url1("http://news.google.com/"); | 461 GURL url1("http://news.google.com/"); |
| 465 DummyPrerenderContents* rate_limit_prerender_contents = | 462 DummyPrerenderContents* rate_limit_prerender_contents = |
| 466 prerender_manager()->CreateNextPrerenderContents( | 463 prerender_manager()->CreateNextPrerenderContents( |
| 467 url1, | 464 url1, |
| 468 FINAL_STATUS_MANAGER_SHUTDOWN); | 465 FINAL_STATUS_MANAGER_SHUTDOWN); |
| 469 EXPECT_TRUE(AddSimplePrerender(url1)); | 466 EXPECT_TRUE(AddSimplePrerender(url1)); |
| 470 EXPECT_EQ(null, prerender_manager()->next_prerender_contents()); | 467 EXPECT_EQ(null, prerender_manager()->next_prerender_contents()); |
| 471 EXPECT_TRUE(rate_limit_prerender_contents->has_started()); | 468 EXPECT_TRUE(rate_limit_prerender_contents->prerendering_has_started()); |
| 472 prerender_manager()->set_rate_limit_enabled(false); | 469 prerender_manager()->set_rate_limit_enabled(false); |
| 473 } | 470 } |
| 474 | 471 |
| 475 TEST_F(PrerenderTest, PendingPrerenderTest) { | 472 TEST_F(PrerenderTest, PendingPrerenderTest) { |
| 476 GURL url("http://www.google.com/"); | 473 GURL url("http://www.google.com/"); |
| 477 DummyPrerenderContents* prerender_contents = | 474 DummyPrerenderContents* prerender_contents = |
| 478 prerender_manager()->CreateNextPrerenderContents( | 475 prerender_manager()->CreateNextPrerenderContents( |
| 479 url, | 476 url, |
| 480 FINAL_STATUS_USED); | 477 FINAL_STATUS_USED); |
| 481 EXPECT_TRUE(AddSimplePrerender(url)); | 478 EXPECT_TRUE(AddSimplePrerender(url)); |
| 482 | 479 |
| 483 int child_id; | 480 int child_id; |
| 484 int route_id; | 481 int route_id; |
| 485 ASSERT_TRUE(prerender_contents->GetChildId(&child_id)); | 482 ASSERT_TRUE(prerender_contents->GetChildId(&child_id)); |
| 486 ASSERT_TRUE(prerender_contents->GetRouteId(&route_id)); | 483 ASSERT_TRUE(prerender_contents->GetRouteId(&route_id)); |
| 487 | 484 |
| 488 GURL pending_url("http://news.google.com/"); | 485 GURL pending_url("http://news.google.com/"); |
| 489 | 486 |
| 490 EXPECT_TRUE(prerender_manager()->AddPrerenderFromLinkRelPrerender( | 487 EXPECT_TRUE(prerender_manager()->AddPrerenderFromLinkRelPrerender( |
| 491 child_id, route_id, | 488 child_id, route_id, |
| 492 pending_url, content::Referrer(url, WebKit::WebReferrerPolicyDefault), | 489 pending_url, Referrer(url, WebKit::WebReferrerPolicyDefault), |
| 493 gfx::Size())); | 490 gfx::Size())); |
| 494 | 491 |
| 495 EXPECT_TRUE(prerender_manager()->IsPendingEntry(pending_url)); | 492 EXPECT_TRUE(prerender_manager()->IsPendingEntry(pending_url)); |
| 496 EXPECT_TRUE(prerender_contents->has_started()); | 493 EXPECT_TRUE(prerender_contents->prerendering_has_started()); |
| 497 ASSERT_EQ(prerender_contents, prerender_manager()->GetEntry(url)); | 494 ASSERT_EQ(prerender_contents, prerender_manager()->GetEntry(url)); |
| 498 } | 495 } |
| 499 | 496 |
| 500 // Tests that a PrerenderManager created for a browser session in the control | 497 // Tests that a PrerenderManager created for a browser session in the control |
| 501 // group works as expected. | 498 // group works as expected. |
| 502 TEST_F(PrerenderTest, ControlGroup) { | 499 TEST_F(PrerenderTest, ControlGroup) { |
| 503 RestorePrerenderMode restore_prerender_mode; | 500 RestorePrerenderMode restore_prerender_mode; |
| 504 PrerenderManager::SetMode( | 501 PrerenderManager::SetMode( |
| 505 PrerenderManager::PRERENDER_MODE_EXPERIMENT_CONTROL_GROUP); | 502 PrerenderManager::PRERENDER_MODE_EXPERIMENT_CONTROL_GROUP); |
| 506 GURL url("http://www.google.com/"); | 503 GURL url("http://www.google.com/"); |
| 507 DummyPrerenderContents* prerender_contents = | 504 DummyPrerenderContents* prerender_contents = |
| 508 prerender_manager()->CreateNextPrerenderContents( | 505 prerender_manager()->CreateNextPrerenderContents( |
| 509 url, | 506 url, |
| 510 FINAL_STATUS_MANAGER_SHUTDOWN); | 507 FINAL_STATUS_MANAGER_SHUTDOWN); |
| 511 EXPECT_TRUE(AddSimplePrerender(url)); | 508 EXPECT_TRUE(AddSimplePrerender(url)); |
| 512 EXPECT_FALSE(prerender_contents->has_started()); | 509 EXPECT_FALSE(prerender_contents->prerendering_has_started()); |
| 513 } | 510 } |
| 514 | 511 |
| 515 // Tests that prerendering is cancelled when the source render view does not | 512 // Tests that prerendering is cancelled when the source render view does not |
| 516 // exist. On failure, the DCHECK in CreatePrerenderContents() above should be | 513 // exist. On failure, the DCHECK in CreatePrerenderContents() above should be |
| 517 // triggered. | 514 // triggered. |
| 518 TEST_F(PrerenderTest, SourceRenderViewClosed) { | 515 TEST_F(PrerenderTest, SourceRenderViewClosed) { |
| 519 GURL url("http://www.google.com/"); | 516 GURL url("http://www.google.com/"); |
| 520 prerender_manager()->CreateNextPrerenderContents( | 517 prerender_manager()->CreateNextPrerenderContents( |
| 521 url, | 518 url, |
| 522 FINAL_STATUS_MANAGER_SHUTDOWN); | 519 FINAL_STATUS_MANAGER_SHUTDOWN); |
| 523 EXPECT_FALSE(prerender_link_manager()->OnAddPrerender( | 520 EXPECT_FALSE(prerender_link_manager()->OnAddPrerender( |
| 524 100, GetNextPrerenderID(), url, | 521 100, GetNextPrerenderID(), url, |
| 525 content::Referrer(), gfx::Size(), 200)); | 522 Referrer(), gfx::Size(), 200)); |
| 526 } | 523 } |
| 527 | 524 |
| 528 // Tests that the prerender manager ignores fragment references when matching | 525 // Tests that the prerender manager ignores fragment references when matching |
| 529 // prerender URLs in the case the fragment is not in the prerender URL. | 526 // prerender URLs in the case the fragment is not in the prerender URL. |
| 530 TEST_F(PrerenderTest, PageMatchesFragmentTest) { | 527 TEST_F(PrerenderTest, PageMatchesFragmentTest) { |
| 531 GURL url("http://www.google.com/"); | 528 GURL url("http://www.google.com/"); |
| 532 GURL fragment_url("http://www.google.com/#test"); | 529 GURL fragment_url("http://www.google.com/#test"); |
| 533 | 530 |
| 534 DummyPrerenderContents* prerender_contents = | 531 DummyPrerenderContents* prerender_contents = |
| 535 prerender_manager()->CreateNextPrerenderContents(url, | 532 prerender_manager()->CreateNextPrerenderContents(url, |
| 536 FINAL_STATUS_USED); | 533 FINAL_STATUS_USED); |
| 537 EXPECT_TRUE(AddSimplePrerender(url)); | 534 EXPECT_TRUE(AddSimplePrerender(url)); |
| 538 EXPECT_TRUE(prerender_contents->has_started()); | 535 EXPECT_TRUE(prerender_contents->prerendering_has_started()); |
| 539 ASSERT_EQ(prerender_contents, prerender_manager()->GetEntry(fragment_url)); | 536 ASSERT_EQ(prerender_contents, prerender_manager()->GetEntry(fragment_url)); |
| 540 } | 537 } |
| 541 | 538 |
| 542 // Tests that the prerender manager ignores fragment references when matching | 539 // Tests that the prerender manager ignores fragment references when matching |
| 543 // prerender URLs in the case the fragment is in the prerender URL. | 540 // prerender URLs in the case the fragment is in the prerender URL. |
| 544 // TODO(gavinp): Re-enable this in the Prerender API once we're officially | 541 // TODO(gavinp): Re-enable this in the Prerender API once we're officially |
| 545 // fragment clean. | 542 // fragment clean. |
| 546 TEST_F(PrerenderTest, DISABLED_FragmentMatchesPageTest) { | 543 TEST_F(PrerenderTest, DISABLED_FragmentMatchesPageTest) { |
| 547 GURL url("http://www.google.com/"); | 544 GURL url("http://www.google.com/"); |
| 548 GURL fragment_url("http://www.google.com/#test"); | 545 GURL fragment_url("http://www.google.com/#test"); |
| 549 | 546 |
| 550 DummyPrerenderContents* prerender_contents = | 547 DummyPrerenderContents* prerender_contents = |
| 551 prerender_manager()->CreateNextPrerenderContents(fragment_url, | 548 prerender_manager()->CreateNextPrerenderContents(fragment_url, |
| 552 FINAL_STATUS_USED); | 549 FINAL_STATUS_USED); |
| 553 EXPECT_TRUE(AddSimplePrerender(fragment_url)); | 550 EXPECT_TRUE(AddSimplePrerender(fragment_url)); |
| 554 EXPECT_TRUE(prerender_contents->has_started()); | 551 EXPECT_TRUE(prerender_contents->prerendering_has_started()); |
| 555 ASSERT_EQ(prerender_contents, prerender_manager()->GetEntry(url)); | 552 ASSERT_EQ(prerender_contents, prerender_manager()->GetEntry(url)); |
| 556 } | 553 } |
| 557 | 554 |
| 558 // Tests that the prerender manager ignores fragment references when matching | 555 // Tests that the prerender manager ignores fragment references when matching |
| 559 // prerender URLs in the case the fragment is in both URLs. | 556 // prerender URLs in the case the fragment is in both URLs. |
| 560 // TODO(gavinp): Re-enable this in the Prerender API once we're officially | 557 // TODO(gavinp): Re-enable this in the Prerender API once we're officially |
| 561 // fragment clean. | 558 // fragment clean. |
| 562 TEST_F(PrerenderTest, DISABLED_FragmentMatchesFragmentTest) { | 559 TEST_F(PrerenderTest, DISABLED_FragmentMatchesFragmentTest) { |
| 563 GURL fragment_url("http://www.google.com/#test"); | 560 GURL fragment_url("http://www.google.com/#test"); |
| 564 GURL other_fragment_url("http://www.google.com/#other_test"); | 561 GURL other_fragment_url("http://www.google.com/#other_test"); |
| 565 | 562 |
| 566 DummyPrerenderContents* prerender_contents = | 563 DummyPrerenderContents* prerender_contents = |
| 567 prerender_manager()->CreateNextPrerenderContents(fragment_url, | 564 prerender_manager()->CreateNextPrerenderContents(fragment_url, |
| 568 FINAL_STATUS_USED); | 565 FINAL_STATUS_USED); |
| 569 EXPECT_TRUE(AddSimplePrerender(fragment_url)); | 566 EXPECT_TRUE(AddSimplePrerender(fragment_url)); |
| 570 EXPECT_TRUE(prerender_contents->has_started()); | 567 EXPECT_TRUE(prerender_contents->prerendering_has_started()); |
| 571 ASSERT_EQ(prerender_contents, | 568 ASSERT_EQ(prerender_contents, |
| 572 prerender_manager()->GetEntry(other_fragment_url)); | 569 prerender_manager()->GetEntry(other_fragment_url)); |
| 573 } | 570 } |
| 574 | 571 |
| 575 // Make sure that clearing works as expected. | 572 // Make sure that clearing works as expected. |
| 576 TEST_F(PrerenderTest, ClearTest) { | 573 TEST_F(PrerenderTest, ClearTest) { |
| 577 GURL url("http://www.google.com/"); | 574 GURL url("http://www.google.com/"); |
| 578 DummyPrerenderContents* prerender_contents = | 575 DummyPrerenderContents* prerender_contents = |
| 579 prerender_manager()->CreateNextPrerenderContents( | 576 prerender_manager()->CreateNextPrerenderContents( |
| 580 url, | 577 url, |
| 581 FINAL_STATUS_CACHE_OR_HISTORY_CLEARED); | 578 FINAL_STATUS_CACHE_OR_HISTORY_CLEARED); |
| 582 EXPECT_TRUE(AddSimplePrerender(url)); | 579 EXPECT_TRUE(AddSimplePrerender(url)); |
| 583 EXPECT_TRUE(prerender_contents->has_started()); | 580 EXPECT_TRUE(prerender_contents->prerendering_has_started()); |
| 584 prerender_manager()->ClearData(PrerenderManager::CLEAR_PRERENDER_CONTENTS); | 581 prerender_manager()->ClearData(PrerenderManager::CLEAR_PRERENDER_CONTENTS); |
| 585 DummyPrerenderContents* null = NULL; | 582 DummyPrerenderContents* null = NULL; |
| 586 EXPECT_EQ(null, prerender_manager()->FindEntry(url)); | 583 EXPECT_EQ(null, prerender_manager()->FindEntry(url)); |
| 587 } | 584 } |
| 588 | 585 |
| 589 // Make sure canceling works as expected. | 586 // Make sure canceling works as expected. |
| 590 TEST_F(PrerenderTest, CancelAllTest) { | 587 TEST_F(PrerenderTest, CancelAllTest) { |
| 591 GURL url("http://www.google.com/"); | 588 GURL url("http://www.google.com/"); |
| 592 DummyPrerenderContents* prerender_contents = | 589 DummyPrerenderContents* prerender_contents = |
| 593 prerender_manager()->CreateNextPrerenderContents( | 590 prerender_manager()->CreateNextPrerenderContents( |
| 594 url, FINAL_STATUS_CANCELLED); | 591 url, FINAL_STATUS_CANCELLED); |
| 595 EXPECT_TRUE(AddSimplePrerender(url)); | 592 EXPECT_TRUE(AddSimplePrerender(url)); |
| 596 EXPECT_TRUE(prerender_contents->has_started()); | 593 EXPECT_TRUE(prerender_contents->prerendering_has_started()); |
| 597 prerender_manager()->CancelAllPrerenders(); | 594 prerender_manager()->CancelAllPrerenders(); |
| 598 const DummyPrerenderContents* null = NULL; | 595 const DummyPrerenderContents* null = NULL; |
| 599 EXPECT_EQ(null, prerender_manager()->FindEntry(url)); | 596 EXPECT_EQ(null, prerender_manager()->FindEntry(url)); |
| 600 } | 597 } |
| 601 | 598 |
| 602 // Make sure canceling for omnibox works as expected. | 599 // Make sure canceling for omnibox works as expected. |
| 603 TEST_F(PrerenderTest, CancelOmniboxRemovesOmniboxTest) { | 600 TEST_F(PrerenderTest, CancelOmniboxRemovesOmniboxTest) { |
| 604 // Check canceling removes the Omnibox url. | 601 // Check canceling removes the Omnibox url. |
| 605 GURL url("http://www.google.com/"); | 602 GURL url("http://www.google.com/"); |
| 606 DummyPrerenderContents* prerender_contents = | 603 DummyPrerenderContents* prerender_contents = |
| 607 prerender_manager()->CreateNextPrerenderContents( | 604 prerender_manager()->CreateNextPrerenderContents( |
| 608 url, ORIGIN_OMNIBOX, FINAL_STATUS_CANCELLED); | 605 url, ORIGIN_OMNIBOX, FINAL_STATUS_CANCELLED); |
| 609 EXPECT_TRUE(prerender_manager()->AddPrerenderFromOmnibox(url, NULL)); | 606 EXPECT_TRUE(prerender_manager()->AddPrerenderFromOmnibox(url, NULL)); |
| 610 EXPECT_TRUE(prerender_contents->has_started()); | 607 EXPECT_TRUE(prerender_contents->prerendering_has_started()); |
| 611 prerender_manager()->CancelOmniboxPrerenders(); | 608 prerender_manager()->CancelOmniboxPrerenders(); |
| 612 const DummyPrerenderContents* null = NULL; | 609 const DummyPrerenderContents* null = NULL; |
| 613 EXPECT_EQ(null, prerender_manager()->FindEntry(url)); | 610 EXPECT_EQ(null, prerender_manager()->FindEntry(url)); |
| 614 } | 611 } |
| 615 | 612 |
| 616 TEST_F(PrerenderTest, CancelOmniboxDoesNotRemoveLinkTest) { | 613 TEST_F(PrerenderTest, CancelOmniboxDoesNotRemoveLinkTest) { |
| 617 GURL url("http://www.google.com/"); | 614 GURL url("http://www.google.com/"); |
| 618 DummyPrerenderContents* prerender_contents = | 615 DummyPrerenderContents* prerender_contents = |
| 619 prerender_manager()->CreateNextPrerenderContents( | 616 prerender_manager()->CreateNextPrerenderContents( |
| 620 url, ORIGIN_LINK_REL_PRERENDER, FINAL_STATUS_MANAGER_SHUTDOWN); | 617 url, ORIGIN_LINK_REL_PRERENDER, FINAL_STATUS_MANAGER_SHUTDOWN); |
| 621 EXPECT_TRUE(AddSimplePrerender(url)); | 618 EXPECT_TRUE(AddSimplePrerender(url)); |
| 622 EXPECT_TRUE(prerender_contents->has_started()); | 619 EXPECT_TRUE(prerender_contents->prerendering_has_started()); |
| 623 prerender_manager()->CancelOmniboxPrerenders(); | 620 prerender_manager()->CancelOmniboxPrerenders(); |
| 624 const DummyPrerenderContents* null = NULL; | 621 const DummyPrerenderContents* null = NULL; |
| 625 EXPECT_NE(null, prerender_manager()->FindEntry(url)); | 622 EXPECT_NE(null, prerender_manager()->FindEntry(url)); |
| 626 } | 623 } |
| 627 | 624 |
| 628 TEST_F(PrerenderTest, OmniboxNotAllowedWhenDisabled) { | 625 TEST_F(PrerenderTest, OmniboxNotAllowedWhenDisabled) { |
| 629 prerender_manager()->set_enabled(false); | 626 prerender_manager()->set_enabled(false); |
| 630 EXPECT_FALSE(prerender_manager()->AddPrerenderFromOmnibox( | 627 EXPECT_FALSE(prerender_manager()->AddPrerenderFromOmnibox( |
| 631 GURL("http://www.example.com"), NULL)); | 628 GURL("http://www.example.com"), NULL)); |
| 632 } | 629 } |
| 633 | 630 |
| 634 TEST_F(PrerenderTest, LinkRelNotAllowedWhenDisabled) { | 631 TEST_F(PrerenderTest, LinkRelNotAllowedWhenDisabled) { |
| 635 prerender_manager()->set_enabled(false); | 632 prerender_manager()->set_enabled(false); |
| 636 EXPECT_FALSE(AddSimplePrerender( | 633 EXPECT_FALSE(AddSimplePrerender( |
| 637 GURL("http://www.example.com"))); | 634 GURL("http://www.example.com"))); |
| 638 } | 635 } |
| 639 | 636 |
| 640 TEST_F(PrerenderTest, LinkManagerCancel) { | 637 TEST_F(PrerenderTest, LinkManagerCancel) { |
| 641 EXPECT_TRUE(IsEmptyPrerenderLinkManager()); | 638 EXPECT_TRUE(IsEmptyPrerenderLinkManager()); |
| 642 GURL url("http://www.myexample.com"); | 639 GURL url("http://www.myexample.com"); |
| 643 DummyPrerenderContents* prerender_contents = | 640 DummyPrerenderContents* prerender_contents = |
| 644 prerender_manager()->CreateNextPrerenderContents( | 641 prerender_manager()->CreateNextPrerenderContents( |
| 645 url, FINAL_STATUS_CANCELLED); | 642 url, FINAL_STATUS_CANCELLED); |
| 646 | 643 |
| 647 EXPECT_TRUE(AddSimplePrerender(url)); | 644 EXPECT_TRUE(AddSimplePrerender(url)); |
| 648 | 645 |
| 649 EXPECT_TRUE(prerender_contents->has_started()); | 646 EXPECT_TRUE(prerender_contents->prerendering_has_started()); |
| 650 EXPECT_FALSE(prerender_contents->prerendering_has_been_cancelled()); | 647 EXPECT_FALSE(prerender_contents->prerendering_has_been_cancelled()); |
| 651 ASSERT_EQ(prerender_contents, prerender_manager()->FindEntry(url)); | 648 ASSERT_EQ(prerender_contents, prerender_manager()->FindEntry(url)); |
| 652 EXPECT_FALSE(IsEmptyPrerenderLinkManager()); | 649 EXPECT_FALSE(IsEmptyPrerenderLinkManager()); |
| 653 prerender_link_manager()->OnCancelPrerender(kDefaultChildId, | 650 prerender_link_manager()->OnCancelPrerender(kDefaultChildId, |
| 654 last_prerender_id()); | 651 last_prerender_id()); |
| 655 | 652 |
| 656 EXPECT_TRUE(prerender_contents->prerendering_has_been_cancelled()); | 653 EXPECT_TRUE(prerender_contents->prerendering_has_been_cancelled()); |
| 657 DummyPrerenderContents* null = NULL; | 654 DummyPrerenderContents* null = NULL; |
| 658 ASSERT_EQ(null, prerender_manager()->GetEntry(url)); | 655 ASSERT_EQ(null, prerender_manager()->GetEntry(url)); |
| 659 EXPECT_TRUE(IsEmptyPrerenderLinkManager()); | 656 EXPECT_TRUE(IsEmptyPrerenderLinkManager()); |
| 660 } | 657 } |
| 661 | 658 |
| 662 TEST_F(PrerenderTest, LinkManagerCancelThenAbandon) { | 659 TEST_F(PrerenderTest, LinkManagerCancelThenAbandon) { |
| 663 EXPECT_TRUE(IsEmptyPrerenderLinkManager()); | 660 EXPECT_TRUE(IsEmptyPrerenderLinkManager()); |
| 664 GURL url("http://www.myexample.com"); | 661 GURL url("http://www.myexample.com"); |
| 665 DummyPrerenderContents* prerender_contents = | 662 DummyPrerenderContents* prerender_contents = |
| 666 prerender_manager()->CreateNextPrerenderContents( | 663 prerender_manager()->CreateNextPrerenderContents( |
| 667 url, FINAL_STATUS_CANCELLED); | 664 url, FINAL_STATUS_CANCELLED); |
| 668 | 665 |
| 669 EXPECT_TRUE(AddSimplePrerender(url)); | 666 EXPECT_TRUE(AddSimplePrerender(url)); |
| 670 | 667 |
| 671 EXPECT_TRUE(prerender_contents->has_started()); | 668 EXPECT_TRUE(prerender_contents->prerendering_has_started()); |
| 672 EXPECT_FALSE(prerender_contents->prerendering_has_been_cancelled()); | 669 EXPECT_FALSE(prerender_contents->prerendering_has_been_cancelled()); |
| 673 ASSERT_EQ(prerender_contents, prerender_manager()->FindEntry(url)); | 670 ASSERT_EQ(prerender_contents, prerender_manager()->FindEntry(url)); |
| 674 EXPECT_FALSE(IsEmptyPrerenderLinkManager()); | 671 EXPECT_FALSE(IsEmptyPrerenderLinkManager()); |
| 675 prerender_link_manager()->OnCancelPrerender(kDefaultChildId, | 672 prerender_link_manager()->OnCancelPrerender(kDefaultChildId, |
| 676 last_prerender_id()); | 673 last_prerender_id()); |
| 677 | 674 |
| 678 EXPECT_TRUE(IsEmptyPrerenderLinkManager()); | 675 EXPECT_TRUE(IsEmptyPrerenderLinkManager()); |
| 679 EXPECT_TRUE(prerender_contents->prerendering_has_been_cancelled()); | 676 EXPECT_TRUE(prerender_contents->prerendering_has_been_cancelled()); |
| 680 prerender_link_manager()->OnAbandonPrerender(kDefaultChildId, | 677 prerender_link_manager()->OnAbandonPrerender(kDefaultChildId, |
| 681 last_prerender_id()); | 678 last_prerender_id()); |
| 682 | 679 |
| 683 EXPECT_TRUE(IsEmptyPrerenderLinkManager()); | 680 EXPECT_TRUE(IsEmptyPrerenderLinkManager()); |
| 684 EXPECT_TRUE(prerender_contents->prerendering_has_been_cancelled()); | 681 EXPECT_TRUE(prerender_contents->prerendering_has_been_cancelled()); |
| 685 DummyPrerenderContents* null = NULL; | 682 DummyPrerenderContents* null = NULL; |
| 686 ASSERT_EQ(null, prerender_manager()->GetEntry(url)); | 683 ASSERT_EQ(null, prerender_manager()->GetEntry(url)); |
| 687 } | 684 } |
| 688 | 685 |
| 689 // TODO(gavinp): Update this test after abandon has an effect on Prerenders, | 686 // TODO(gavinp): Update this test after abandon has an effect on Prerenders, |
| 690 // like shortening the timeouts. | 687 // like shortening the timeouts. |
| 691 TEST_F(PrerenderTest, LinkManagerAbandon) { | 688 TEST_F(PrerenderTest, LinkManagerAbandon) { |
| 692 EXPECT_TRUE(IsEmptyPrerenderLinkManager()); | 689 EXPECT_TRUE(IsEmptyPrerenderLinkManager()); |
| 693 GURL url("http://www.myexample.com"); | 690 GURL url("http://www.myexample.com"); |
| 694 DummyPrerenderContents* prerender_contents = | 691 DummyPrerenderContents* prerender_contents = |
| 695 prerender_manager()->CreateNextPrerenderContents( | 692 prerender_manager()->CreateNextPrerenderContents( |
| 696 url, FINAL_STATUS_USED); | 693 url, FINAL_STATUS_USED); |
| 697 | 694 |
| 698 EXPECT_TRUE(AddSimplePrerender(url)); | 695 EXPECT_TRUE(AddSimplePrerender(url)); |
| 699 | 696 |
| 700 EXPECT_TRUE(prerender_contents->has_started()); | 697 EXPECT_TRUE(prerender_contents->prerendering_has_started()); |
| 701 EXPECT_FALSE(prerender_contents->prerendering_has_been_cancelled()); | 698 EXPECT_FALSE(prerender_contents->prerendering_has_been_cancelled()); |
| 702 ASSERT_EQ(prerender_contents, prerender_manager()->FindEntry(url)); | 699 ASSERT_EQ(prerender_contents, prerender_manager()->FindEntry(url)); |
| 703 EXPECT_FALSE(IsEmptyPrerenderLinkManager()); | 700 EXPECT_FALSE(IsEmptyPrerenderLinkManager()); |
| 704 prerender_link_manager()->OnAbandonPrerender(kDefaultChildId, | 701 prerender_link_manager()->OnAbandonPrerender(kDefaultChildId, |
| 705 last_prerender_id()); | 702 last_prerender_id()); |
| 706 | 703 |
| 707 EXPECT_FALSE(prerender_contents->prerendering_has_been_cancelled()); | 704 EXPECT_FALSE(prerender_contents->prerendering_has_been_cancelled()); |
| 708 ASSERT_EQ(prerender_contents, prerender_manager()->GetEntry(url)); | 705 ASSERT_EQ(prerender_contents, prerender_manager()->GetEntry(url)); |
| 709 EXPECT_TRUE(IsEmptyPrerenderLinkManager()); | 706 EXPECT_TRUE(IsEmptyPrerenderLinkManager()); |
| 710 } | 707 } |
| 711 | 708 |
| 712 TEST_F(PrerenderTest, LinkManagerCancelTwice) { | 709 TEST_F(PrerenderTest, LinkManagerCancelTwice) { |
| 713 EXPECT_TRUE(IsEmptyPrerenderLinkManager()); | 710 EXPECT_TRUE(IsEmptyPrerenderLinkManager()); |
| 714 GURL url("http://www.myexample.com"); | 711 GURL url("http://www.myexample.com"); |
| 715 DummyPrerenderContents* prerender_contents = | 712 DummyPrerenderContents* prerender_contents = |
| 716 prerender_manager()->CreateNextPrerenderContents( | 713 prerender_manager()->CreateNextPrerenderContents( |
| 717 url, FINAL_STATUS_CANCELLED); | 714 url, FINAL_STATUS_CANCELLED); |
| 718 | 715 |
| 719 EXPECT_TRUE(AddSimplePrerender(url)); | 716 EXPECT_TRUE(AddSimplePrerender(url)); |
| 720 EXPECT_TRUE(prerender_contents->has_started()); | 717 EXPECT_TRUE(prerender_contents->prerendering_has_started()); |
| 721 EXPECT_FALSE(prerender_contents->prerendering_has_been_cancelled()); | 718 EXPECT_FALSE(prerender_contents->prerendering_has_been_cancelled()); |
| 722 ASSERT_EQ(prerender_contents, prerender_manager()->FindEntry(url)); | 719 ASSERT_EQ(prerender_contents, prerender_manager()->FindEntry(url)); |
| 723 prerender_link_manager()->OnCancelPrerender(kDefaultChildId, | 720 prerender_link_manager()->OnCancelPrerender(kDefaultChildId, |
| 724 last_prerender_id()); | 721 last_prerender_id()); |
| 725 | 722 |
| 726 EXPECT_TRUE(IsEmptyPrerenderLinkManager()); | 723 EXPECT_TRUE(IsEmptyPrerenderLinkManager()); |
| 727 EXPECT_TRUE(prerender_contents->prerendering_has_been_cancelled()); | 724 EXPECT_TRUE(prerender_contents->prerendering_has_been_cancelled()); |
| 728 DummyPrerenderContents* null = NULL; | 725 DummyPrerenderContents* null = NULL; |
| 729 ASSERT_EQ(null, prerender_manager()->GetEntry(url)); | 726 ASSERT_EQ(null, prerender_manager()->GetEntry(url)); |
| 730 prerender_link_manager()->OnCancelPrerender(kDefaultChildId, | 727 prerender_link_manager()->OnCancelPrerender(kDefaultChildId, |
| 731 last_prerender_id()); | 728 last_prerender_id()); |
| 732 } | 729 } |
| 733 | 730 |
| 734 TEST_F(PrerenderTest, LinkManagerAddTwiceCancelTwice) { | 731 TEST_F(PrerenderTest, LinkManagerAddTwiceCancelTwice) { |
| 735 EXPECT_TRUE(IsEmptyPrerenderLinkManager()); | 732 EXPECT_TRUE(IsEmptyPrerenderLinkManager()); |
| 736 GURL url("http://www.myexample.com"); | 733 GURL url("http://www.myexample.com"); |
| 737 DummyPrerenderContents* prerender_contents = | 734 DummyPrerenderContents* prerender_contents = |
| 738 prerender_manager()->CreateNextPrerenderContents( | 735 prerender_manager()->CreateNextPrerenderContents( |
| 739 url, FINAL_STATUS_CANCELLED); | 736 url, FINAL_STATUS_CANCELLED); |
| 740 | 737 |
| 741 EXPECT_TRUE(AddSimplePrerender(url)); | 738 EXPECT_TRUE(AddSimplePrerender(url)); |
| 742 | 739 |
| 743 const int first_prerender_id = last_prerender_id(); | 740 const int first_prerender_id = last_prerender_id(); |
| 744 EXPECT_TRUE(prerender_contents->has_started()); | 741 EXPECT_TRUE(prerender_contents->prerendering_has_started()); |
| 745 EXPECT_FALSE(prerender_contents->prerendering_has_been_cancelled()); | 742 EXPECT_FALSE(prerender_contents->prerendering_has_been_cancelled()); |
| 746 ASSERT_EQ(prerender_contents, prerender_manager()->FindEntry(url)); | 743 ASSERT_EQ(prerender_contents, prerender_manager()->FindEntry(url)); |
| 747 EXPECT_TRUE(AddSimplePrerender(url)); | 744 EXPECT_TRUE(AddSimplePrerender(url)); |
| 748 | 745 |
| 749 const int second_prerender_id = last_prerender_id(); | 746 const int second_prerender_id = last_prerender_id(); |
| 750 EXPECT_TRUE(prerender_contents->has_started()); | 747 EXPECT_TRUE(prerender_contents->prerendering_has_started()); |
| 751 EXPECT_FALSE(prerender_contents->prerendering_has_been_cancelled()); | 748 EXPECT_FALSE(prerender_contents->prerendering_has_been_cancelled()); |
| 752 ASSERT_EQ(prerender_contents, prerender_manager()->FindEntry(url)); | 749 ASSERT_EQ(prerender_contents, prerender_manager()->FindEntry(url)); |
| 753 prerender_link_manager()->OnCancelPrerender(kDefaultChildId, | 750 prerender_link_manager()->OnCancelPrerender(kDefaultChildId, |
| 754 first_prerender_id); | 751 first_prerender_id); |
| 755 | 752 |
| 756 EXPECT_FALSE(prerender_contents->prerendering_has_been_cancelled()); | 753 EXPECT_FALSE(prerender_contents->prerendering_has_been_cancelled()); |
| 757 ASSERT_EQ(prerender_contents, prerender_manager()->FindEntry(url)); | 754 ASSERT_EQ(prerender_contents, prerender_manager()->FindEntry(url)); |
| 758 prerender_link_manager()->OnCancelPrerender(kDefaultChildId, | 755 prerender_link_manager()->OnCancelPrerender(kDefaultChildId, |
| 759 second_prerender_id); | 756 second_prerender_id); |
| 760 | 757 |
| 761 EXPECT_TRUE(IsEmptyPrerenderLinkManager()); | 758 EXPECT_TRUE(IsEmptyPrerenderLinkManager()); |
| 762 EXPECT_TRUE(prerender_contents->prerendering_has_been_cancelled()); | 759 EXPECT_TRUE(prerender_contents->prerendering_has_been_cancelled()); |
| 763 DummyPrerenderContents* null = NULL; | 760 DummyPrerenderContents* null = NULL; |
| 764 ASSERT_EQ(null, prerender_manager()->GetEntry(url)); | 761 ASSERT_EQ(null, prerender_manager()->GetEntry(url)); |
| 765 } | 762 } |
| 766 | 763 |
| 767 TEST_F(PrerenderTest, LinkManagerAddTwiceCancelTwiceThenAbandonTwice) { | 764 TEST_F(PrerenderTest, LinkManagerAddTwiceCancelTwiceThenAbandonTwice) { |
| 768 EXPECT_TRUE(IsEmptyPrerenderLinkManager()); | 765 EXPECT_TRUE(IsEmptyPrerenderLinkManager()); |
| 769 GURL url("http://www.myexample.com"); | 766 GURL url("http://www.myexample.com"); |
| 770 DummyPrerenderContents* prerender_contents = | 767 DummyPrerenderContents* prerender_contents = |
| 771 prerender_manager()->CreateNextPrerenderContents( | 768 prerender_manager()->CreateNextPrerenderContents( |
| 772 url, FINAL_STATUS_CANCELLED); | 769 url, FINAL_STATUS_CANCELLED); |
| 773 | 770 |
| 774 EXPECT_TRUE(AddSimplePrerender(url)); | 771 EXPECT_TRUE(AddSimplePrerender(url)); |
| 775 | 772 |
| 776 const int first_prerender_id = last_prerender_id(); | 773 const int first_prerender_id = last_prerender_id(); |
| 777 EXPECT_TRUE(prerender_contents->has_started()); | 774 EXPECT_TRUE(prerender_contents->prerendering_has_started()); |
| 778 EXPECT_FALSE(prerender_contents->prerendering_has_been_cancelled()); | 775 EXPECT_FALSE(prerender_contents->prerendering_has_been_cancelled()); |
| 779 ASSERT_EQ(prerender_contents, prerender_manager()->FindEntry(url)); | 776 ASSERT_EQ(prerender_contents, prerender_manager()->FindEntry(url)); |
| 780 EXPECT_TRUE(AddSimplePrerender(url)); | 777 EXPECT_TRUE(AddSimplePrerender(url)); |
| 781 | 778 |
| 782 const int second_prerender_id = last_prerender_id(); | 779 const int second_prerender_id = last_prerender_id(); |
| 783 EXPECT_TRUE(prerender_contents->has_started()); | 780 EXPECT_TRUE(prerender_contents->prerendering_has_started()); |
| 784 EXPECT_FALSE(prerender_contents->prerendering_has_been_cancelled()); | 781 EXPECT_FALSE(prerender_contents->prerendering_has_been_cancelled()); |
| 785 ASSERT_EQ(prerender_contents, prerender_manager()->FindEntry(url)); | 782 ASSERT_EQ(prerender_contents, prerender_manager()->FindEntry(url)); |
| 786 prerender_link_manager()->OnCancelPrerender(kDefaultChildId, | 783 prerender_link_manager()->OnCancelPrerender(kDefaultChildId, |
| 787 first_prerender_id); | 784 first_prerender_id); |
| 788 | 785 |
| 789 EXPECT_FALSE(prerender_contents->prerendering_has_been_cancelled()); | 786 EXPECT_FALSE(prerender_contents->prerendering_has_been_cancelled()); |
| 790 ASSERT_EQ(prerender_contents, prerender_manager()->FindEntry(url)); | 787 ASSERT_EQ(prerender_contents, prerender_manager()->FindEntry(url)); |
| 791 prerender_link_manager()->OnCancelPrerender(kDefaultChildId, | 788 prerender_link_manager()->OnCancelPrerender(kDefaultChildId, |
| 792 second_prerender_id); | 789 second_prerender_id); |
| 793 | 790 |
| (...skipping 18 matching lines...) Expand all Loading... |
| 812 TEST_F(PrerenderTest, LinkManagerAddTwiceAbandonTwice) { | 809 TEST_F(PrerenderTest, LinkManagerAddTwiceAbandonTwice) { |
| 813 EXPECT_TRUE(IsEmptyPrerenderLinkManager()); | 810 EXPECT_TRUE(IsEmptyPrerenderLinkManager()); |
| 814 GURL url("http://www.myexample.com"); | 811 GURL url("http://www.myexample.com"); |
| 815 DummyPrerenderContents* prerender_contents = | 812 DummyPrerenderContents* prerender_contents = |
| 816 prerender_manager()->CreateNextPrerenderContents( | 813 prerender_manager()->CreateNextPrerenderContents( |
| 817 url, FINAL_STATUS_USED); | 814 url, FINAL_STATUS_USED); |
| 818 | 815 |
| 819 EXPECT_TRUE(AddSimplePrerender(url)); | 816 EXPECT_TRUE(AddSimplePrerender(url)); |
| 820 | 817 |
| 821 const int first_prerender_id = last_prerender_id(); | 818 const int first_prerender_id = last_prerender_id(); |
| 822 EXPECT_TRUE(prerender_contents->has_started()); | 819 EXPECT_TRUE(prerender_contents->prerendering_has_started()); |
| 823 EXPECT_FALSE(prerender_contents->prerendering_has_been_cancelled()); | 820 EXPECT_FALSE(prerender_contents->prerendering_has_been_cancelled()); |
| 824 ASSERT_EQ(prerender_contents, prerender_manager()->FindEntry(url)); | 821 ASSERT_EQ(prerender_contents, prerender_manager()->FindEntry(url)); |
| 825 EXPECT_TRUE(AddSimplePrerender(url)); | 822 EXPECT_TRUE(AddSimplePrerender(url)); |
| 826 | 823 |
| 827 const int second_prerender_id = last_prerender_id(); | 824 const int second_prerender_id = last_prerender_id(); |
| 828 EXPECT_TRUE(prerender_contents->has_started()); | 825 EXPECT_TRUE(prerender_contents->prerendering_has_started()); |
| 829 EXPECT_FALSE(prerender_contents->prerendering_has_been_cancelled()); | 826 EXPECT_FALSE(prerender_contents->prerendering_has_been_cancelled()); |
| 830 ASSERT_EQ(prerender_contents, prerender_manager()->FindEntry(url)); | 827 ASSERT_EQ(prerender_contents, prerender_manager()->FindEntry(url)); |
| 831 prerender_link_manager()->OnAbandonPrerender(kDefaultChildId, | 828 prerender_link_manager()->OnAbandonPrerender(kDefaultChildId, |
| 832 first_prerender_id); | 829 first_prerender_id); |
| 833 | 830 |
| 834 EXPECT_FALSE(prerender_contents->prerendering_has_been_cancelled()); | 831 EXPECT_FALSE(prerender_contents->prerendering_has_been_cancelled()); |
| 835 ASSERT_EQ(prerender_contents, prerender_manager()->FindEntry(url)); | 832 ASSERT_EQ(prerender_contents, prerender_manager()->FindEntry(url)); |
| 836 prerender_link_manager()->OnAbandonPrerender(kDefaultChildId, | 833 prerender_link_manager()->OnAbandonPrerender(kDefaultChildId, |
| 837 second_prerender_id); | 834 second_prerender_id); |
| 838 | 835 |
| 839 EXPECT_TRUE(IsEmptyPrerenderLinkManager()); | 836 EXPECT_TRUE(IsEmptyPrerenderLinkManager()); |
| 840 EXPECT_FALSE(prerender_contents->prerendering_has_been_cancelled()); | 837 EXPECT_FALSE(prerender_contents->prerendering_has_been_cancelled()); |
| 841 ASSERT_EQ(prerender_contents, prerender_manager()->GetEntry(url)); | 838 ASSERT_EQ(prerender_contents, prerender_manager()->GetEntry(url)); |
| 842 } | 839 } |
| 843 | 840 |
| 844 // TODO(gavinp): After abandon shortens the expire time on a Prerender, | 841 // TODO(gavinp): After abandon shortens the expire time on a Prerender, |
| 845 // add a series of tests testing advancing the time by either the abandon | 842 // add a series of tests testing advancing the time by either the abandon |
| 846 // or normal expire, and verifying the expected behaviour with groups | 843 // or normal expire, and verifying the expected behaviour with groups |
| 847 // of links. | 844 // of links. |
| 848 TEST_F(PrerenderTest, LinkManagerExpireThenCancel) { | 845 TEST_F(PrerenderTest, LinkManagerExpireThenCancel) { |
| 849 EXPECT_TRUE(IsEmptyPrerenderLinkManager()); | 846 EXPECT_TRUE(IsEmptyPrerenderLinkManager()); |
| 850 GURL url("http://www.myexample.com"); | 847 GURL url("http://www.myexample.com"); |
| 851 DummyPrerenderContents* prerender_contents = | 848 DummyPrerenderContents* prerender_contents = |
| 852 prerender_manager()->CreateNextPrerenderContents( | 849 prerender_manager()->CreateNextPrerenderContents( |
| 853 url, FINAL_STATUS_TIMED_OUT); | 850 url, FINAL_STATUS_TIMED_OUT); |
| 854 | 851 |
| 855 EXPECT_TRUE(AddSimplePrerender(url)); | 852 EXPECT_TRUE(AddSimplePrerender(url)); |
| 856 | 853 |
| 857 EXPECT_TRUE(prerender_contents->has_started()); | 854 EXPECT_TRUE(prerender_contents->prerendering_has_started()); |
| 858 EXPECT_FALSE(prerender_contents->prerendering_has_been_cancelled()); | 855 EXPECT_FALSE(prerender_contents->prerendering_has_been_cancelled()); |
| 859 ASSERT_EQ(prerender_contents, prerender_manager()->FindEntry(url)); | 856 ASSERT_EQ(prerender_contents, prerender_manager()->FindEntry(url)); |
| 860 prerender_manager()->AdvanceTime(prerender_manager()->GetMaxAge() + | 857 prerender_manager()->AdvanceTime(prerender_manager()->GetMaxAge() + |
| 861 base::TimeDelta::FromSeconds(1)); | 858 base::TimeDelta::FromSeconds(1)); |
| 862 | 859 |
| 863 EXPECT_FALSE(IsEmptyPrerenderLinkManager()); | 860 EXPECT_FALSE(IsEmptyPrerenderLinkManager()); |
| 864 DummyPrerenderContents* null = NULL; | 861 DummyPrerenderContents* null = NULL; |
| 865 ASSERT_EQ(null, prerender_manager()->GetEntry(url)); | 862 ASSERT_EQ(null, prerender_manager()->GetEntry(url)); |
| 866 prerender_link_manager()->OnCancelPrerender(kDefaultChildId, | 863 prerender_link_manager()->OnCancelPrerender(kDefaultChildId, |
| 867 last_prerender_id()); | 864 last_prerender_id()); |
| 868 | 865 |
| 869 EXPECT_TRUE(IsEmptyPrerenderLinkManager()); | 866 EXPECT_TRUE(IsEmptyPrerenderLinkManager()); |
| 870 ASSERT_EQ(null, prerender_manager()->GetEntry(url)); | 867 ASSERT_EQ(null, prerender_manager()->GetEntry(url)); |
| 871 } | 868 } |
| 872 | 869 |
| 873 TEST_F(PrerenderTest, LinkManagerExpireThenAddAgain) { | 870 TEST_F(PrerenderTest, LinkManagerExpireThenAddAgain) { |
| 874 EXPECT_TRUE(IsEmptyPrerenderLinkManager()); | 871 EXPECT_TRUE(IsEmptyPrerenderLinkManager()); |
| 875 GURL url("http://www.myexample.com"); | 872 GURL url("http://www.myexample.com"); |
| 876 DummyPrerenderContents* first_prerender_contents = | 873 DummyPrerenderContents* first_prerender_contents = |
| 877 prerender_manager()->CreateNextPrerenderContents( | 874 prerender_manager()->CreateNextPrerenderContents( |
| 878 url, FINAL_STATUS_TIMED_OUT); | 875 url, FINAL_STATUS_TIMED_OUT); |
| 879 EXPECT_TRUE(AddSimplePrerender(url)); | 876 EXPECT_TRUE(AddSimplePrerender(url)); |
| 880 EXPECT_TRUE(first_prerender_contents->has_started()); | 877 EXPECT_TRUE(first_prerender_contents->prerendering_has_started()); |
| 881 EXPECT_FALSE(first_prerender_contents->prerendering_has_been_cancelled()); | 878 EXPECT_FALSE(first_prerender_contents->prerendering_has_been_cancelled()); |
| 882 ASSERT_EQ(first_prerender_contents, prerender_manager()->FindEntry(url)); | 879 ASSERT_EQ(first_prerender_contents, prerender_manager()->FindEntry(url)); |
| 883 prerender_manager()->AdvanceTime(prerender_manager()->GetMaxAge() + | 880 prerender_manager()->AdvanceTime(prerender_manager()->GetMaxAge() + |
| 884 base::TimeDelta::FromSeconds(1)); | 881 base::TimeDelta::FromSeconds(1)); |
| 885 DummyPrerenderContents* null = NULL; | 882 DummyPrerenderContents* null = NULL; |
| 886 ASSERT_EQ(null, prerender_manager()->GetEntry(url)); | 883 ASSERT_EQ(null, prerender_manager()->GetEntry(url)); |
| 887 DummyPrerenderContents* second_prerender_contents = | 884 DummyPrerenderContents* second_prerender_contents = |
| 888 prerender_manager()->CreateNextPrerenderContents( | 885 prerender_manager()->CreateNextPrerenderContents( |
| 889 url, FINAL_STATUS_USED); | 886 url, FINAL_STATUS_USED); |
| 890 EXPECT_TRUE(AddSimplePrerender(url)); | 887 EXPECT_TRUE(AddSimplePrerender(url)); |
| 891 EXPECT_TRUE(second_prerender_contents->has_started()); | 888 EXPECT_TRUE(second_prerender_contents->prerendering_has_started()); |
| 892 ASSERT_EQ(second_prerender_contents, prerender_manager()->GetEntry(url)); | 889 ASSERT_EQ(second_prerender_contents, prerender_manager()->GetEntry(url)); |
| 893 // The PrerenderLinkManager is not empty since we never removed the first | 890 // The PrerenderLinkManager is not empty since we never removed the first |
| 894 // prerender. | 891 // prerender. |
| 895 EXPECT_FALSE(IsEmptyPrerenderLinkManager()); | 892 EXPECT_FALSE(IsEmptyPrerenderLinkManager()); |
| 896 } | 893 } |
| 897 | 894 |
| 898 TEST_F(PrerenderTest, LinkManagerCancelThenAddAgain) { | 895 TEST_F(PrerenderTest, LinkManagerCancelThenAddAgain) { |
| 899 EXPECT_TRUE(IsEmptyPrerenderLinkManager()); | 896 EXPECT_TRUE(IsEmptyPrerenderLinkManager()); |
| 900 GURL url("http://www.myexample.com"); | 897 GURL url("http://www.myexample.com"); |
| 901 DummyPrerenderContents* first_prerender_contents = | 898 DummyPrerenderContents* first_prerender_contents = |
| 902 prerender_manager()->CreateNextPrerenderContents( | 899 prerender_manager()->CreateNextPrerenderContents( |
| 903 url, FINAL_STATUS_CANCELLED); | 900 url, FINAL_STATUS_CANCELLED); |
| 904 EXPECT_TRUE(AddSimplePrerender(url)); | 901 EXPECT_TRUE(AddSimplePrerender(url)); |
| 905 EXPECT_TRUE(first_prerender_contents->has_started()); | 902 EXPECT_TRUE(first_prerender_contents->prerendering_has_started()); |
| 906 EXPECT_FALSE(first_prerender_contents->prerendering_has_been_cancelled()); | 903 EXPECT_FALSE(first_prerender_contents->prerendering_has_been_cancelled()); |
| 907 ASSERT_EQ(first_prerender_contents, prerender_manager()->FindEntry(url)); | 904 ASSERT_EQ(first_prerender_contents, prerender_manager()->FindEntry(url)); |
| 908 prerender_link_manager()->OnCancelPrerender(kDefaultChildId, | 905 prerender_link_manager()->OnCancelPrerender(kDefaultChildId, |
| 909 last_prerender_id()); | 906 last_prerender_id()); |
| 910 EXPECT_TRUE(IsEmptyPrerenderLinkManager()); | 907 EXPECT_TRUE(IsEmptyPrerenderLinkManager()); |
| 911 EXPECT_TRUE(first_prerender_contents->prerendering_has_been_cancelled()); | 908 EXPECT_TRUE(first_prerender_contents->prerendering_has_been_cancelled()); |
| 912 DummyPrerenderContents* null = NULL; | 909 DummyPrerenderContents* null = NULL; |
| 913 ASSERT_EQ(null, prerender_manager()->GetEntry(url)); | 910 ASSERT_EQ(null, prerender_manager()->GetEntry(url)); |
| 914 DummyPrerenderContents* second_prerender_contents = | 911 DummyPrerenderContents* second_prerender_contents = |
| 915 prerender_manager()->CreateNextPrerenderContents( | 912 prerender_manager()->CreateNextPrerenderContents( |
| 916 url, FINAL_STATUS_USED); | 913 url, FINAL_STATUS_USED); |
| 917 EXPECT_TRUE(AddSimplePrerender(url)); | 914 EXPECT_TRUE(AddSimplePrerender(url)); |
| 918 EXPECT_TRUE(second_prerender_contents->has_started()); | 915 EXPECT_TRUE(second_prerender_contents->prerendering_has_started()); |
| 919 ASSERT_EQ(second_prerender_contents, prerender_manager()->GetEntry(url)); | 916 ASSERT_EQ(second_prerender_contents, prerender_manager()->GetEntry(url)); |
| 920 EXPECT_FALSE(IsEmptyPrerenderLinkManager()); | 917 EXPECT_FALSE(IsEmptyPrerenderLinkManager()); |
| 921 } | 918 } |
| 922 | 919 |
| 923 } // namespace prerender | 920 } // namespace prerender |
| 924 | |
| OLD | NEW |