| OLD | NEW |
| 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 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/memory/scoped_vector.h" | 5 #include "base/memory/scoped_vector.h" |
| 6 #include "base/message_loop.h" | 6 #include "base/message_loop.h" |
| 7 #include "base/time.h" | 7 #include "base/time.h" |
| 8 #include "chrome/browser/prerender/prerender_contents.h" | 8 #include "chrome/browser/prerender/prerender_contents.h" |
| 9 #include "chrome/browser/prerender/prerender_manager.h" | 9 #include "chrome/browser/prerender/prerender_manager.h" |
| 10 #include "chrome/browser/prerender/prerender_origin.h" | 10 #include "chrome/browser/prerender/prerender_origin.h" |
| (...skipping 110 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 121 EXPECT_TRUE(prerender_contents->AddAliasURL(*it)); | 121 EXPECT_TRUE(prerender_contents->AddAliasURL(*it)); |
| 122 } | 122 } |
| 123 SetNextPrerenderContents(prerender_contents); | 123 SetNextPrerenderContents(prerender_contents); |
| 124 return prerender_contents; | 124 return prerender_contents; |
| 125 } | 125 } |
| 126 | 126 |
| 127 // Shorthand to add a simple preload with a reasonable source. | 127 // Shorthand to add a simple preload with a reasonable source. |
| 128 bool AddSimplePrerender(const GURL& url) { | 128 bool AddSimplePrerender(const GURL& url) { |
| 129 return AddPrerenderFromLinkRelPrerender(-1, -1, | 129 return AddPrerenderFromLinkRelPrerender(-1, -1, |
| 130 url, | 130 url, |
| 131 GURL()); | 131 content::Referrer()); |
| 132 } | 132 } |
| 133 | 133 |
| 134 void set_rate_limit_enabled(bool enabled) { | 134 void set_rate_limit_enabled(bool enabled) { |
| 135 mutable_config().rate_limit_enabled = enabled; | 135 mutable_config().rate_limit_enabled = enabled; |
| 136 } | 136 } |
| 137 | 137 |
| 138 PrerenderContents* next_prerender_contents() { | 138 PrerenderContents* next_prerender_contents() { |
| 139 return next_prerender_contents_.get(); | 139 return next_prerender_contents_.get(); |
| 140 } | 140 } |
| 141 | 141 |
| 142 private: | 142 private: |
| 143 void SetNextPrerenderContents(DummyPrerenderContents* prerender_contents) { | 143 void SetNextPrerenderContents(DummyPrerenderContents* prerender_contents) { |
| 144 DCHECK(!next_prerender_contents_.get()); | 144 DCHECK(!next_prerender_contents_.get()); |
| 145 next_prerender_contents_.reset(prerender_contents); | 145 next_prerender_contents_.reset(prerender_contents); |
| 146 if (prerender_contents->expected_final_status() == FINAL_STATUS_USED) | 146 if (prerender_contents->expected_final_status() == FINAL_STATUS_USED) |
| 147 used_prerender_contents_.push_back(prerender_contents); | 147 used_prerender_contents_.push_back(prerender_contents); |
| 148 } | 148 } |
| 149 | 149 |
| 150 virtual base::Time GetCurrentTime() const OVERRIDE { | 150 virtual base::Time GetCurrentTime() const OVERRIDE { |
| 151 return time_; | 151 return time_; |
| 152 } | 152 } |
| 153 | 153 |
| 154 virtual base::TimeTicks GetCurrentTimeTicks() const OVERRIDE { | 154 virtual base::TimeTicks GetCurrentTimeTicks() const OVERRIDE { |
| 155 return time_ticks_; | 155 return time_ticks_; |
| 156 } | 156 } |
| 157 | 157 |
| 158 virtual PrerenderContents* CreatePrerenderContents( | 158 virtual PrerenderContents* CreatePrerenderContents( |
| 159 const GURL& url, | 159 const GURL& url, |
| 160 const GURL& referrer, | 160 const content::Referrer& referrer, |
| 161 Origin origin, | 161 Origin origin, |
| 162 uint8 experiment_id) OVERRIDE { | 162 uint8 experiment_id) OVERRIDE { |
| 163 DCHECK(next_prerender_contents_.get()); | 163 DCHECK(next_prerender_contents_.get()); |
| 164 return next_prerender_contents_.release(); | 164 return next_prerender_contents_.release(); |
| 165 } | 165 } |
| 166 | 166 |
| 167 base::Time time_; | 167 base::Time time_; |
| 168 base::TimeTicks time_ticks_; | 168 base::TimeTicks time_ticks_; |
| 169 scoped_ptr<PrerenderContents> next_prerender_contents_; | 169 scoped_ptr<PrerenderContents> next_prerender_contents_; |
| 170 // PrerenderContents with an |expected_final_status| of FINAL_STATUS_USED, | 170 // PrerenderContents with an |expected_final_status| of FINAL_STATUS_USED, |
| (...skipping 259 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 430 | 430 |
| 431 int child_id; | 431 int child_id; |
| 432 int route_id; | 432 int route_id; |
| 433 ASSERT_TRUE(prerender_contents->GetChildId(&child_id)); | 433 ASSERT_TRUE(prerender_contents->GetChildId(&child_id)); |
| 434 ASSERT_TRUE(prerender_contents->GetRouteId(&route_id)); | 434 ASSERT_TRUE(prerender_contents->GetRouteId(&route_id)); |
| 435 | 435 |
| 436 GURL pending_url("http://news.google.com/"); | 436 GURL pending_url("http://news.google.com/"); |
| 437 | 437 |
| 438 EXPECT_TRUE(prerender_manager()->AddPrerenderFromLinkRelPrerender( | 438 EXPECT_TRUE(prerender_manager()->AddPrerenderFromLinkRelPrerender( |
| 439 child_id, route_id, | 439 child_id, route_id, |
| 440 pending_url, url)); | 440 pending_url, content::Referrer(url, WebKit::WebReferrerPolicyDefault))); |
| 441 | 441 |
| 442 EXPECT_TRUE(prerender_manager()->IsPendingEntry(pending_url)); | 442 EXPECT_TRUE(prerender_manager()->IsPendingEntry(pending_url)); |
| 443 EXPECT_TRUE(prerender_contents->has_started()); | 443 EXPECT_TRUE(prerender_contents->has_started()); |
| 444 ASSERT_EQ(prerender_contents, prerender_manager()->GetEntry(url)); | 444 ASSERT_EQ(prerender_contents, prerender_manager()->GetEntry(url)); |
| 445 } | 445 } |
| 446 | 446 |
| 447 // Tests that a PrerenderManager created for a browser session in the control | 447 // Tests that a PrerenderManager created for a browser session in the control |
| 448 // group will not be able to override FINAL_STATUS_CONTROL_GROUP. | 448 // group will not be able to override FINAL_STATUS_CONTROL_GROUP. |
| 449 TEST_F(PrerenderManagerTest, ControlGroup) { | 449 TEST_F(PrerenderManagerTest, ControlGroup) { |
| 450 RestorePrerenderMode restore_prerender_mode; | 450 RestorePrerenderMode restore_prerender_mode; |
| (...skipping 10 matching lines...) Expand all Loading... |
| 461 | 461 |
| 462 // Tests that prerendering is cancelled when the source render view does not | 462 // Tests that prerendering is cancelled when the source render view does not |
| 463 // exist. On failure, the DCHECK in CreatePrerenderContents() above should be | 463 // exist. On failure, the DCHECK in CreatePrerenderContents() above should be |
| 464 // triggered. | 464 // triggered. |
| 465 TEST_F(PrerenderManagerTest, SourceRenderViewClosed) { | 465 TEST_F(PrerenderManagerTest, SourceRenderViewClosed) { |
| 466 GURL url("http://www.google.com/"); | 466 GURL url("http://www.google.com/"); |
| 467 prerender_manager()->CreateNextPrerenderContents( | 467 prerender_manager()->CreateNextPrerenderContents( |
| 468 url, | 468 url, |
| 469 FINAL_STATUS_MANAGER_SHUTDOWN); | 469 FINAL_STATUS_MANAGER_SHUTDOWN); |
| 470 EXPECT_FALSE(prerender_manager()->AddPrerenderFromLinkRelPrerender( | 470 EXPECT_FALSE(prerender_manager()->AddPrerenderFromLinkRelPrerender( |
| 471 100, 100, url, GURL())); | 471 100, 100, url, content::Referrer())); |
| 472 } | 472 } |
| 473 | 473 |
| 474 // Tests that the prerender manager ignores fragment references when matching | 474 // Tests that the prerender manager ignores fragment references when matching |
| 475 // prerender URLs in the case the fragment is not in the prerender URL. | 475 // prerender URLs in the case the fragment is not in the prerender URL. |
| 476 TEST_F(PrerenderManagerTest, PageMatchesFragmentTest) { | 476 TEST_F(PrerenderManagerTest, PageMatchesFragmentTest) { |
| 477 GURL url("http://www.google.com/"); | 477 GURL url("http://www.google.com/"); |
| 478 GURL fragment_url("http://www.google.com/#test"); | 478 GURL fragment_url("http://www.google.com/#test"); |
| 479 | 479 |
| 480 DummyPrerenderContents* prerender_contents = | 480 DummyPrerenderContents* prerender_contents = |
| 481 prerender_manager()->CreateNextPrerenderContents(url, | 481 prerender_manager()->CreateNextPrerenderContents(url, |
| (...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 522 url, | 522 url, |
| 523 FINAL_STATUS_CACHE_OR_HISTORY_CLEARED); | 523 FINAL_STATUS_CACHE_OR_HISTORY_CLEARED); |
| 524 EXPECT_TRUE(prerender_manager()->AddSimplePrerender(url)); | 524 EXPECT_TRUE(prerender_manager()->AddSimplePrerender(url)); |
| 525 EXPECT_TRUE(prerender_contents->has_started()); | 525 EXPECT_TRUE(prerender_contents->has_started()); |
| 526 prerender_manager()->ClearData(PrerenderManager::CLEAR_PRERENDER_CONTENTS); | 526 prerender_manager()->ClearData(PrerenderManager::CLEAR_PRERENDER_CONTENTS); |
| 527 DummyPrerenderContents* null = NULL; | 527 DummyPrerenderContents* null = NULL; |
| 528 EXPECT_EQ(null, prerender_manager()->GetEntry(url)); | 528 EXPECT_EQ(null, prerender_manager()->GetEntry(url)); |
| 529 } | 529 } |
| 530 | 530 |
| 531 } // namespace prerender | 531 } // namespace prerender |
| OLD | NEW |