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

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: 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 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
47 47
48 virtual void StartPrerendering( 48 virtual void StartPrerendering(
49 int ALLOW_UNUSED creator_child_id, 49 int ALLOW_UNUSED creator_child_id,
50 const gfx::Size& ALLOW_UNUSED size, 50 const gfx::Size& ALLOW_UNUSED size,
51 content::SessionStorageNamespace* ALLOW_UNUSED session_storage_namespace, 51 content::SessionStorageNamespace* ALLOW_UNUSED session_storage_namespace,
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;
mmenke 2012/12/03 20:02:47 This is just weird. :( (Not asking you change it
gavinp 2012/12/04 18:04:48 Yes, it is.
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 s_next_route_id_;
mmenke 2012/12/03 20:02:47 I don't think I've seen a single static variable p
gavinp 2012/12/04 18:04:48 Done.
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::s_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 150 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_(s_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();
266 } 273 }
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())),
(...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after
350 url, 357 url,
351 FINAL_STATUS_USED); 358 FINAL_STATUS_USED);
352 EXPECT_TRUE(AddSimplePrerender(url)); 359 EXPECT_TRUE(AddSimplePrerender(url));
353 EXPECT_TRUE(prerender_contents->prerendering_has_started()); 360 EXPECT_TRUE(prerender_contents->prerendering_has_started());
354 361
355 scoped_ptr<PrerenderHandle> duplicate_prerender_handle( 362 scoped_ptr<PrerenderHandle> duplicate_prerender_handle(
356 prerender_manager()->AddPrerenderFromLinkRelPrerender( 363 prerender_manager()->AddPrerenderFromLinkRelPrerender(
357 kDefaultChildId, kDefaultRenderViewRouteId, url, 364 kDefaultChildId, kDefaultRenderViewRouteId, url,
358 Referrer(url, WebKit::WebReferrerPolicyDefault), kSize)); 365 Referrer(url, WebKit::WebReferrerPolicyDefault), kSize));
359 366
360 EXPECT_TRUE(duplicate_prerender_handle->IsValid());
361 EXPECT_TRUE(duplicate_prerender_handle->IsPrerendering()); 367 EXPECT_TRUE(duplicate_prerender_handle->IsPrerendering());
362 368
363 ASSERT_EQ(prerender_contents, prerender_manager()->FindAndUseEntry(url)); 369 ASSERT_EQ(prerender_contents, prerender_manager()->FindAndUseEntry(url));
364 370
365 EXPECT_FALSE(duplicate_prerender_handle->IsValid());
mmenke 2012/12/03 20:02:47 Why remove these?
gavinp 2012/12/04 18:04:48 No good reason. Fixed.
366 EXPECT_FALSE(duplicate_prerender_handle->IsPrerendering()); 371 EXPECT_FALSE(duplicate_prerender_handle->IsPrerendering());
367 } 372 }
368 373
369 // Make sure that if queue a request, and a second prerender request for the 374 // Make sure that if queue a request, and a second prerender request for the
370 // same URL comes in, that we drop the second request and keep the first one. 375 // same URL comes in, that we drop the second request and keep the first one.
371 TEST_F(PrerenderTest, DropSecondRequestTest) { 376 TEST_F(PrerenderTest, DropSecondRequestTest) {
372 GURL url("http://www.google.com/"); 377 GURL url("http://www.google.com/");
373 DummyPrerenderContents* prerender_contents = 378 DummyPrerenderContents* prerender_contents =
374 prerender_manager()->CreateNextPrerenderContents( 379 prerender_manager()->CreateNextPrerenderContents(
375 url, 380 url,
(...skipping 818 matching lines...) Expand 10 before | Expand all | Expand 10 after
1194 EXPECT_TRUE(AddSimplePrerender(url)); 1199 EXPECT_TRUE(AddSimplePrerender(url));
1195 EXPECT_TRUE(second_prerender_contents->prerendering_has_started()); 1200 EXPECT_TRUE(second_prerender_contents->prerendering_has_started());
1196 ASSERT_EQ(second_prerender_contents, 1201 ASSERT_EQ(second_prerender_contents,
1197 prerender_manager()->FindAndUseEntry(url)); 1202 prerender_manager()->FindAndUseEntry(url));
1198 EXPECT_FALSE(IsEmptyPrerenderLinkManager()); 1203 EXPECT_FALSE(IsEmptyPrerenderLinkManager());
1199 } 1204 }
1200 1205
1201 #endif // !(defined(OS_WIN) && defined(USE_AURA)) 1206 #endif // !(defined(OS_WIN) && defined(USE_AURA))
1202 1207
1203 } // namespace prerender 1208 } // namespace prerender
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698