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

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

Issue 10553029: Handle interface to prerenders. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: remediated, and cleaned up in prep for uploading for review Created 8 years, 5 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) 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/time.h" 8 #include "base/time.h"
9 #include "chrome/browser/prerender/prerender_contents.h" 9 #include "chrome/browser/prerender/prerender_contents.h"
10 #include "chrome/browser/prerender/prerender_handle.h"
10 #include "chrome/browser/prerender/prerender_link_manager.h" 11 #include "chrome/browser/prerender/prerender_link_manager.h"
11 #include "chrome/browser/prerender/prerender_manager.h" 12 #include "chrome/browser/prerender/prerender_manager.h"
12 #include "chrome/browser/prerender/prerender_origin.h" 13 #include "chrome/browser/prerender/prerender_origin.h"
13 #include "chrome/common/chrome_switches.h" 14 #include "chrome/common/chrome_switches.h"
14 #include "chrome/test/base/testing_browser_process.h" 15 #include "chrome/test/base/testing_browser_process.h"
15 #include "chrome/test/base/testing_profile.h" 16 #include "chrome/test/base/testing_profile.h"
16 #include "content/public/browser/render_view_host.h" 17 #include "content/public/browser/render_view_host.h"
17 #include "content/public/test/test_browser_thread.h" 18 #include "content/public/test/test_browser_thread.h"
18 #include "googleurl/src/gurl.h" 19 #include "googleurl/src/gurl.h"
19 #include "testing/gtest/include/gtest/gtest.h" 20 #include "testing/gtest/include/gtest/gtest.h"
20 #include "ui/gfx/size.h" 21 #include "ui/gfx/size.h"
21 22
22 using content::BrowserThread; 23 using content::BrowserThread;
23 using content::Referrer; 24 using content::Referrer;
24 25
25 namespace prerender { 26 namespace prerender {
26 27
27 namespace { 28 namespace {
28 29
30 class TestPrerenderManager;
31
29 class DummyPrerenderContents : public PrerenderContents { 32 class DummyPrerenderContents : public PrerenderContents {
30 public: 33 public:
31 DummyPrerenderContents(PrerenderManager* prerender_manager, 34 DummyPrerenderContents(TestPrerenderManager* test_prerender_manager,
32 PrerenderTracker* prerender_tracker, 35 PrerenderTracker* prerender_tracker,
33 const GURL& url, 36 const GURL& url,
34 Origin origin, 37 Origin origin,
35 FinalStatus expected_final_status) 38 FinalStatus expected_final_status);
36 : PrerenderContents(prerender_manager, prerender_tracker,
37 NULL, url, Referrer(), origin,
38 PrerenderManager::kNoExperiment),
39 expected_final_status_(expected_final_status) {
40 }
41 39
42 virtual ~DummyPrerenderContents() { 40 virtual ~DummyPrerenderContents() {
43 EXPECT_EQ(expected_final_status_, final_status()); 41 EXPECT_EQ(expected_final_status_, final_status());
44 } 42 }
45 43
46 virtual void StartPrerendering( 44 virtual void StartPrerendering(
47 int ALLOW_UNUSED creator_child_id, 45 int ALLOW_UNUSED creator_child_id,
48 const gfx::Size& ALLOW_UNUSED size, 46 const gfx::Size& ALLOW_UNUSED size,
49 content::SessionStorageNamespace* ALLOW_UNUSED session_storage_namespace, 47 content::SessionStorageNamespace* ALLOW_UNUSED session_storage_namespace,
50 bool is_control_group) OVERRIDE { 48 bool is_control_group) OVERRIDE;
51 // In the base PrerenderContents implementation, StartPrerendering will
52 // be called even when the PrerenderManager is part of the control group,
53 // but it will early exit before actually creating a new RenderView if
54 // |is_control_group| is true;
55 if (!is_control_group)
56 prerendering_has_started_ = true;
57 }
58 49
59 virtual bool GetChildId(int* child_id) const OVERRIDE { 50 virtual bool GetChildId(int* child_id) const OVERRIDE {
60 *child_id = 0; 51 *child_id = 0;
61 return true; 52 return true;
62 } 53 }
63 54
64 virtual bool GetRouteId(int* route_id) const OVERRIDE { 55 virtual bool GetRouteId(int* route_id) const OVERRIDE {
65 *route_id = 0; 56 *route_id = 0;
66 return true; 57 return true;
67 } 58 }
68 59
69 FinalStatus expected_final_status() const { return expected_final_status_; } 60 FinalStatus expected_final_status() const { return expected_final_status_; }
70 61
71 bool prerendering_has_been_cancelled() const { 62 bool prerendering_has_been_cancelled() const {
72 return PrerenderContents::prerendering_has_been_cancelled(); 63 return PrerenderContents::prerendering_has_been_cancelled();
73 } 64 }
74 65
75 private: 66 private:
67 TestPrerenderManager* test_prerender_manager_;
76 FinalStatus expected_final_status_; 68 FinalStatus expected_final_status_;
77 }; 69 };
78 70
79 class TestPrerenderManager : public PrerenderManager { 71 class TestPrerenderManager : public PrerenderManager {
80 public: 72 public:
73 using PrerenderManager::kNavigationRecordWindowMs;
dominich 2012/06/28 00:34:32 not sure why you need these using statements.
74 using PrerenderManager::GetMaxAge;
75
81 explicit TestPrerenderManager(PrerenderTracker* prerender_tracker) 76 explicit TestPrerenderManager(PrerenderTracker* prerender_tracker)
82 : PrerenderManager(&profile_, prerender_tracker), 77 : PrerenderManager(&profile_, prerender_tracker),
83 time_(base::Time::Now()), 78 time_(base::Time::Now()),
84 time_ticks_(base::TimeTicks::Now()), 79 time_ticks_(base::TimeTicks::Now()),
85 next_prerender_contents_(NULL), 80 next_prerender_contents_(NULL),
86 prerender_tracker_(prerender_tracker) { 81 prerender_tracker_(prerender_tracker) {
87 set_rate_limit_enabled(false); 82 set_rate_limit_enabled(false);
88 } 83 }
89 84
90 virtual ~TestPrerenderManager() { 85 virtual ~TestPrerenderManager() {
91 if (next_prerender_contents()) { 86 if (next_prerender_contents()) {
92 next_prerender_contents_.release()->Destroy( 87 next_prerender_contents_.release()->Destroy(
93 FINAL_STATUS_MANAGER_SHUTDOWN); 88 FINAL_STATUS_MANAGER_SHUTDOWN);
94 } 89 }
95 // Set the final status for all PrerenderContents with an expected final 90 DoShutdown();
96 // status of FINAL_STATUS_USED. These values are normally set when the 91 }
97 // prerendered RVH is swapped into a tab, which doesn't happen in these 92
98 // unit tests. 93 PrerenderContents* FindEntry(const GURL& url) {
99 for (ScopedVector<PrerenderContents>::iterator it = 94 return PrerenderManager::FindEntry(url, NULL);
100 used_prerender_contents_.begin(); 95 }
101 it != used_prerender_contents_.end(); ++it) { 96
102 (*it)->set_final_status(FINAL_STATUS_USED); 97 PrerenderContents* FindAndUseEntry(const GURL& url) {
98 if (PrerenderContents* contents = PrerenderManager::FindEntry(url, NULL)) {
99 PrerenderManager::TreatPrerenderAsUsedForTest(url, NULL);
100 return contents;
103 } 101 }
104 DoShutdown(); 102 ADD_FAILURE() << "Error, expected an entry for " << url;
103 return NULL;
105 } 104 }
106 105
107 void AdvanceTime(base::TimeDelta delta) { 106 void AdvanceTime(base::TimeDelta delta) {
108 time_ += delta; 107 time_ += delta;
109 } 108 }
110 109
111 void AdvanceTimeTicks(base::TimeDelta delta) { 110 void AdvanceTimeTicks(base::TimeDelta delta) {
112 time_ticks_ += delta; 111 time_ticks_ += delta;
113 } 112 }
114 113
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
152 } 151 }
153 152
154 void set_rate_limit_enabled(bool enabled) { 153 void set_rate_limit_enabled(bool enabled) {
155 mutable_config().rate_limit_enabled = enabled; 154 mutable_config().rate_limit_enabled = enabled;
156 } 155 }
157 156
158 PrerenderContents* next_prerender_contents() { 157 PrerenderContents* next_prerender_contents() {
159 return next_prerender_contents_.get(); 158 return next_prerender_contents_.get();
160 } 159 }
161 160
161 // from PrerenderManager
162 virtual base::Time GetCurrentTime() const OVERRIDE {
163 return time_;
164 }
165
166 virtual base::TimeTicks GetCurrentTimeTicks() const OVERRIDE {
167 return time_ticks_;
168 }
169
162 private: 170 private:
163 void SetNextPrerenderContents(DummyPrerenderContents* prerender_contents) { 171 void SetNextPrerenderContents(DummyPrerenderContents* prerender_contents) {
164 DCHECK(!next_prerender_contents_.get()); 172 DCHECK(!next_prerender_contents_.get());
165 next_prerender_contents_.reset(prerender_contents); 173 next_prerender_contents_.reset(prerender_contents);
166 if (prerender_contents->expected_final_status() == FINAL_STATUS_USED) 174 if (prerender_contents->expected_final_status() == FINAL_STATUS_USED)
167 used_prerender_contents_.push_back(prerender_contents); 175 used_prerender_contents_.push_back(prerender_contents);
168 } 176 }
169 177
170 virtual base::Time GetCurrentTime() const OVERRIDE {
171 return time_;
172 }
173
174 virtual base::TimeTicks GetCurrentTimeTicks() const OVERRIDE {
175 return time_ticks_;
176 }
177 178
178 virtual PrerenderContents* CreatePrerenderContents( 179 virtual PrerenderContents* CreatePrerenderContents(
179 const GURL& url, 180 const GURL& url,
180 const Referrer& referrer, 181 const Referrer& referrer,
181 Origin origin, 182 Origin origin,
182 uint8 experiment_id) OVERRIDE { 183 uint8 experiment_id) OVERRIDE {
183 DCHECK(next_prerender_contents_.get()); 184 DCHECK(next_prerender_contents_.get());
184 DCHECK_EQ(next_prerender_contents_->prerender_url(), url); 185 DCHECK_EQ(next_prerender_contents_->prerender_url(), url);
185 DCHECK_EQ(next_prerender_contents_->origin(), origin); 186 DCHECK_EQ(next_prerender_contents_->origin(), origin);
186 return next_prerender_contents_.release(); 187 return next_prerender_contents_.release();
(...skipping 14 matching lines...) Expand all
201 class RestorePrerenderMode { 202 class RestorePrerenderMode {
202 public: 203 public:
203 RestorePrerenderMode() : prev_mode_(PrerenderManager::GetMode()) { 204 RestorePrerenderMode() : prev_mode_(PrerenderManager::GetMode()) {
204 } 205 }
205 206
206 ~RestorePrerenderMode() { PrerenderManager::SetMode(prev_mode_); } 207 ~RestorePrerenderMode() { PrerenderManager::SetMode(prev_mode_); }
207 private: 208 private:
208 PrerenderManager::PrerenderManagerMode prev_mode_; 209 PrerenderManager::PrerenderManagerMode prev_mode_;
209 }; 210 };
210 211
212 DummyPrerenderContents::DummyPrerenderContents(
213 TestPrerenderManager* test_prerender_manager,
214 PrerenderTracker* prerender_tracker,
215 const GURL& url,
216 Origin origin,
217 FinalStatus expected_final_status)
218 : PrerenderContents(test_prerender_manager, prerender_tracker,
219 NULL, url, Referrer(), origin,
220 PrerenderManager::kNoExperiment),
221 test_prerender_manager_(test_prerender_manager),
222 expected_final_status_(expected_final_status) {
223 }
224
225 void DummyPrerenderContents::StartPrerendering(
226 int ALLOW_UNUSED creator_child_id,
227 const gfx::Size& ALLOW_UNUSED size,
228 content::SessionStorageNamespace* ALLOW_UNUSED session_storage_namespace,
229 bool is_control_group) {
230 // In the base PrerenderContents implementation, StartPrerendering will
231 // be called even when the PrerenderManager is part of the control group,
232 // but it will early exit before actually creating a new RenderView if
233 // |is_control_group| is true;
234 if (!is_control_group) {
235 prerendering_has_started_ = true;
236 }
237 load_start_time_ = test_prerender_manager_->GetCurrentTimeTicks();
dominich 2012/06/28 00:34:32 if this is all you need it for, maybe make GetCurr
238 }
239
211 } // namespace 240 } // namespace
212 241
213 class PrerenderTest : public testing::Test { 242 class PrerenderTest : public testing::Test {
214 public: 243 public:
215 static const int kDefaultChildId = -1; 244 static const int kDefaultChildId = -1;
216 static const int kDefaultRenderViewRouteId = -1; 245 static const int kDefaultRenderViewRouteId = -1;
217 246
218 PrerenderTest() : ui_thread_(BrowserThread::UI, &message_loop_), 247 PrerenderTest() : ui_thread_(BrowserThread::UI, &message_loop_),
219 prerender_manager_( 248 prerender_manager_(
220 new TestPrerenderManager(prerender_tracker())), 249 new TestPrerenderManager(prerender_tracker())),
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
261 } 290 }
262 291
263 // Needed to pass PrerenderManager's DCHECKs. 292 // Needed to pass PrerenderManager's DCHECKs.
264 MessageLoop message_loop_; 293 MessageLoop message_loop_;
265 content::TestBrowserThread ui_thread_; 294 content::TestBrowserThread ui_thread_;
266 scoped_ptr<TestPrerenderManager> prerender_manager_; 295 scoped_ptr<TestPrerenderManager> prerender_manager_;
267 scoped_ptr<PrerenderLinkManager> prerender_link_manager_; 296 scoped_ptr<PrerenderLinkManager> prerender_link_manager_;
268 int last_prerender_id_; 297 int last_prerender_id_;
269 }; 298 };
270 299
271 TEST_F(PrerenderTest, EmptyTest) {
272 EXPECT_FALSE(prerender_manager()->MaybeUsePrerenderedPage(
273 NULL,
274 GURL("http://www.google.com/")));
275 }
276
277 TEST_F(PrerenderTest, FoundTest) { 300 TEST_F(PrerenderTest, FoundTest) {
278 GURL url("http://www.google.com/"); 301 GURL url("http://www.google.com/");
279 DummyPrerenderContents* prerender_contents = 302 DummyPrerenderContents* prerender_contents =
280 prerender_manager()->CreateNextPrerenderContents( 303 prerender_manager()->CreateNextPrerenderContents(
281 url, 304 url,
282 FINAL_STATUS_USED); 305 FINAL_STATUS_USED);
283 EXPECT_TRUE(AddSimplePrerender(url)); 306 EXPECT_TRUE(AddSimplePrerender(url));
284 EXPECT_TRUE(prerender_contents->prerendering_has_started()); 307 EXPECT_TRUE(prerender_contents->prerendering_has_started());
285 ASSERT_EQ(prerender_contents, prerender_manager()->GetEntry(url)); 308 ASSERT_EQ(prerender_contents, prerender_manager()->FindAndUseEntry(url));
286 } 309 }
287 310
288 // Make sure that if queue a request, and a second prerender request for the 311 // Make sure that if queue a request, and a second prerender request for the
289 // same URL comes in, that we drop the second request and keep the first one. 312 // same URL comes in, that we drop the second request and keep the first one.
290 TEST_F(PrerenderTest, DropSecondRequestTest) { 313 TEST_F(PrerenderTest, DropSecondRequestTest) {
291 GURL url("http://www.google.com/"); 314 GURL url("http://www.google.com/");
292 DummyPrerenderContents* prerender_contents = 315 DummyPrerenderContents* prerender_contents =
293 prerender_manager()->CreateNextPrerenderContents( 316 prerender_manager()->CreateNextPrerenderContents(
294 url, 317 url,
295 FINAL_STATUS_USED); 318 FINAL_STATUS_USED);
296 DummyPrerenderContents* null = NULL; 319 DummyPrerenderContents* null = NULL;
297 EXPECT_TRUE(AddSimplePrerender(url)); 320 EXPECT_TRUE(AddSimplePrerender(url));
298 EXPECT_EQ(null, prerender_manager()->next_prerender_contents()); 321 EXPECT_EQ(null, prerender_manager()->next_prerender_contents());
299 EXPECT_TRUE(prerender_contents->prerendering_has_started()); 322 EXPECT_TRUE(prerender_contents->prerendering_has_started());
300 323
301 DummyPrerenderContents* prerender_contents1 = 324 DummyPrerenderContents* prerender_contents1 =
302 prerender_manager()->CreateNextPrerenderContents( 325 prerender_manager()->CreateNextPrerenderContents(
303 url, 326 url,
304 FINAL_STATUS_MANAGER_SHUTDOWN); 327 FINAL_STATUS_MANAGER_SHUTDOWN);
305 EXPECT_TRUE(AddSimplePrerender(url)); 328 EXPECT_TRUE(AddSimplePrerender(url));
306 EXPECT_EQ(prerender_contents1, 329 EXPECT_EQ(prerender_contents1,
307 prerender_manager()->next_prerender_contents()); 330 prerender_manager()->next_prerender_contents());
308 EXPECT_FALSE(prerender_contents1->prerendering_has_started()); 331 EXPECT_FALSE(prerender_contents1->prerendering_has_started());
309 332
310 ASSERT_EQ(prerender_contents, prerender_manager()->GetEntry(url)); 333 ASSERT_EQ(prerender_contents, prerender_manager()->FindAndUseEntry(url));
311 } 334 }
312 335
313 // Ensure that we expire a prerendered page after the max. permitted time. 336 // Ensure that we expire a prerendered page after the max. permitted time.
314 TEST_F(PrerenderTest, ExpireTest) { 337 TEST_F(PrerenderTest, ExpireTest) {
315 GURL url("http://www.google.com/"); 338 GURL url("http://www.google.com/");
316 DummyPrerenderContents* prerender_contents = 339 DummyPrerenderContents* prerender_contents =
317 prerender_manager()->CreateNextPrerenderContents( 340 prerender_manager()->CreateNextPrerenderContents(
318 url, 341 url,
319 FINAL_STATUS_TIMED_OUT); 342 FINAL_STATUS_TIMED_OUT);
320 DummyPrerenderContents* null = NULL; 343 DummyPrerenderContents* null = NULL;
321 EXPECT_TRUE(AddSimplePrerender(url)); 344 EXPECT_TRUE(AddSimplePrerender(url));
322 EXPECT_EQ(null, prerender_manager()->next_prerender_contents()); 345 EXPECT_EQ(null, prerender_manager()->next_prerender_contents());
323 EXPECT_TRUE(prerender_contents->prerendering_has_started()); 346 EXPECT_TRUE(prerender_contents->prerendering_has_started());
324 prerender_manager()->AdvanceTime(prerender_manager()->GetMaxAge() + 347 prerender_manager()->AdvanceTimeTicks(prerender_manager()->GetMaxAge() +
325 base::TimeDelta::FromSeconds(1)); 348 base::TimeDelta::FromSeconds(1));
326 ASSERT_EQ(null, prerender_manager()->GetEntry(url)); 349 ASSERT_EQ(null, prerender_manager()->FindEntry(url));
327 } 350 }
328 351
329 // LRU Test. Make sure that if we prerender more than one request, that 352 // LRU Test. Make sure that if we prerender more than one request, that
330 // the oldest one will be dropped. 353 // the oldest one will be dropped.
331 TEST_F(PrerenderTest, DropOldestRequestTest) { 354 TEST_F(PrerenderTest, DropOldestRequestTest) {
332 GURL url("http://www.google.com/"); 355 GURL url("http://www.google.com/");
333 DummyPrerenderContents* prerender_contents = 356 DummyPrerenderContents* prerender_contents =
334 prerender_manager()->CreateNextPrerenderContents( 357 prerender_manager()->CreateNextPrerenderContents(
335 url, 358 url,
336 FINAL_STATUS_EVICTED); 359 FINAL_STATUS_EVICTED);
337 DummyPrerenderContents* null = NULL; 360 DummyPrerenderContents* null = NULL;
338 EXPECT_TRUE(AddSimplePrerender(url)); 361 EXPECT_TRUE(AddSimplePrerender(url));
339 EXPECT_EQ(null, prerender_manager()->next_prerender_contents()); 362 EXPECT_EQ(null, prerender_manager()->next_prerender_contents());
340 EXPECT_TRUE(prerender_contents->prerendering_has_started()); 363 EXPECT_TRUE(prerender_contents->prerendering_has_started());
341 364
342 GURL url1("http://news.google.com/"); 365 GURL url1("http://news.google.com/");
343 DummyPrerenderContents* prerender_contents1 = 366 DummyPrerenderContents* prerender_contents1 =
344 prerender_manager()->CreateNextPrerenderContents( 367 prerender_manager()->CreateNextPrerenderContents(
345 url1, 368 url1,
346 FINAL_STATUS_USED); 369 FINAL_STATUS_USED);
347 EXPECT_TRUE(AddSimplePrerender(url1)); 370 EXPECT_TRUE(AddSimplePrerender(url1));
348 EXPECT_EQ(null, prerender_manager()->next_prerender_contents()); 371 EXPECT_EQ(null, prerender_manager()->next_prerender_contents());
349 EXPECT_TRUE(prerender_contents1->prerendering_has_started()); 372 EXPECT_TRUE(prerender_contents1->prerendering_has_started());
350 373
351 ASSERT_EQ(null, prerender_manager()->GetEntry(url)); 374 ASSERT_EQ(null, prerender_manager()->FindEntry(url));
352 ASSERT_EQ(prerender_contents1, prerender_manager()->GetEntry(url1)); 375 ASSERT_EQ(prerender_contents1, prerender_manager()->FindAndUseEntry(url1));
353 } 376 }
354 377
355 // Two element prerender test. Ensure that the LRU operates correctly if we 378 // Two element prerender test. Ensure that the LRU operates correctly if we
356 // permit 2 elements to be kept prerendered. 379 // permit 2 elements to be kept prerendered.
357 TEST_F(PrerenderTest, TwoElementPrerenderTest) { 380 TEST_F(PrerenderTest, TwoElementPrerenderTest) {
358 prerender_manager()->mutable_config().max_elements = 2; 381 prerender_manager()->mutable_config().max_elements = 2;
359 GURL url("http://www.google.com/"); 382 GURL url("http://www.google.com/");
360 DummyPrerenderContents* prerender_contents = 383 DummyPrerenderContents* prerender_contents =
361 prerender_manager()->CreateNextPrerenderContents( 384 prerender_manager()->CreateNextPrerenderContents(
362 url, 385 url,
(...skipping 14 matching lines...) Expand all
377 400
378 GURL url2("http://images.google.com/"); 401 GURL url2("http://images.google.com/");
379 DummyPrerenderContents* prerender_contents2 = 402 DummyPrerenderContents* prerender_contents2 =
380 prerender_manager()->CreateNextPrerenderContents( 403 prerender_manager()->CreateNextPrerenderContents(
381 url2, 404 url2,
382 FINAL_STATUS_USED); 405 FINAL_STATUS_USED);
383 EXPECT_TRUE(AddSimplePrerender(url2)); 406 EXPECT_TRUE(AddSimplePrerender(url2));
384 EXPECT_EQ(null, prerender_manager()->next_prerender_contents()); 407 EXPECT_EQ(null, prerender_manager()->next_prerender_contents());
385 EXPECT_TRUE(prerender_contents2->prerendering_has_started()); 408 EXPECT_TRUE(prerender_contents2->prerendering_has_started());
386 409
387 ASSERT_EQ(null, prerender_manager()->GetEntry(url)); 410 ASSERT_EQ(null, prerender_manager()->FindEntry(url));
388 ASSERT_EQ(prerender_contents1, prerender_manager()->GetEntry(url1)); 411 ASSERT_EQ(prerender_contents1, prerender_manager()->FindAndUseEntry(url1));
389 ASSERT_EQ(prerender_contents2, prerender_manager()->GetEntry(url2)); 412 ASSERT_EQ(prerender_contents2, prerender_manager()->FindAndUseEntry(url2));
390 } 413 }
391 414
392 TEST_F(PrerenderTest, AliasURLTest) { 415 TEST_F(PrerenderTest, AliasURLTest) {
393 GURL url("http://www.google.com/"); 416 GURL url("http://www.google.com/");
394 GURL alias_url1("http://www.google.com/index.html"); 417 GURL alias_url1("http://www.google.com/index.html");
395 GURL alias_url2("http://google.com/"); 418 GURL alias_url2("http://google.com/");
396 GURL not_an_alias_url("http://google.com/index.html"); 419 GURL not_an_alias_url("http://google.com/index.html");
397 std::vector<GURL> alias_urls; 420 std::vector<GURL> alias_urls;
398 alias_urls.push_back(alias_url1); 421 alias_urls.push_back(alias_url1);
399 alias_urls.push_back(alias_url2); 422 alias_urls.push_back(alias_url2);
400 423
401 // Test that all of the aliases work, but not_an_alias_url does not. 424 // Test that all of the aliases work, but not_an_alias_url does not.
402 DummyPrerenderContents* prerender_contents = 425 DummyPrerenderContents* prerender_contents =
403 prerender_manager()->CreateNextPrerenderContents( 426 prerender_manager()->CreateNextPrerenderContents(
404 url, alias_urls, FINAL_STATUS_USED); 427 url, alias_urls, FINAL_STATUS_USED);
405 EXPECT_TRUE(AddSimplePrerender(url)); 428 EXPECT_TRUE(AddSimplePrerender(url));
406 ASSERT_EQ(NULL, prerender_manager()->GetEntry(not_an_alias_url)); 429 ASSERT_EQ(NULL, prerender_manager()->FindEntry(not_an_alias_url));
407 ASSERT_EQ(prerender_contents, prerender_manager()->GetEntry(alias_url1)); 430 ASSERT_EQ(prerender_contents,
431 prerender_manager()->FindAndUseEntry(alias_url1));
408 prerender_contents = prerender_manager()->CreateNextPrerenderContents( 432 prerender_contents = prerender_manager()->CreateNextPrerenderContents(
409 url, alias_urls, FINAL_STATUS_USED); 433 url, alias_urls, FINAL_STATUS_USED);
410 EXPECT_TRUE(AddSimplePrerender(url)); 434 EXPECT_TRUE(AddSimplePrerender(url));
411 ASSERT_EQ(prerender_contents, prerender_manager()->GetEntry(alias_url2)); 435 ASSERT_EQ(prerender_contents,
436 prerender_manager()->FindAndUseEntry(alias_url2));
412 prerender_contents = prerender_manager()->CreateNextPrerenderContents( 437 prerender_contents = prerender_manager()->CreateNextPrerenderContents(
413 url, alias_urls, FINAL_STATUS_USED); 438 url, alias_urls, FINAL_STATUS_USED);
414 EXPECT_TRUE(AddSimplePrerender(url)); 439 EXPECT_TRUE(AddSimplePrerender(url));
415 ASSERT_EQ(prerender_contents, prerender_manager()->GetEntry(url)); 440 ASSERT_EQ(prerender_contents, prerender_manager()->FindAndUseEntry(url));
416 441
417 // Test that alias URLs can not be added. 442 // Test that alias URLs can not be added.
418 prerender_contents = prerender_manager()->CreateNextPrerenderContents( 443 prerender_contents = prerender_manager()->CreateNextPrerenderContents(
419 url, alias_urls, FINAL_STATUS_USED); 444 url, alias_urls, FINAL_STATUS_USED);
420 EXPECT_TRUE(AddSimplePrerender(url)); 445 EXPECT_TRUE(AddSimplePrerender(url));
421 EXPECT_TRUE(AddSimplePrerender(url)); 446 EXPECT_TRUE(AddSimplePrerender(url));
422 EXPECT_TRUE(AddSimplePrerender(alias_url1)); 447 EXPECT_TRUE(AddSimplePrerender(alias_url1));
423 EXPECT_TRUE(AddSimplePrerender(alias_url2)); 448 EXPECT_TRUE(AddSimplePrerender(alias_url2));
424 ASSERT_EQ(prerender_contents, prerender_manager()->GetEntry(url)); 449 ASSERT_EQ(prerender_contents, prerender_manager()->FindAndUseEntry(url));
425 } 450 }
426 451
427 // Ensure that we ignore prerender requests within the rate limit. 452 // Ensure that we ignore prerender requests within the rate limit.
428 TEST_F(PrerenderTest, RateLimitInWindowTest) { 453 TEST_F(PrerenderTest, RateLimitInWindowTest) {
429 GURL url("http://www.google.com/"); 454 GURL url("http://www.google.com/");
430 DummyPrerenderContents* prerender_contents = 455 DummyPrerenderContents* prerender_contents =
431 prerender_manager()->CreateNextPrerenderContents( 456 prerender_manager()->CreateNextPrerenderContents(
432 url, 457 url,
433 FINAL_STATUS_MANAGER_SHUTDOWN); 458 FINAL_STATUS_MANAGER_SHUTDOWN);
434 DummyPrerenderContents* null = NULL; 459 DummyPrerenderContents* null = NULL;
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
482 FINAL_STATUS_USED); 507 FINAL_STATUS_USED);
483 EXPECT_TRUE(AddSimplePrerender(url)); 508 EXPECT_TRUE(AddSimplePrerender(url));
484 509
485 int child_id; 510 int child_id;
486 int route_id; 511 int route_id;
487 ASSERT_TRUE(prerender_contents->GetChildId(&child_id)); 512 ASSERT_TRUE(prerender_contents->GetChildId(&child_id));
488 ASSERT_TRUE(prerender_contents->GetRouteId(&route_id)); 513 ASSERT_TRUE(prerender_contents->GetRouteId(&route_id));
489 514
490 GURL pending_url("http://news.google.com/"); 515 GURL pending_url("http://news.google.com/");
491 516
492 EXPECT_TRUE(prerender_manager()->AddPrerenderFromLinkRelPrerender( 517 PrerenderHandle prerender_handle =
493 child_id, route_id, 518 prerender_manager()->AddPrerenderFromLinkRelPrerender(
494 pending_url, Referrer(url, WebKit::WebReferrerPolicyDefault), 519 child_id, route_id, pending_url,
495 gfx::Size())); 520 Referrer(url, WebKit::WebReferrerPolicyDefault), gfx::Size());
496 521 EXPECT_TRUE(prerender_handle);
497 EXPECT_TRUE(prerender_manager()->IsPendingEntry(pending_url)); 522 EXPECT_TRUE(prerender_handle && prerender_handle->IsPending());
498 EXPECT_TRUE(prerender_contents->prerendering_has_started()); 523 EXPECT_TRUE(prerender_contents->prerendering_has_started());
499 ASSERT_EQ(prerender_contents, prerender_manager()->GetEntry(url)); 524 ASSERT_EQ(prerender_contents, prerender_manager()->FindAndUseEntry(url));
500 } 525 }
501 526
502 // Tests that a PrerenderManager created for a browser session in the control 527 // Tests that a PrerenderManager created for a browser session in the control
503 // group works as expected. 528 // group works as expected.
504 TEST_F(PrerenderTest, ControlGroup) { 529 TEST_F(PrerenderTest, ControlGroup) {
505 RestorePrerenderMode restore_prerender_mode; 530 RestorePrerenderMode restore_prerender_mode;
506 PrerenderManager::SetMode( 531 PrerenderManager::SetMode(
507 PrerenderManager::PRERENDER_MODE_EXPERIMENT_CONTROL_GROUP); 532 PrerenderManager::PRERENDER_MODE_EXPERIMENT_CONTROL_GROUP);
508 GURL url("http://www.google.com/"); 533 GURL url("http://www.google.com/");
509 DummyPrerenderContents* prerender_contents = 534 DummyPrerenderContents* prerender_contents =
(...skipping 30 matching lines...) Expand all
540 EXPECT_FALSE(AddSimplePrerender(url)); 565 EXPECT_FALSE(AddSimplePrerender(url));
541 EXPECT_FALSE(prerender_contents->prerendering_has_started()); 566 EXPECT_FALSE(prerender_contents->prerendering_has_started());
542 } 567 }
543 568
544 TEST_F(PrerenderTest, NotSoRecentlyVisited) { 569 TEST_F(PrerenderTest, NotSoRecentlyVisited) {
545 GURL url("http://www.google.com/"); 570 GURL url("http://www.google.com/");
546 571
547 prerender_manager()->RecordNavigation(url); 572 prerender_manager()->RecordNavigation(url);
548 prerender_manager()->AdvanceTimeTicks( 573 prerender_manager()->AdvanceTimeTicks(
549 base::TimeDelta::FromMilliseconds( 574 base::TimeDelta::FromMilliseconds(
550 PrerenderManager::kNavigationRecordWindowMs + 500)); 575 TestPrerenderManager::kNavigationRecordWindowMs + 500));
551 576
552 DummyPrerenderContents* prerender_contents = 577 DummyPrerenderContents* prerender_contents =
553 prerender_manager()->CreateNextPrerenderContents( 578 prerender_manager()->CreateNextPrerenderContents(
554 url, FINAL_STATUS_USED); 579 url, FINAL_STATUS_USED);
555 EXPECT_TRUE(AddSimplePrerender(url)); 580 EXPECT_TRUE(AddSimplePrerender(url));
556 EXPECT_TRUE(prerender_contents->prerendering_has_started()); 581 EXPECT_TRUE(prerender_contents->prerendering_has_started());
557 ASSERT_EQ(prerender_contents, prerender_manager()->GetEntry(url)); 582 ASSERT_EQ(prerender_contents, prerender_manager()->FindAndUseEntry(url));
558 } 583 }
559 584
560 // Tests that our PPLT dummy prerender gets created properly. 585 // Tests that our PPLT dummy prerender gets created properly.
561 TEST_F(PrerenderTest, PPLTDummy) { 586 TEST_F(PrerenderTest, PPLTDummy) {
562 GURL url("http://www.google.com/"); 587 GURL url("http://www.google.com/");
563 DummyPrerenderContents* prerender_contents = 588 DummyPrerenderContents* prerender_contents =
564 prerender_manager()->CreateNextPrerenderContents( 589 prerender_manager()->CreateNextPrerenderContents(
565 url, FINAL_STATUS_UNSUPPORTED_SCHEME); 590 url, FINAL_STATUS_UNSUPPORTED_SCHEME);
566 EXPECT_TRUE(AddSimplePrerender(url)); 591 EXPECT_TRUE(AddSimplePrerender(url));
567 EXPECT_TRUE(prerender_contents->prerendering_has_started()); 592 EXPECT_TRUE(prerender_contents->prerendering_has_started());
568 593
569 DummyPrerenderContents* pplt_dummy_contents = 594 DummyPrerenderContents* pplt_dummy_contents =
570 prerender_manager()->CreateNextPrerenderContents(url, 595 prerender_manager()->CreateNextPrerenderContents(url,
571 FINAL_STATUS_USED); 596 FINAL_STATUS_USED);
572 GURL ftp_url("ftp://ftp.google.com/"); 597 GURL ftp_url("ftp://ftp.google.com/");
573 // Adding this ftp URL will force the expected unsupported scheme error. 598 // Adding this ftp URL will force the expected unsupported scheme error.
574 prerender_contents->AddAliasURL(ftp_url); 599 prerender_contents->AddAliasURL(ftp_url);
575 600
576 ASSERT_EQ(pplt_dummy_contents, prerender_manager()->GetEntry(url)); 601 ASSERT_EQ(pplt_dummy_contents, prerender_manager()->FindAndUseEntry(url));
577 } 602 }
578 603
579 // Tests that our PPLT dummy prerender gets created properly, even 604 // Tests that our PPLT dummy prerender gets created properly, even
580 // when navigating to a page that has been recently navigated to. 605 // when navigating to a page that has been recently navigated to.
581 TEST_F(PrerenderTest, RecentlyVisitedPPLTDummy) { 606 TEST_F(PrerenderTest, RecentlyVisitedPPLTDummy) {
582 GURL url("http://www.google.com/"); 607 GURL url("http://www.google.com/");
583 DummyPrerenderContents* prerender_contents = 608 DummyPrerenderContents* prerender_contents =
584 prerender_manager()->CreateNextPrerenderContents( 609 prerender_manager()->CreateNextPrerenderContents(
585 url, FINAL_STATUS_UNSUPPORTED_SCHEME); 610 url, FINAL_STATUS_UNSUPPORTED_SCHEME);
586 EXPECT_TRUE(AddSimplePrerender(url)); 611 EXPECT_TRUE(AddSimplePrerender(url));
587 EXPECT_TRUE(prerender_contents->prerendering_has_started()); 612 EXPECT_TRUE(prerender_contents->prerendering_has_started());
588 613
589 DummyPrerenderContents* pplt_dummy_contents = 614 DummyPrerenderContents* pplt_dummy_contents =
590 prerender_manager()->CreateNextPrerenderContents(url, 615 prerender_manager()->CreateNextPrerenderContents(url,
591 FINAL_STATUS_USED); 616 FINAL_STATUS_USED);
592 prerender_manager()->RecordNavigation(url); 617 prerender_manager()->RecordNavigation(url);
593 GURL ftp_url("ftp://ftp.google.com/"); 618 GURL ftp_url("ftp://ftp.google.com/");
594 prerender_contents->AddAliasURL(ftp_url); 619 prerender_contents->AddAliasURL(ftp_url);
595 620
596 ASSERT_EQ(pplt_dummy_contents, prerender_manager()->GetEntry(url)); 621 ASSERT_EQ(pplt_dummy_contents, prerender_manager()->FindAndUseEntry(url));
597 }
598
599 // Tests that the prerender manager ignores fragment references when matching
600 // prerender URLs in the case the fragment is not in the prerender URL.
601 TEST_F(PrerenderTest, PageMatchesFragmentTest) {
dominich 2012/06/28 00:34:32 Maybe it's worth reversing these tests and keeping
602 GURL url("http://www.google.com/");
603 GURL fragment_url("http://www.google.com/#test");
604
605 DummyPrerenderContents* prerender_contents =
606 prerender_manager()->CreateNextPrerenderContents(url,
607 FINAL_STATUS_USED);
608 EXPECT_TRUE(AddSimplePrerender(url));
609 EXPECT_TRUE(prerender_contents->prerendering_has_started());
610 ASSERT_EQ(prerender_contents, prerender_manager()->GetEntry(fragment_url));
611 }
612
613 // Tests that the prerender manager ignores fragment references when matching
614 // prerender URLs in the case the fragment is in the prerender URL.
615 // TODO(gavinp): Re-enable this in the Prerender API once we're officially
616 // fragment clean.
617 TEST_F(PrerenderTest, DISABLED_FragmentMatchesPageTest) {
618 GURL url("http://www.google.com/");
619 GURL fragment_url("http://www.google.com/#test");
620
621 DummyPrerenderContents* prerender_contents =
622 prerender_manager()->CreateNextPrerenderContents(fragment_url,
623 FINAL_STATUS_USED);
624 EXPECT_TRUE(AddSimplePrerender(fragment_url));
625 EXPECT_TRUE(prerender_contents->prerendering_has_started());
626 ASSERT_EQ(prerender_contents, prerender_manager()->GetEntry(url));
627 }
628
629 // Tests that the prerender manager ignores fragment references when matching
630 // prerender URLs in the case the fragment is in both URLs.
631 // TODO(gavinp): Re-enable this in the Prerender API once we're officially
632 // fragment clean.
633 TEST_F(PrerenderTest, DISABLED_FragmentMatchesFragmentTest) {
634 GURL fragment_url("http://www.google.com/#test");
635 GURL other_fragment_url("http://www.google.com/#other_test");
636
637 DummyPrerenderContents* prerender_contents =
638 prerender_manager()->CreateNextPrerenderContents(fragment_url,
639 FINAL_STATUS_USED);
640 EXPECT_TRUE(AddSimplePrerender(fragment_url));
641 EXPECT_TRUE(prerender_contents->prerendering_has_started());
642 ASSERT_EQ(prerender_contents,
643 prerender_manager()->GetEntry(other_fragment_url));
644 } 622 }
645 623
646 // Make sure that clearing works as expected. 624 // Make sure that clearing works as expected.
647 TEST_F(PrerenderTest, ClearTest) { 625 TEST_F(PrerenderTest, ClearTest) {
648 GURL url("http://www.google.com/"); 626 GURL url("http://www.google.com/");
649 DummyPrerenderContents* prerender_contents = 627 DummyPrerenderContents* prerender_contents =
650 prerender_manager()->CreateNextPrerenderContents( 628 prerender_manager()->CreateNextPrerenderContents(
651 url, 629 url,
652 FINAL_STATUS_CACHE_OR_HISTORY_CLEARED); 630 FINAL_STATUS_CACHE_OR_HISTORY_CLEARED);
653 EXPECT_TRUE(AddSimplePrerender(url)); 631 EXPECT_TRUE(AddSimplePrerender(url));
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
693 671
694 EXPECT_TRUE(prerender_contents->prerendering_has_started()); 672 EXPECT_TRUE(prerender_contents->prerendering_has_started());
695 EXPECT_FALSE(prerender_contents->prerendering_has_been_cancelled()); 673 EXPECT_FALSE(prerender_contents->prerendering_has_been_cancelled());
696 ASSERT_EQ(prerender_contents, prerender_manager()->FindEntry(url)); 674 ASSERT_EQ(prerender_contents, prerender_manager()->FindEntry(url));
697 EXPECT_FALSE(IsEmptyPrerenderLinkManager()); 675 EXPECT_FALSE(IsEmptyPrerenderLinkManager());
698 prerender_link_manager()->OnCancelPrerender(kDefaultChildId, 676 prerender_link_manager()->OnCancelPrerender(kDefaultChildId,
699 last_prerender_id()); 677 last_prerender_id());
700 678
701 EXPECT_TRUE(prerender_contents->prerendering_has_been_cancelled()); 679 EXPECT_TRUE(prerender_contents->prerendering_has_been_cancelled());
702 DummyPrerenderContents* null = NULL; 680 DummyPrerenderContents* null = NULL;
703 ASSERT_EQ(null, prerender_manager()->GetEntry(url)); 681 ASSERT_EQ(null, prerender_manager()->FindEntry(url));
704 EXPECT_TRUE(IsEmptyPrerenderLinkManager()); 682 EXPECT_TRUE(IsEmptyPrerenderLinkManager());
705 } 683 }
706 684
707 TEST_F(PrerenderTest, LinkManagerCancelThenAbandon) { 685 TEST_F(PrerenderTest, LinkManagerCancelThenAbandon) {
708 EXPECT_TRUE(IsEmptyPrerenderLinkManager()); 686 EXPECT_TRUE(IsEmptyPrerenderLinkManager());
709 GURL url("http://www.myexample.com"); 687 GURL url("http://www.myexample.com");
710 DummyPrerenderContents* prerender_contents = 688 DummyPrerenderContents* prerender_contents =
711 prerender_manager()->CreateNextPrerenderContents( 689 prerender_manager()->CreateNextPrerenderContents(
712 url, FINAL_STATUS_CANCELLED); 690 url, FINAL_STATUS_CANCELLED);
713 691
714 EXPECT_TRUE(AddSimplePrerender(url)); 692 EXPECT_TRUE(AddSimplePrerender(url));
715 693
716 EXPECT_TRUE(prerender_contents->prerendering_has_started()); 694 EXPECT_TRUE(prerender_contents->prerendering_has_started());
717 EXPECT_FALSE(prerender_contents->prerendering_has_been_cancelled()); 695 EXPECT_FALSE(prerender_contents->prerendering_has_been_cancelled());
718 ASSERT_EQ(prerender_contents, prerender_manager()->FindEntry(url)); 696 ASSERT_EQ(prerender_contents, prerender_manager()->FindEntry(url));
719 EXPECT_FALSE(IsEmptyPrerenderLinkManager()); 697 EXPECT_FALSE(IsEmptyPrerenderLinkManager());
720 prerender_link_manager()->OnCancelPrerender(kDefaultChildId, 698 prerender_link_manager()->OnCancelPrerender(kDefaultChildId,
721 last_prerender_id()); 699 last_prerender_id());
722 700
723 EXPECT_TRUE(IsEmptyPrerenderLinkManager()); 701 EXPECT_TRUE(IsEmptyPrerenderLinkManager());
724 EXPECT_TRUE(prerender_contents->prerendering_has_been_cancelled()); 702 EXPECT_TRUE(prerender_contents->prerendering_has_been_cancelled());
725 prerender_link_manager()->OnAbandonPrerender(kDefaultChildId, 703 prerender_link_manager()->OnAbandonPrerender(kDefaultChildId,
726 last_prerender_id()); 704 last_prerender_id());
727 705
728 EXPECT_TRUE(IsEmptyPrerenderLinkManager()); 706 EXPECT_TRUE(IsEmptyPrerenderLinkManager());
729 EXPECT_TRUE(prerender_contents->prerendering_has_been_cancelled()); 707 EXPECT_TRUE(prerender_contents->prerendering_has_been_cancelled());
730 DummyPrerenderContents* null = NULL; 708 DummyPrerenderContents* null = NULL;
731 ASSERT_EQ(null, prerender_manager()->GetEntry(url)); 709 ASSERT_EQ(null, prerender_manager()->FindEntry(url));
732 } 710 }
733 711
734 // TODO(gavinp): Update this test after abandon has an effect on Prerenders, 712 // TODO(gavinp): Update this test after abandon has an effect on Prerenders,
735 // like shortening the timeouts. 713 // like shortening the timeouts.
736 TEST_F(PrerenderTest, LinkManagerAbandon) { 714 TEST_F(PrerenderTest, LinkManagerAbandon) {
737 EXPECT_TRUE(IsEmptyPrerenderLinkManager()); 715 EXPECT_TRUE(IsEmptyPrerenderLinkManager());
738 GURL url("http://www.myexample.com"); 716 GURL url("http://www.myexample.com");
739 DummyPrerenderContents* prerender_contents = 717 DummyPrerenderContents* prerender_contents =
740 prerender_manager()->CreateNextPrerenderContents( 718 prerender_manager()->CreateNextPrerenderContents(
741 url, FINAL_STATUS_USED); 719 url, FINAL_STATUS_USED);
742 720
743 EXPECT_TRUE(AddSimplePrerender(url)); 721 EXPECT_TRUE(AddSimplePrerender(url));
744 722
745 EXPECT_TRUE(prerender_contents->prerendering_has_started()); 723 EXPECT_TRUE(prerender_contents->prerendering_has_started());
746 EXPECT_FALSE(prerender_contents->prerendering_has_been_cancelled()); 724 EXPECT_FALSE(prerender_contents->prerendering_has_been_cancelled());
747 ASSERT_EQ(prerender_contents, prerender_manager()->FindEntry(url)); 725 ASSERT_EQ(prerender_contents, prerender_manager()->FindEntry(url));
748 EXPECT_FALSE(IsEmptyPrerenderLinkManager()); 726 EXPECT_FALSE(IsEmptyPrerenderLinkManager());
749 prerender_link_manager()->OnAbandonPrerender(kDefaultChildId, 727 prerender_link_manager()->OnAbandonPrerender(kDefaultChildId,
750 last_prerender_id()); 728 last_prerender_id());
751 729
752 EXPECT_FALSE(prerender_contents->prerendering_has_been_cancelled()); 730 EXPECT_FALSE(prerender_contents->prerendering_has_been_cancelled());
753 ASSERT_EQ(prerender_contents, prerender_manager()->GetEntry(url)); 731 ASSERT_EQ(prerender_contents, prerender_manager()->FindAndUseEntry(url));
754 EXPECT_TRUE(IsEmptyPrerenderLinkManager()); 732 EXPECT_TRUE(IsEmptyPrerenderLinkManager());
755 } 733 }
756 734
757 TEST_F(PrerenderTest, LinkManagerCancelTwice) { 735 TEST_F(PrerenderTest, LinkManagerCancelTwice) {
758 EXPECT_TRUE(IsEmptyPrerenderLinkManager()); 736 EXPECT_TRUE(IsEmptyPrerenderLinkManager());
759 GURL url("http://www.myexample.com"); 737 GURL url("http://www.myexample.com");
760 DummyPrerenderContents* prerender_contents = 738 DummyPrerenderContents* prerender_contents =
761 prerender_manager()->CreateNextPrerenderContents( 739 prerender_manager()->CreateNextPrerenderContents(
762 url, FINAL_STATUS_CANCELLED); 740 url, FINAL_STATUS_CANCELLED);
763 741
764 EXPECT_TRUE(AddSimplePrerender(url)); 742 EXPECT_TRUE(AddSimplePrerender(url));
765 EXPECT_TRUE(prerender_contents->prerendering_has_started()); 743 EXPECT_TRUE(prerender_contents->prerendering_has_started());
766 EXPECT_FALSE(prerender_contents->prerendering_has_been_cancelled()); 744 EXPECT_FALSE(prerender_contents->prerendering_has_been_cancelled());
767 ASSERT_EQ(prerender_contents, prerender_manager()->FindEntry(url)); 745 ASSERT_EQ(prerender_contents, prerender_manager()->FindEntry(url));
768 prerender_link_manager()->OnCancelPrerender(kDefaultChildId, 746 prerender_link_manager()->OnCancelPrerender(kDefaultChildId,
769 last_prerender_id()); 747 last_prerender_id());
770 748
771 EXPECT_TRUE(IsEmptyPrerenderLinkManager()); 749 EXPECT_TRUE(IsEmptyPrerenderLinkManager());
772 EXPECT_TRUE(prerender_contents->prerendering_has_been_cancelled()); 750 EXPECT_TRUE(prerender_contents->prerendering_has_been_cancelled());
773 DummyPrerenderContents* null = NULL; 751 DummyPrerenderContents* null = NULL;
774 ASSERT_EQ(null, prerender_manager()->GetEntry(url)); 752 ASSERT_EQ(null, prerender_manager()->FindEntry(url));
775 prerender_link_manager()->OnCancelPrerender(kDefaultChildId, 753 prerender_link_manager()->OnCancelPrerender(kDefaultChildId,
776 last_prerender_id()); 754 last_prerender_id());
777 } 755 }
778 756
779 TEST_F(PrerenderTest, LinkManagerAddTwiceCancelTwice) { 757 TEST_F(PrerenderTest, LinkManagerAddTwiceCancelTwice) {
780 EXPECT_TRUE(IsEmptyPrerenderLinkManager()); 758 EXPECT_TRUE(IsEmptyPrerenderLinkManager());
781 GURL url("http://www.myexample.com"); 759 GURL url("http://www.myexample.com");
782 DummyPrerenderContents* prerender_contents = 760 DummyPrerenderContents* prerender_contents =
783 prerender_manager()->CreateNextPrerenderContents( 761 prerender_manager()->CreateNextPrerenderContents(
784 url, FINAL_STATUS_CANCELLED); 762 url, FINAL_STATUS_CANCELLED);
(...skipping 14 matching lines...) Expand all
799 first_prerender_id); 777 first_prerender_id);
800 778
801 EXPECT_FALSE(prerender_contents->prerendering_has_been_cancelled()); 779 EXPECT_FALSE(prerender_contents->prerendering_has_been_cancelled());
802 ASSERT_EQ(prerender_contents, prerender_manager()->FindEntry(url)); 780 ASSERT_EQ(prerender_contents, prerender_manager()->FindEntry(url));
803 prerender_link_manager()->OnCancelPrerender(kDefaultChildId, 781 prerender_link_manager()->OnCancelPrerender(kDefaultChildId,
804 second_prerender_id); 782 second_prerender_id);
805 783
806 EXPECT_TRUE(IsEmptyPrerenderLinkManager()); 784 EXPECT_TRUE(IsEmptyPrerenderLinkManager());
807 EXPECT_TRUE(prerender_contents->prerendering_has_been_cancelled()); 785 EXPECT_TRUE(prerender_contents->prerendering_has_been_cancelled());
808 DummyPrerenderContents* null = NULL; 786 DummyPrerenderContents* null = NULL;
809 ASSERT_EQ(null, prerender_manager()->GetEntry(url)); 787 ASSERT_EQ(null, prerender_manager()->FindEntry(url));
810 } 788 }
811 789
812 TEST_F(PrerenderTest, LinkManagerAddTwiceCancelTwiceThenAbandonTwice) { 790 TEST_F(PrerenderTest, LinkManagerAddTwiceCancelTwiceThenAbandonTwice) {
813 EXPECT_TRUE(IsEmptyPrerenderLinkManager()); 791 EXPECT_TRUE(IsEmptyPrerenderLinkManager());
814 GURL url("http://www.myexample.com"); 792 GURL url("http://www.myexample.com");
815 DummyPrerenderContents* prerender_contents = 793 DummyPrerenderContents* prerender_contents =
816 prerender_manager()->CreateNextPrerenderContents( 794 prerender_manager()->CreateNextPrerenderContents(
817 url, FINAL_STATUS_CANCELLED); 795 url, FINAL_STATUS_CANCELLED);
818 796
819 EXPECT_TRUE(AddSimplePrerender(url)); 797 EXPECT_TRUE(AddSimplePrerender(url));
(...skipping 22 matching lines...) Expand all
842 first_prerender_id); 820 first_prerender_id);
843 821
844 EXPECT_TRUE(IsEmptyPrerenderLinkManager()); 822 EXPECT_TRUE(IsEmptyPrerenderLinkManager());
845 EXPECT_TRUE(prerender_contents->prerendering_has_been_cancelled()); 823 EXPECT_TRUE(prerender_contents->prerendering_has_been_cancelled());
846 prerender_link_manager()->OnAbandonPrerender(kDefaultChildId, 824 prerender_link_manager()->OnAbandonPrerender(kDefaultChildId,
847 second_prerender_id); 825 second_prerender_id);
848 826
849 EXPECT_TRUE(IsEmptyPrerenderLinkManager()); 827 EXPECT_TRUE(IsEmptyPrerenderLinkManager());
850 EXPECT_TRUE(prerender_contents->prerendering_has_been_cancelled()); 828 EXPECT_TRUE(prerender_contents->prerendering_has_been_cancelled());
851 DummyPrerenderContents* null = NULL; 829 DummyPrerenderContents* null = NULL;
852 ASSERT_EQ(null, prerender_manager()->GetEntry(url)); 830 ASSERT_EQ(null, prerender_manager()->FindEntry(url));
853 } 831 }
854 832
855 // TODO(gavinp): Update this test after abandon has an effect on Prerenders, 833 // TODO(gavinp): Update this test after abandon has an effect on Prerenders,
856 // like shortening the timeouts. 834 // like shortening the timeouts.
857 TEST_F(PrerenderTest, LinkManagerAddTwiceAbandonTwice) { 835 TEST_F(PrerenderTest, LinkManagerAddTwiceAbandonTwice) {
858 EXPECT_TRUE(IsEmptyPrerenderLinkManager()); 836 EXPECT_TRUE(IsEmptyPrerenderLinkManager());
859 GURL url("http://www.myexample.com"); 837 GURL url("http://www.myexample.com");
860 DummyPrerenderContents* prerender_contents = 838 DummyPrerenderContents* prerender_contents =
861 prerender_manager()->CreateNextPrerenderContents( 839 prerender_manager()->CreateNextPrerenderContents(
862 url, FINAL_STATUS_USED); 840 url, FINAL_STATUS_USED);
(...skipping 13 matching lines...) Expand all
876 prerender_link_manager()->OnAbandonPrerender(kDefaultChildId, 854 prerender_link_manager()->OnAbandonPrerender(kDefaultChildId,
877 first_prerender_id); 855 first_prerender_id);
878 856
879 EXPECT_FALSE(prerender_contents->prerendering_has_been_cancelled()); 857 EXPECT_FALSE(prerender_contents->prerendering_has_been_cancelled());
880 ASSERT_EQ(prerender_contents, prerender_manager()->FindEntry(url)); 858 ASSERT_EQ(prerender_contents, prerender_manager()->FindEntry(url));
881 prerender_link_manager()->OnAbandonPrerender(kDefaultChildId, 859 prerender_link_manager()->OnAbandonPrerender(kDefaultChildId,
882 second_prerender_id); 860 second_prerender_id);
883 861
884 EXPECT_TRUE(IsEmptyPrerenderLinkManager()); 862 EXPECT_TRUE(IsEmptyPrerenderLinkManager());
885 EXPECT_FALSE(prerender_contents->prerendering_has_been_cancelled()); 863 EXPECT_FALSE(prerender_contents->prerendering_has_been_cancelled());
886 ASSERT_EQ(prerender_contents, prerender_manager()->GetEntry(url)); 864 ASSERT_EQ(prerender_contents, prerender_manager()->FindAndUseEntry(url));
887 } 865 }
888 866
889 // TODO(gavinp): After abandon shortens the expire time on a Prerender, 867 // TODO(gavinp): After abandon shortens the expire time on a Prerender,
890 // add a series of tests testing advancing the time by either the abandon 868 // add a series of tests testing advancing the time by either the abandon
891 // or normal expire, and verifying the expected behaviour with groups 869 // or normal expire, and verifying the expected behaviour with groups
892 // of links. 870 // of links.
893 TEST_F(PrerenderTest, LinkManagerExpireThenCancel) { 871 TEST_F(PrerenderTest, LinkManagerExpireThenCancel) {
894 EXPECT_TRUE(IsEmptyPrerenderLinkManager()); 872 EXPECT_TRUE(IsEmptyPrerenderLinkManager());
895 GURL url("http://www.myexample.com"); 873 GURL url("http://www.myexample.com");
896 DummyPrerenderContents* prerender_contents = 874 DummyPrerenderContents* prerender_contents =
897 prerender_manager()->CreateNextPrerenderContents( 875 prerender_manager()->CreateNextPrerenderContents(
898 url, FINAL_STATUS_TIMED_OUT); 876 url, FINAL_STATUS_TIMED_OUT);
899 877
900 EXPECT_TRUE(AddSimplePrerender(url)); 878 EXPECT_TRUE(AddSimplePrerender(url));
901 879
902 EXPECT_TRUE(prerender_contents->prerendering_has_started()); 880 EXPECT_TRUE(prerender_contents->prerendering_has_started());
903 EXPECT_FALSE(prerender_contents->prerendering_has_been_cancelled()); 881 EXPECT_FALSE(prerender_contents->prerendering_has_been_cancelled());
904 ASSERT_EQ(prerender_contents, prerender_manager()->FindEntry(url)); 882 ASSERT_EQ(prerender_contents, prerender_manager()->FindEntry(url));
905 prerender_manager()->AdvanceTime(prerender_manager()->GetMaxAge() + 883 prerender_manager()->AdvanceTimeTicks(prerender_manager()->GetMaxAge() +
906 base::TimeDelta::FromSeconds(1)); 884 base::TimeDelta::FromSeconds(1));
907 885
908 EXPECT_FALSE(IsEmptyPrerenderLinkManager()); 886 EXPECT_FALSE(IsEmptyPrerenderLinkManager());
909 DummyPrerenderContents* null = NULL; 887 DummyPrerenderContents* null = NULL;
910 ASSERT_EQ(null, prerender_manager()->GetEntry(url)); 888 ASSERT_EQ(null, prerender_manager()->FindEntry(url));
911 prerender_link_manager()->OnCancelPrerender(kDefaultChildId, 889 prerender_link_manager()->OnCancelPrerender(kDefaultChildId,
912 last_prerender_id()); 890 last_prerender_id());
913 891
914 EXPECT_TRUE(IsEmptyPrerenderLinkManager()); 892 EXPECT_TRUE(IsEmptyPrerenderLinkManager());
915 ASSERT_EQ(null, prerender_manager()->GetEntry(url)); 893 ASSERT_EQ(null, prerender_manager()->FindEntry(url));
916 } 894 }
917 895
918 TEST_F(PrerenderTest, LinkManagerExpireThenAddAgain) { 896 TEST_F(PrerenderTest, LinkManagerExpireThenAddAgain) {
919 EXPECT_TRUE(IsEmptyPrerenderLinkManager()); 897 EXPECT_TRUE(IsEmptyPrerenderLinkManager());
920 GURL url("http://www.myexample.com"); 898 GURL url("http://www.myexample.com");
921 DummyPrerenderContents* first_prerender_contents = 899 DummyPrerenderContents* first_prerender_contents =
922 prerender_manager()->CreateNextPrerenderContents( 900 prerender_manager()->CreateNextPrerenderContents(
923 url, FINAL_STATUS_TIMED_OUT); 901 url, FINAL_STATUS_TIMED_OUT);
924 EXPECT_TRUE(AddSimplePrerender(url)); 902 EXPECT_TRUE(AddSimplePrerender(url));
925 EXPECT_TRUE(first_prerender_contents->prerendering_has_started()); 903 EXPECT_TRUE(first_prerender_contents->prerendering_has_started());
926 EXPECT_FALSE(first_prerender_contents->prerendering_has_been_cancelled()); 904 EXPECT_FALSE(first_prerender_contents->prerendering_has_been_cancelled());
927 ASSERT_EQ(first_prerender_contents, prerender_manager()->FindEntry(url)); 905 ASSERT_EQ(first_prerender_contents,
928 prerender_manager()->AdvanceTime(prerender_manager()->GetMaxAge() + 906 prerender_manager()->FindAndUseEntry(url));
907 prerender_manager()->AdvanceTimeTicks(prerender_manager()->GetMaxAge() +
929 base::TimeDelta::FromSeconds(1)); 908 base::TimeDelta::FromSeconds(1));
930 DummyPrerenderContents* null = NULL; 909 DummyPrerenderContents* null = NULL;
931 ASSERT_EQ(null, prerender_manager()->GetEntry(url)); 910 ASSERT_EQ(null, prerender_manager()->FindEntry(url));
932 DummyPrerenderContents* second_prerender_contents = 911 DummyPrerenderContents* second_prerender_contents =
933 prerender_manager()->CreateNextPrerenderContents( 912 prerender_manager()->CreateNextPrerenderContents(
934 url, FINAL_STATUS_USED); 913 url, FINAL_STATUS_USED);
935 EXPECT_TRUE(AddSimplePrerender(url)); 914 EXPECT_TRUE(AddSimplePrerender(url));
936 EXPECT_TRUE(second_prerender_contents->prerendering_has_started()); 915 EXPECT_TRUE(second_prerender_contents->prerendering_has_started());
937 ASSERT_EQ(second_prerender_contents, prerender_manager()->GetEntry(url)); 916 ASSERT_EQ(second_prerender_contents,
917 prerender_manager()->FindAndUseEntry(url));
938 // The PrerenderLinkManager is not empty since we never removed the first 918 // The PrerenderLinkManager is not empty since we never removed the first
939 // prerender. 919 // prerender.
940 EXPECT_FALSE(IsEmptyPrerenderLinkManager()); 920 EXPECT_FALSE(IsEmptyPrerenderLinkManager());
941 } 921 }
942 922
943 TEST_F(PrerenderTest, LinkManagerCancelThenAddAgain) { 923 TEST_F(PrerenderTest, LinkManagerCancelThenAddAgain) {
944 EXPECT_TRUE(IsEmptyPrerenderLinkManager()); 924 EXPECT_TRUE(IsEmptyPrerenderLinkManager());
945 GURL url("http://www.myexample.com"); 925 GURL url("http://www.myexample.com");
946 DummyPrerenderContents* first_prerender_contents = 926 DummyPrerenderContents* first_prerender_contents =
947 prerender_manager()->CreateNextPrerenderContents( 927 prerender_manager()->CreateNextPrerenderContents(
948 url, FINAL_STATUS_CANCELLED); 928 url, FINAL_STATUS_CANCELLED);
949 EXPECT_TRUE(AddSimplePrerender(url)); 929 EXPECT_TRUE(AddSimplePrerender(url));
950 EXPECT_TRUE(first_prerender_contents->prerendering_has_started()); 930 EXPECT_TRUE(first_prerender_contents->prerendering_has_started());
951 EXPECT_FALSE(first_prerender_contents->prerendering_has_been_cancelled()); 931 EXPECT_FALSE(first_prerender_contents->prerendering_has_been_cancelled());
952 ASSERT_EQ(first_prerender_contents, prerender_manager()->FindEntry(url)); 932 ASSERT_EQ(first_prerender_contents, prerender_manager()->FindEntry(url));
953 prerender_link_manager()->OnCancelPrerender(kDefaultChildId, 933 prerender_link_manager()->OnCancelPrerender(kDefaultChildId,
954 last_prerender_id()); 934 last_prerender_id());
955 EXPECT_TRUE(IsEmptyPrerenderLinkManager()); 935 EXPECT_TRUE(IsEmptyPrerenderLinkManager());
956 EXPECT_TRUE(first_prerender_contents->prerendering_has_been_cancelled()); 936 EXPECT_TRUE(first_prerender_contents->prerendering_has_been_cancelled());
957 DummyPrerenderContents* null = NULL; 937 DummyPrerenderContents* null = NULL;
958 ASSERT_EQ(null, prerender_manager()->GetEntry(url)); 938 ASSERT_EQ(null, prerender_manager()->FindEntry(url));
959 DummyPrerenderContents* second_prerender_contents = 939 DummyPrerenderContents* second_prerender_contents =
960 prerender_manager()->CreateNextPrerenderContents( 940 prerender_manager()->CreateNextPrerenderContents(
961 url, FINAL_STATUS_USED); 941 url, FINAL_STATUS_USED);
962 EXPECT_TRUE(AddSimplePrerender(url)); 942 EXPECT_TRUE(AddSimplePrerender(url));
963 EXPECT_TRUE(second_prerender_contents->prerendering_has_started()); 943 EXPECT_TRUE(second_prerender_contents->prerendering_has_started());
964 ASSERT_EQ(second_prerender_contents, prerender_manager()->GetEntry(url)); 944 ASSERT_EQ(second_prerender_contents,
945 prerender_manager()->FindAndUseEntry(url));
965 EXPECT_FALSE(IsEmptyPrerenderLinkManager()); 946 EXPECT_FALSE(IsEmptyPrerenderLinkManager());
966 } 947 }
967 948
968 } // namespace prerender 949 } // namespace prerender
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698