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

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

Issue 6966017: Remove a chrome dependency by removing Prerender from ResourceDispatcherHost. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: rebase Created 9 years, 7 months 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/time.h" 6 #include "base/time.h"
7 #include "chrome/browser/prerender/prerender_contents.h" 7 #include "chrome/browser/prerender/prerender_contents.h"
8 #include "chrome/browser/prerender/prerender_manager.h" 8 #include "chrome/browser/prerender/prerender_manager.h"
9 #include "chrome/test/testing_browser_process.h"
9 #include "content/browser/browser_thread.h" 10 #include "content/browser/browser_thread.h"
10 #include "content/browser/renderer_host/render_view_host.h" 11 #include "content/browser/renderer_host/render_view_host.h"
11 #include "content/browser/renderer_host/render_process_host.h" 12 #include "content/browser/renderer_host/render_process_host.h"
12 #include "googleurl/src/gurl.h" 13 #include "googleurl/src/gurl.h"
13 #include "testing/gtest/include/gtest/gtest.h" 14 #include "testing/gtest/include/gtest/gtest.h"
14 15
15 namespace prerender { 16 namespace prerender {
16 17
17 namespace { 18 namespace {
18 19
19 class DummyPrerenderContents : public PrerenderContents { 20 class DummyPrerenderContents : public PrerenderContents {
20 public: 21 public:
21 DummyPrerenderContents(PrerenderManager* prerender_manager, 22 DummyPrerenderContents(PrerenderManager* prerender_manager,
23 PrerenderTracker* prerender_tracker,
22 const GURL& url, 24 const GURL& url,
23 FinalStatus expected_final_status) 25 FinalStatus expected_final_status)
24 : PrerenderContents(prerender_manager, NULL, url, GURL()), 26 : PrerenderContents(prerender_manager, prerender_tracker, NULL, url,
27 GURL()),
25 has_started_(false), 28 has_started_(false),
26 expected_final_status_(expected_final_status) { 29 expected_final_status_(expected_final_status) {
27 } 30 }
28 31
29 virtual ~DummyPrerenderContents() { 32 virtual ~DummyPrerenderContents() {
30 EXPECT_EQ(expected_final_status_, final_status()); 33 EXPECT_EQ(expected_final_status_, final_status());
31 } 34 }
32 35
33 virtual void StartPrerendering( 36 virtual void StartPrerendering(
34 const RenderViewHost* source_render_view_host) OVERRIDE { 37 const RenderViewHost* source_render_view_host) OVERRIDE {
(...skipping 14 matching lines...) Expand all
49 52
50 FinalStatus expected_final_status() const { return expected_final_status_; } 53 FinalStatus expected_final_status() const { return expected_final_status_; }
51 54
52 private: 55 private:
53 bool has_started_; 56 bool has_started_;
54 FinalStatus expected_final_status_; 57 FinalStatus expected_final_status_;
55 }; 58 };
56 59
57 class TestPrerenderManager : public PrerenderManager { 60 class TestPrerenderManager : public PrerenderManager {
58 public: 61 public:
59 TestPrerenderManager() 62 explicit TestPrerenderManager(PrerenderTracker* prerender_tracker)
60 : PrerenderManager(NULL), 63 : PrerenderManager(NULL, prerender_tracker),
61 time_(base::Time::Now()), 64 time_(base::Time::Now()),
62 time_ticks_(base::TimeTicks::Now()), 65 time_ticks_(base::TimeTicks::Now()),
63 next_prerender_contents_(NULL) { 66 next_prerender_contents_(NULL),
67 prerender_tracker_(prerender_tracker) {
64 rate_limit_enabled_ = false; 68 rate_limit_enabled_ = false;
65 } 69 }
66 70
67 virtual ~TestPrerenderManager() { 71 virtual ~TestPrerenderManager() {
68 if (next_prerender_contents()) { 72 if (next_prerender_contents()) {
69 next_prerender_contents_.release()->Destroy( 73 next_prerender_contents_.release()->Destroy(
70 FINAL_STATUS_MANAGER_SHUTDOWN); 74 FINAL_STATUS_MANAGER_SHUTDOWN);
71 } 75 }
72 // Set the final status for all PrerenderContents with an expected final 76 // Set the final status for all PrerenderContents with an expected final
73 // status of FINAL_STATUS_USED. These values are normally set when the 77 // status of FINAL_STATUS_USED. These values are normally set when the
(...skipping 11 matching lines...) Expand all
85 } 89 }
86 90
87 void AdvanceTimeTicks(base::TimeDelta delta) { 91 void AdvanceTimeTicks(base::TimeDelta delta) {
88 time_ticks_ += delta; 92 time_ticks_ += delta;
89 } 93 }
90 94
91 DummyPrerenderContents* CreateNextPrerenderContents( 95 DummyPrerenderContents* CreateNextPrerenderContents(
92 const GURL& url, 96 const GURL& url,
93 FinalStatus expected_final_status) { 97 FinalStatus expected_final_status) {
94 DummyPrerenderContents* prerender_contents = 98 DummyPrerenderContents* prerender_contents =
95 new DummyPrerenderContents(this, url, expected_final_status); 99 new DummyPrerenderContents(this, prerender_tracker_, url,
100 expected_final_status);
96 SetNextPrerenderContents(prerender_contents); 101 SetNextPrerenderContents(prerender_contents);
97 return prerender_contents; 102 return prerender_contents;
98 } 103 }
99 104
100 DummyPrerenderContents* CreateNextPrerenderContents( 105 DummyPrerenderContents* CreateNextPrerenderContents(
101 const GURL& url, 106 const GURL& url,
102 const std::vector<GURL>& alias_urls, 107 const std::vector<GURL>& alias_urls,
103 FinalStatus expected_final_status) { 108 FinalStatus expected_final_status) {
104 DummyPrerenderContents* prerender_contents = 109 DummyPrerenderContents* prerender_contents =
105 new DummyPrerenderContents(this, url, expected_final_status); 110 new DummyPrerenderContents(this, prerender_tracker_, url,
111 expected_final_status);
106 for (std::vector<GURL>::const_iterator it = alias_urls.begin(); 112 for (std::vector<GURL>::const_iterator it = alias_urls.begin();
107 it != alias_urls.end(); 113 it != alias_urls.end();
108 ++it) { 114 ++it) {
109 EXPECT_TRUE(prerender_contents->AddAliasURL(*it)); 115 EXPECT_TRUE(prerender_contents->AddAliasURL(*it));
110 } 116 }
111 SetNextPrerenderContents(prerender_contents); 117 SetNextPrerenderContents(prerender_contents);
112 return prerender_contents; 118 return prerender_contents;
113 } 119 }
114 120
115 // Shorthand to add a simple preload with no aliases. 121 // Shorthand to add a simple preload with no aliases.
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
149 DCHECK(next_prerender_contents_.get()); 155 DCHECK(next_prerender_contents_.get());
150 return next_prerender_contents_.release(); 156 return next_prerender_contents_.release();
151 } 157 }
152 158
153 base::Time time_; 159 base::Time time_;
154 base::TimeTicks time_ticks_; 160 base::TimeTicks time_ticks_;
155 scoped_ptr<PrerenderContents> next_prerender_contents_; 161 scoped_ptr<PrerenderContents> next_prerender_contents_;
156 // PrerenderContents with an |expected_final_status| of FINAL_STATUS_USED, 162 // PrerenderContents with an |expected_final_status| of FINAL_STATUS_USED,
157 // tracked so they will be automatically deleted. 163 // tracked so they will be automatically deleted.
158 ScopedVector<PrerenderContents> used_prerender_contents_; 164 ScopedVector<PrerenderContents> used_prerender_contents_;
165
166 PrerenderTracker* prerender_tracker_;
159 }; 167 };
160 168
161 class RestorePrerenderMode { 169 class RestorePrerenderMode {
162 public: 170 public:
163 RestorePrerenderMode() : prev_mode_(PrerenderManager::GetMode()) { 171 RestorePrerenderMode() : prev_mode_(PrerenderManager::GetMode()) {
164 } 172 }
165 173
166 ~RestorePrerenderMode() { PrerenderManager::SetMode(prev_mode_); } 174 ~RestorePrerenderMode() { PrerenderManager::SetMode(prev_mode_); }
167 private: 175 private:
168 PrerenderManager::PrerenderManagerMode prev_mode_; 176 PrerenderManager::PrerenderManagerMode prev_mode_;
169 }; 177 };
170 178
171 } // namespace 179 } // namespace
172 180
173 class PrerenderManagerTest : public testing::Test { 181 class PrerenderManagerTest : public testing::Test {
174 public: 182 public:
175 PrerenderManagerTest() : ui_thread_(BrowserThread::UI, &message_loop_), 183 PrerenderManagerTest() : ui_thread_(BrowserThread::UI, &message_loop_),
176 prerender_manager_(new TestPrerenderManager()) { 184 prerender_manager_(
185 new TestPrerenderManager(prerender_tracker())) {
177 } 186 }
178 187
179 TestPrerenderManager* prerender_manager() { 188 TestPrerenderManager* prerender_manager() {
180 return prerender_manager_.get(); 189 return prerender_manager_.get();
181 } 190 }
182 191
183 private: 192 private:
193 PrerenderTracker* prerender_tracker() {
194 return browser_process_.get()->prerender_tracker();
195 }
196
184 // Needed to pass PrerenderManager's DCHECKs. 197 // Needed to pass PrerenderManager's DCHECKs.
198 ScopedTestingBrowserProcess browser_process_;
185 MessageLoop message_loop_; 199 MessageLoop message_loop_;
186 BrowserThread ui_thread_; 200 BrowserThread ui_thread_;
187 scoped_ptr<TestPrerenderManager> prerender_manager_; 201 scoped_ptr<TestPrerenderManager> prerender_manager_;
188 }; 202 };
189 203
190 TEST_F(PrerenderManagerTest, EmptyTest) { 204 TEST_F(PrerenderManagerTest, EmptyTest) {
191 GURL url("http://www.google.com/"); 205 GURL url("http://www.google.com/");
192 EXPECT_FALSE(prerender_manager()->MaybeUsePreloadedPage(NULL, url, false)); 206 EXPECT_FALSE(prerender_manager()->MaybeUsePreloadedPage(NULL, url, false));
193 } 207 }
194 208
(...skipping 329 matching lines...) Expand 10 before | Expand all | Expand 10 after
524 DummyPrerenderContents* prerender_contents = 538 DummyPrerenderContents* prerender_contents =
525 prerender_manager()->CreateNextPrerenderContents(fragment_url, 539 prerender_manager()->CreateNextPrerenderContents(fragment_url,
526 FINAL_STATUS_USED); 540 FINAL_STATUS_USED);
527 EXPECT_TRUE(prerender_manager()->AddSimplePreload(fragment_url)); 541 EXPECT_TRUE(prerender_manager()->AddSimplePreload(fragment_url));
528 EXPECT_TRUE(prerender_contents->has_started()); 542 EXPECT_TRUE(prerender_contents->has_started());
529 ASSERT_EQ(prerender_contents, 543 ASSERT_EQ(prerender_contents,
530 prerender_manager()->GetEntry(other_fragment_url)); 544 prerender_manager()->GetEntry(other_fragment_url));
531 } 545 }
532 546
533 } // namespace prerender 547 } // namespace prerender
OLDNEW
« no previous file with comments | « chrome/browser/prerender/prerender_manager.cc ('k') | chrome/browser/prerender/prerender_tracker.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698