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 |