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

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

Issue 11348357: Add observer interface to PrerenderContents. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: _really_ fix windows build. Created 8 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) 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/stringprintf.h" 8 #include "base/stringprintf.h"
9 #include "base/time.h" 9 #include "base/time.h"
10 #include "chrome/browser/prerender/prerender_contents.h" 10 #include "chrome/browser/prerender/prerender_contents.h"
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
52 bool is_control_group) OVERRIDE; 52 bool is_control_group) OVERRIDE;
53 53
54 virtual bool GetChildId(int* child_id) const OVERRIDE { 54 virtual bool GetChildId(int* child_id) const OVERRIDE {
55 // Having a default child_id of -1 forces pending prerenders not to fail 55 // Having a default child_id of -1 forces pending prerenders not to fail
56 // on session storage and cross domain checking. 56 // on session storage and cross domain checking.
57 *child_id = -1; 57 *child_id = -1;
58 return true; 58 return true;
59 } 59 }
60 60
61 virtual bool GetRouteId(int* route_id) const OVERRIDE { 61 virtual bool GetRouteId(int* route_id) const OVERRIDE {
62 *route_id = 0; 62 *route_id = route_id_;
63 return true; 63 return true;
64 } 64 }
65 65
66 FinalStatus expected_final_status() const { return expected_final_status_; } 66 FinalStatus expected_final_status() const { return expected_final_status_; }
67 67
68 bool prerendering_has_been_cancelled() const { 68 bool prerendering_has_been_cancelled() const {
69 return PrerenderContents::prerendering_has_been_cancelled(); 69 return PrerenderContents::prerendering_has_been_cancelled();
70 } 70 }
71 71
72 private: 72 private:
73 static int g_next_route_id_;
74 int route_id_;
75
73 UnitTestPrerenderManager* test_prerender_manager_; 76 UnitTestPrerenderManager* test_prerender_manager_;
74 FinalStatus expected_final_status_; 77 FinalStatus expected_final_status_;
75 }; 78 };
76 79
80 int DummyPrerenderContents::g_next_route_id_ = 0;
81
77 const gfx::Size kSize(640, 480); 82 const gfx::Size kSize(640, 480);
78 83
79 } // namespace 84 } // namespace
80 85
81 class UnitTestPrerenderManager : public PrerenderManager { 86 class UnitTestPrerenderManager : public PrerenderManager {
82 public: 87 public:
83 using PrerenderManager::kMinTimeBetweenPrerendersMs; 88 using PrerenderManager::kMinTimeBetweenPrerendersMs;
84 using PrerenderManager::kNavigationRecordWindowMs; 89 using PrerenderManager::kNavigationRecordWindowMs;
85 90
86 explicit UnitTestPrerenderManager(Profile* profile, 91 explicit UnitTestPrerenderManager(Profile* profile,
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
122 PrerenderContents* FindAndUseEntry(const GURL& url) { 127 PrerenderContents* FindAndUseEntry(const GURL& url) {
123 PrerenderData* prerender_data = FindPrerenderData(url, NULL); 128 PrerenderData* prerender_data = FindPrerenderData(url, NULL);
124 if (!prerender_data) 129 if (!prerender_data)
125 return NULL; 130 return NULL;
126 ScopedVector<PrerenderData>::iterator to_erase = 131 ScopedVector<PrerenderData>::iterator to_erase =
127 FindIteratorForPrerenderContents(prerender_data->contents()); 132 FindIteratorForPrerenderContents(prerender_data->contents());
128 CHECK(to_erase != active_prerenders_.end()); 133 CHECK(to_erase != active_prerenders_.end());
129 PrerenderContents* prerender_contents = prerender_data->ReleaseContents(); 134 PrerenderContents* prerender_contents = prerender_data->ReleaseContents();
130 active_prerenders_.erase(to_erase); 135 active_prerenders_.erase(to_erase);
131 136
132 prerender_contents->set_final_status(FINAL_STATUS_USED); 137 prerender_contents->SetFinalStatus(FINAL_STATUS_USED);
133 prerender_contents->StartPendingPrerenders(); 138 prerender_contents->StartPendingPrerenders();
134 return prerender_contents; 139 return prerender_contents;
135 } 140 }
136 141
137 void AdvanceTime(TimeDelta delta) { 142 void AdvanceTime(TimeDelta delta) {
138 time_ += delta; 143 time_ += delta;
139 } 144 }
140 145
141 void AdvanceTimeTicks(TimeDelta delta) { 146 void AdvanceTimeTicks(TimeDelta delta) {
142 time_ticks_ += delta; 147 time_ticks_ += delta;
(...skipping 94 matching lines...) Expand 10 before | Expand all | Expand 10 after
237 private: 242 private:
238 PrerenderManager::PrerenderManagerMode prev_mode_; 243 PrerenderManager::PrerenderManagerMode prev_mode_;
239 }; 244 };
240 245
241 DummyPrerenderContents::DummyPrerenderContents( 246 DummyPrerenderContents::DummyPrerenderContents(
242 UnitTestPrerenderManager* test_prerender_manager, 247 UnitTestPrerenderManager* test_prerender_manager,
243 PrerenderTracker* prerender_tracker, 248 PrerenderTracker* prerender_tracker,
244 const GURL& url, 249 const GURL& url,
245 Origin origin, 250 Origin origin,
246 FinalStatus expected_final_status) 251 FinalStatus expected_final_status)
247 : PrerenderContents(test_prerender_manager, prerender_tracker, 252 : PrerenderContents(test_prerender_manager,
248 NULL, url, Referrer(), origin, 253 NULL, url, Referrer(), origin,
249 PrerenderManager::kNoExperiment), 254 PrerenderManager::kNoExperiment),
255 route_id_(g_next_route_id_++),
250 test_prerender_manager_(test_prerender_manager), 256 test_prerender_manager_(test_prerender_manager),
251 expected_final_status_(expected_final_status) { 257 expected_final_status_(expected_final_status) {
252 } 258 }
253 259
254 void DummyPrerenderContents::StartPrerendering( 260 void DummyPrerenderContents::StartPrerendering(
255 int ALLOW_UNUSED creator_child_id, 261 int ALLOW_UNUSED creator_child_id,
256 const gfx::Size& ALLOW_UNUSED size, 262 const gfx::Size& ALLOW_UNUSED size,
257 content::SessionStorageNamespace* ALLOW_UNUSED session_storage_namespace, 263 content::SessionStorageNamespace* ALLOW_UNUSED session_storage_namespace,
258 bool is_control_group) { 264 bool is_control_group) {
259 // In the base PrerenderContents implementation, StartPrerendering will 265 // In the base PrerenderContents implementation, StartPrerendering will
260 // be called even when the PrerenderManager is part of the control group, 266 // be called even when the PrerenderManager is part of the control group,
261 // but it will early exit before actually creating a new RenderView if 267 // but it will early exit before actually creating a new RenderView if
262 // |is_control_group| is true; 268 // |is_control_group| is true;
263 if (!is_control_group) 269 if (!is_control_group)
264 prerendering_has_started_ = true; 270 prerendering_has_started_ = true;
265 load_start_time_ = test_prerender_manager_->GetCurrentTimeTicks(); 271 load_start_time_ = test_prerender_manager_->GetCurrentTimeTicks();
272 NotifyPrerenderStart();
mmenke 2012/12/06 19:54:22 We should not be running this in the control group
gavinp 2012/12/07 17:37:04 Done.
266 } 273 }
mmenke 2012/12/06 19:54:22 These two methods should be up in the anonymous na
gavinp 2012/12/07 17:37:04 Tricky. The functions reference the UnitTestPreren
mmenke 2012/12/07 19:21:16 Couldn't we just have PrerenderManager defriend Un
gavinp 2012/12/08 17:27:48 I think you're right, but it's out of scope for th
267 274
268 class PrerenderTest : public testing::Test { 275 class PrerenderTest : public testing::Test {
269 public: 276 public:
270 static const int kDefaultChildId = -1; 277 static const int kDefaultChildId = -1;
271 static const int kDefaultRenderViewRouteId = -1; 278 static const int kDefaultRenderViewRouteId = -1;
272 279
273 PrerenderTest() : ui_thread_(BrowserThread::UI, &message_loop_), 280 PrerenderTest() : ui_thread_(BrowserThread::UI, &message_loop_),
274 prerender_manager_(new UnitTestPrerenderManager( 281 prerender_manager_(new UnitTestPrerenderManager(
275 &profile_, prerender_tracker())), 282 &profile_, prerender_tracker())),
276 prerender_link_manager_( 283 prerender_link_manager_(
(...skipping 913 matching lines...) Expand 10 before | Expand all | Expand 10 after
1190 prerender_manager()->CreateNextPrerenderContents( 1197 prerender_manager()->CreateNextPrerenderContents(
1191 url, FINAL_STATUS_USED); 1198 url, FINAL_STATUS_USED);
1192 EXPECT_TRUE(AddSimplePrerender(url)); 1199 EXPECT_TRUE(AddSimplePrerender(url));
1193 EXPECT_TRUE(second_prerender_contents->prerendering_has_started()); 1200 EXPECT_TRUE(second_prerender_contents->prerendering_has_started());
1194 ASSERT_EQ(second_prerender_contents, 1201 ASSERT_EQ(second_prerender_contents,
1195 prerender_manager()->FindAndUseEntry(url)); 1202 prerender_manager()->FindAndUseEntry(url));
1196 EXPECT_FALSE(IsEmptyPrerenderLinkManager()); 1203 EXPECT_FALSE(IsEmptyPrerenderLinkManager());
1197 } 1204 }
1198 1205
1199 } // namespace prerender 1206 } // namespace prerender
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698