Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(270)

Side by Side Diff: chrome/browser/prerender/prerender_manager_unittest.cc

Issue 8801012: Add support for content::Referrer to prerender (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: updates Created 9 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
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"
11 #include "chrome/test/base/testing_browser_process.h" 11 #include "chrome/test/base/testing_browser_process.h"
12 #include "content/browser/renderer_host/render_view_host.h" 12 #include "content/browser/renderer_host/render_view_host.h"
13 #include "content/test/test_browser_thread.h" 13 #include "content/test/test_browser_thread.h"
14 #include "googleurl/src/gurl.h" 14 #include "googleurl/src/gurl.h"
15 #include "testing/gtest/include/gtest/gtest.h" 15 #include "testing/gtest/include/gtest/gtest.h"
16 16
17 using content::BrowserThread; 17 using content::BrowserThread;
18 18
19 namespace prerender { 19 namespace prerender {
20 20
21 namespace { 21 namespace {
22 22
23 class DummyPrerenderContents : public PrerenderContents { 23 class DummyPrerenderContents : public PrerenderContents {
24 public: 24 public:
25 DummyPrerenderContents(PrerenderManager* prerender_manager, 25 DummyPrerenderContents(PrerenderManager* prerender_manager,
26 PrerenderTracker* prerender_tracker, 26 PrerenderTracker* prerender_tracker,
27 const GURL& url, 27 const GURL& url,
28 FinalStatus expected_final_status) 28 FinalStatus expected_final_status)
29 : PrerenderContents(prerender_manager, prerender_tracker, 29 : PrerenderContents(prerender_manager, prerender_tracker,
30 NULL, url, GURL(), ORIGIN_LINK_REL_PRERENDER, 30 NULL, url, content::Referrer(),
31 ORIGIN_LINK_REL_PRERENDER,
31 PrerenderManager::kNoExperiment), 32 PrerenderManager::kNoExperiment),
32 has_started_(false), 33 has_started_(false),
33 expected_final_status_(expected_final_status) { 34 expected_final_status_(expected_final_status) {
34 } 35 }
35 36
36 virtual ~DummyPrerenderContents() { 37 virtual ~DummyPrerenderContents() {
37 EXPECT_EQ(expected_final_status_, final_status()); 38 EXPECT_EQ(expected_final_status_, final_status());
38 } 39 }
39 40
40 virtual void StartPrerendering( 41 virtual void StartPrerendering(
(...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after
121 EXPECT_TRUE(prerender_contents->AddAliasURL(*it)); 122 EXPECT_TRUE(prerender_contents->AddAliasURL(*it));
122 } 123 }
123 SetNextPrerenderContents(prerender_contents); 124 SetNextPrerenderContents(prerender_contents);
124 return prerender_contents; 125 return prerender_contents;
125 } 126 }
126 127
127 // Shorthand to add a simple preload with a reasonable source. 128 // Shorthand to add a simple preload with a reasonable source.
128 bool AddSimplePrerender(const GURL& url) { 129 bool AddSimplePrerender(const GURL& url) {
129 return AddPrerenderFromLinkRelPrerender(-1, -1, 130 return AddPrerenderFromLinkRelPrerender(-1, -1,
130 url, 131 url,
131 GURL()); 132 content::Referrer());
132 } 133 }
133 134
134 void set_rate_limit_enabled(bool enabled) { 135 void set_rate_limit_enabled(bool enabled) {
135 mutable_config().rate_limit_enabled = enabled; 136 mutable_config().rate_limit_enabled = enabled;
136 } 137 }
137 138
138 PrerenderContents* next_prerender_contents() { 139 PrerenderContents* next_prerender_contents() {
139 return next_prerender_contents_.get(); 140 return next_prerender_contents_.get();
140 } 141 }
141 142
142 private: 143 private:
143 void SetNextPrerenderContents(DummyPrerenderContents* prerender_contents) { 144 void SetNextPrerenderContents(DummyPrerenderContents* prerender_contents) {
144 DCHECK(!next_prerender_contents_.get()); 145 DCHECK(!next_prerender_contents_.get());
145 next_prerender_contents_.reset(prerender_contents); 146 next_prerender_contents_.reset(prerender_contents);
146 if (prerender_contents->expected_final_status() == FINAL_STATUS_USED) 147 if (prerender_contents->expected_final_status() == FINAL_STATUS_USED)
147 used_prerender_contents_.push_back(prerender_contents); 148 used_prerender_contents_.push_back(prerender_contents);
148 } 149 }
149 150
150 virtual base::Time GetCurrentTime() const OVERRIDE { 151 virtual base::Time GetCurrentTime() const OVERRIDE {
151 return time_; 152 return time_;
152 } 153 }
153 154
154 virtual base::TimeTicks GetCurrentTimeTicks() const OVERRIDE { 155 virtual base::TimeTicks GetCurrentTimeTicks() const OVERRIDE {
155 return time_ticks_; 156 return time_ticks_;
156 } 157 }
157 158
158 virtual PrerenderContents* CreatePrerenderContents( 159 virtual PrerenderContents* CreatePrerenderContents(
159 const GURL& url, 160 const GURL& url,
160 const GURL& referrer, 161 const content::Referrer& referrer,
161 Origin origin, 162 Origin origin,
162 uint8 experiment_id) OVERRIDE { 163 uint8 experiment_id) OVERRIDE {
163 DCHECK(next_prerender_contents_.get()); 164 DCHECK(next_prerender_contents_.get());
164 return next_prerender_contents_.release(); 165 return next_prerender_contents_.release();
165 } 166 }
166 167
167 base::Time time_; 168 base::Time time_;
168 base::TimeTicks time_ticks_; 169 base::TimeTicks time_ticks_;
169 scoped_ptr<PrerenderContents> next_prerender_contents_; 170 scoped_ptr<PrerenderContents> next_prerender_contents_;
170 // PrerenderContents with an |expected_final_status| of FINAL_STATUS_USED, 171 // PrerenderContents with an |expected_final_status| of FINAL_STATUS_USED,
(...skipping 259 matching lines...) Expand 10 before | Expand all | Expand 10 after
430 431
431 int child_id; 432 int child_id;
432 int route_id; 433 int route_id;
433 ASSERT_TRUE(prerender_contents->GetChildId(&child_id)); 434 ASSERT_TRUE(prerender_contents->GetChildId(&child_id));
434 ASSERT_TRUE(prerender_contents->GetRouteId(&route_id)); 435 ASSERT_TRUE(prerender_contents->GetRouteId(&route_id));
435 436
436 GURL pending_url("http://news.google.com/"); 437 GURL pending_url("http://news.google.com/");
437 438
438 EXPECT_TRUE(prerender_manager()->AddPrerenderFromLinkRelPrerender( 439 EXPECT_TRUE(prerender_manager()->AddPrerenderFromLinkRelPrerender(
439 child_id, route_id, 440 child_id, route_id,
440 pending_url, url)); 441 pending_url, content::Referrer(url, WebKit::WebReferrerPolicyDefault)));
441 442
442 EXPECT_TRUE(prerender_manager()->IsPendingEntry(pending_url)); 443 EXPECT_TRUE(prerender_manager()->IsPendingEntry(pending_url));
443 EXPECT_TRUE(prerender_contents->has_started()); 444 EXPECT_TRUE(prerender_contents->has_started());
444 ASSERT_EQ(prerender_contents, prerender_manager()->GetEntry(url)); 445 ASSERT_EQ(prerender_contents, prerender_manager()->GetEntry(url));
445 } 446 }
446 447
447 // Tests that a PrerenderManager created for a browser session in the control 448 // Tests that a PrerenderManager created for a browser session in the control
448 // group will not be able to override FINAL_STATUS_CONTROL_GROUP. 449 // group will not be able to override FINAL_STATUS_CONTROL_GROUP.
449 TEST_F(PrerenderManagerTest, ControlGroup) { 450 TEST_F(PrerenderManagerTest, ControlGroup) {
450 RestorePrerenderMode restore_prerender_mode; 451 RestorePrerenderMode restore_prerender_mode;
(...skipping 10 matching lines...) Expand all
461 462
462 // Tests that prerendering is cancelled when the source render view does not 463 // Tests that prerendering is cancelled when the source render view does not
463 // exist. On failure, the DCHECK in CreatePrerenderContents() above should be 464 // exist. On failure, the DCHECK in CreatePrerenderContents() above should be
464 // triggered. 465 // triggered.
465 TEST_F(PrerenderManagerTest, SourceRenderViewClosed) { 466 TEST_F(PrerenderManagerTest, SourceRenderViewClosed) {
466 GURL url("http://www.google.com/"); 467 GURL url("http://www.google.com/");
467 prerender_manager()->CreateNextPrerenderContents( 468 prerender_manager()->CreateNextPrerenderContents(
468 url, 469 url,
469 FINAL_STATUS_MANAGER_SHUTDOWN); 470 FINAL_STATUS_MANAGER_SHUTDOWN);
470 EXPECT_FALSE(prerender_manager()->AddPrerenderFromLinkRelPrerender( 471 EXPECT_FALSE(prerender_manager()->AddPrerenderFromLinkRelPrerender(
471 100, 100, url, GURL())); 472 100, 100, url, content::Referrer()));
472 } 473 }
473 474
474 // Tests that the prerender manager ignores fragment references when matching 475 // Tests that the prerender manager ignores fragment references when matching
475 // prerender URLs in the case the fragment is not in the prerender URL. 476 // prerender URLs in the case the fragment is not in the prerender URL.
476 TEST_F(PrerenderManagerTest, PageMatchesFragmentTest) { 477 TEST_F(PrerenderManagerTest, PageMatchesFragmentTest) {
477 GURL url("http://www.google.com/"); 478 GURL url("http://www.google.com/");
478 GURL fragment_url("http://www.google.com/#test"); 479 GURL fragment_url("http://www.google.com/#test");
479 480
480 DummyPrerenderContents* prerender_contents = 481 DummyPrerenderContents* prerender_contents =
481 prerender_manager()->CreateNextPrerenderContents(url, 482 prerender_manager()->CreateNextPrerenderContents(url,
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
522 url, 523 url,
523 FINAL_STATUS_CACHE_OR_HISTORY_CLEARED); 524 FINAL_STATUS_CACHE_OR_HISTORY_CLEARED);
524 EXPECT_TRUE(prerender_manager()->AddSimplePrerender(url)); 525 EXPECT_TRUE(prerender_manager()->AddSimplePrerender(url));
525 EXPECT_TRUE(prerender_contents->has_started()); 526 EXPECT_TRUE(prerender_contents->has_started());
526 prerender_manager()->ClearData(PrerenderManager::CLEAR_PRERENDER_CONTENTS); 527 prerender_manager()->ClearData(PrerenderManager::CLEAR_PRERENDER_CONTENTS);
527 DummyPrerenderContents* null = NULL; 528 DummyPrerenderContents* null = NULL;
528 EXPECT_EQ(null, prerender_manager()->GetEntry(url)); 529 EXPECT_EQ(null, prerender_manager()->GetEntry(url));
529 } 530 }
530 531
531 } // namespace prerender 532 } // namespace prerender
OLDNEW
« no previous file with comments | « chrome/browser/prerender/prerender_manager.cc ('k') | chrome/browser/renderer_host/chrome_resource_dispatcher_host_delegate.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698