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

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: lose some DVLOGs 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
28 class UnitTestPrerenderManager;
29
27 namespace { 30 namespace {
28 31
29 class DummyPrerenderContents : public PrerenderContents { 32 class DummyPrerenderContents : public PrerenderContents {
30 public: 33 public:
31 DummyPrerenderContents(PrerenderManager* prerender_manager, 34 DummyPrerenderContents(UnitTestPrerenderManager* 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 UnitTestPrerenderManager* test_prerender_manager_;
76 FinalStatus expected_final_status_; 68 FinalStatus expected_final_status_;
77 }; 69 };
78 70
79 class TestPrerenderManager : public PrerenderManager { 71 const gfx::Size kSize(640, 480);
72
73 } // namespace
74
75 class UnitTestPrerenderManager : public PrerenderManager {
80 public: 76 public:
81 explicit TestPrerenderManager(PrerenderTracker* prerender_tracker) 77 using PrerenderManager::kNavigationRecordWindowMs;
78 using PrerenderManager::GetMaxAge;
79
80 explicit UnitTestPrerenderManager(PrerenderTracker* prerender_tracker)
82 : PrerenderManager(&profile_, prerender_tracker), 81 : PrerenderManager(&profile_, prerender_tracker),
83 time_(base::Time::Now()), 82 time_(base::Time::Now()),
84 time_ticks_(base::TimeTicks::Now()), 83 time_ticks_(base::TimeTicks::Now()),
85 next_prerender_contents_(NULL), 84 next_prerender_contents_(NULL),
86 prerender_tracker_(prerender_tracker) { 85 prerender_tracker_(prerender_tracker) {
87 set_rate_limit_enabled(false); 86 set_rate_limit_enabled(false);
88 } 87 }
89 88
90 virtual ~TestPrerenderManager() { 89 virtual ~UnitTestPrerenderManager() {
91 if (next_prerender_contents()) { 90 if (next_prerender_contents()) {
92 next_prerender_contents_.release()->Destroy( 91 next_prerender_contents_.release()->Destroy(
93 FINAL_STATUS_MANAGER_SHUTDOWN); 92 FINAL_STATUS_MANAGER_SHUTDOWN);
94 } 93 }
95 // Set the final status for all PrerenderContents with an expected final
96 // status of FINAL_STATUS_USED. These values are normally set when the
97 // prerendered RVH is swapped into a tab, which doesn't happen in these
98 // unit tests.
99 for (ScopedVector<PrerenderContents>::iterator it =
100 used_prerender_contents_.begin();
101 it != used_prerender_contents_.end(); ++it) {
102 (*it)->set_final_status(FINAL_STATUS_USED);
103 }
104 DoShutdown(); 94 DoShutdown();
105 } 95 }
106 96
97 PrerenderContents* FindEntry(const GURL& url) {
98 DeleteOldEntries();
99 DeletePendingDeleteEntries();
100 if (PrerenderData* data = FindPrerenderData(url, NULL))
101 return data->contents();
102 return NULL;
103 }
104
105 PrerenderContents* FindAndUseEntry(const GURL& url) {
106 PrerenderData* prerender_data = FindPrerenderData(url, NULL);
107 if (!prerender_data)
108 return NULL;
109 PrerenderContents* prerender_contents = prerender_data->contents();
110 prerender_contents->set_final_status(FINAL_STATUS_USED);
111 std::list<linked_ptr<PrerenderData> >::iterator to_erase =
112 FindIteratorForPrerenderContents(prerender_contents);
113 DCHECK(to_erase != active_prerender_list_.end());
114 active_prerender_list_.erase(to_erase);
115 prerender_contents->StartPendingPrerenders();
116 return prerender_contents;
117 }
118
107 void AdvanceTime(base::TimeDelta delta) { 119 void AdvanceTime(base::TimeDelta delta) {
108 time_ += delta; 120 time_ += delta;
109 } 121 }
110 122
111 void AdvanceTimeTicks(base::TimeDelta delta) { 123 void AdvanceTimeTicks(base::TimeDelta delta) {
112 time_ticks_ += delta; 124 time_ticks_ += delta;
113 } 125 }
114 126
115 DummyPrerenderContents* CreateNextPrerenderContents( 127 DummyPrerenderContents* CreateNextPrerenderContents(
116 const GURL& url, 128 const GURL& url,
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
152 } 164 }
153 165
154 void set_rate_limit_enabled(bool enabled) { 166 void set_rate_limit_enabled(bool enabled) {
155 mutable_config().rate_limit_enabled = enabled; 167 mutable_config().rate_limit_enabled = enabled;
156 } 168 }
157 169
158 PrerenderContents* next_prerender_contents() { 170 PrerenderContents* next_prerender_contents() {
159 return next_prerender_contents_.get(); 171 return next_prerender_contents_.get();
160 } 172 }
161 173
174 // from PrerenderManager
175 virtual base::Time GetCurrentTime() const OVERRIDE {
176 return time_;
177 }
178
179 virtual base::TimeTicks GetCurrentTimeTicks() const OVERRIDE {
180 return time_ticks_;
181 }
182
162 private: 183 private:
163 void SetNextPrerenderContents(DummyPrerenderContents* prerender_contents) { 184 void SetNextPrerenderContents(DummyPrerenderContents* prerender_contents) {
164 DCHECK(!next_prerender_contents_.get()); 185 DCHECK(!next_prerender_contents_.get());
165 next_prerender_contents_.reset(prerender_contents); 186 next_prerender_contents_.reset(prerender_contents);
166 if (prerender_contents->expected_final_status() == FINAL_STATUS_USED) 187 if (prerender_contents->expected_final_status() == FINAL_STATUS_USED)
167 used_prerender_contents_.push_back(prerender_contents); 188 used_prerender_contents_.push_back(prerender_contents);
168 } 189 }
169 190
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 191
178 virtual PrerenderContents* CreatePrerenderContents( 192 virtual PrerenderContents* CreatePrerenderContents(
179 const GURL& url, 193 const GURL& url,
180 const Referrer& referrer, 194 const Referrer& referrer,
181 Origin origin, 195 Origin origin,
182 uint8 experiment_id) OVERRIDE { 196 uint8 experiment_id) OVERRIDE {
183 DCHECK(next_prerender_contents_.get()); 197 DCHECK(next_prerender_contents_.get());
184 DCHECK_EQ(next_prerender_contents_->prerender_url(), url); 198 EXPECT_EQ(url, next_prerender_contents_->prerender_url());
185 DCHECK_EQ(next_prerender_contents_->origin(), origin); 199 EXPECT_EQ(origin, next_prerender_contents_->origin());
186 return next_prerender_contents_.release(); 200 return next_prerender_contents_.release();
187 } 201 }
188 202
189 base::Time time_; 203 base::Time time_;
190 base::TimeTicks time_ticks_; 204 base::TimeTicks time_ticks_;
191 scoped_ptr<PrerenderContents> next_prerender_contents_; 205 scoped_ptr<PrerenderContents> next_prerender_contents_;
192 // PrerenderContents with an |expected_final_status| of FINAL_STATUS_USED, 206 // PrerenderContents with an |expected_final_status| of FINAL_STATUS_USED,
193 // tracked so they will be automatically deleted. 207 // tracked so they will be automatically deleted.
194 ScopedVector<PrerenderContents> used_prerender_contents_; 208 ScopedVector<PrerenderContents> used_prerender_contents_;
195 209
196 PrerenderTracker* prerender_tracker_; 210 PrerenderTracker* prerender_tracker_;
197 211
198 TestingProfile profile_; 212 TestingProfile profile_;
199 }; 213 };
200 214
201 class RestorePrerenderMode { 215 class RestorePrerenderMode {
202 public: 216 public:
203 RestorePrerenderMode() : prev_mode_(PrerenderManager::GetMode()) { 217 RestorePrerenderMode() : prev_mode_(PrerenderManager::GetMode()) {
204 } 218 }
205 219
206 ~RestorePrerenderMode() { PrerenderManager::SetMode(prev_mode_); } 220 ~RestorePrerenderMode() { PrerenderManager::SetMode(prev_mode_); }
207 private: 221 private:
208 PrerenderManager::PrerenderManagerMode prev_mode_; 222 PrerenderManager::PrerenderManagerMode prev_mode_;
209 }; 223 };
210 224
211 } // namespace 225 DummyPrerenderContents::DummyPrerenderContents(
226 UnitTestPrerenderManager* test_prerender_manager,
227 PrerenderTracker* prerender_tracker,
228 const GURL& url,
229 Origin origin,
230 FinalStatus expected_final_status)
231 : PrerenderContents(test_prerender_manager, prerender_tracker,
232 NULL, url, Referrer(), origin,
233 PrerenderManager::kNoExperiment),
234 test_prerender_manager_(test_prerender_manager),
235 expected_final_status_(expected_final_status) {
236 }
237
238 void DummyPrerenderContents::StartPrerendering(
239 int ALLOW_UNUSED creator_child_id,
240 const gfx::Size& ALLOW_UNUSED size,
241 content::SessionStorageNamespace* ALLOW_UNUSED session_storage_namespace,
242 bool is_control_group) {
243 // In the base PrerenderContents implementation, StartPrerendering will
244 // be called even when the PrerenderManager is part of the control group,
245 // but it will early exit before actually creating a new RenderView if
246 // |is_control_group| is true;
247 if (!is_control_group)
248 prerendering_has_started_ = true;
249 load_start_time_ = test_prerender_manager_->GetCurrentTimeTicks();
250 }
212 251
213 class PrerenderTest : public testing::Test { 252 class PrerenderTest : public testing::Test {
214 public: 253 public:
215 static const int kDefaultChildId = -1; 254 static const int kDefaultChildId = -1;
216 static const int kDefaultRenderViewRouteId = -1; 255 static const int kDefaultRenderViewRouteId = -1;
217 256
218 PrerenderTest() : ui_thread_(BrowserThread::UI, &message_loop_), 257 PrerenderTest() : ui_thread_(BrowserThread::UI, &message_loop_),
219 prerender_manager_( 258 prerender_manager_(
220 new TestPrerenderManager(prerender_tracker())), 259 new UnitTestPrerenderManager(prerender_tracker())),
221 prerender_link_manager_( 260 prerender_link_manager_(
222 new PrerenderLinkManager(prerender_manager_.get())), 261 new PrerenderLinkManager(prerender_manager_.get())),
223 last_prerender_id_(0) { 262 last_prerender_id_(0) {
224 // Enable omnibox prerendering. 263 // Enable omnibox prerendering.
225 CommandLine::ForCurrentProcess()->AppendSwitchASCII( 264 CommandLine::ForCurrentProcess()->AppendSwitchASCII(
226 switches::kPrerenderFromOmnibox, 265 switches::kPrerenderFromOmnibox,
227 switches::kPrerenderFromOmniboxSwitchValueEnabled); 266 switches::kPrerenderFromOmniboxSwitchValueEnabled);
228 } 267 }
229 268
230 TestPrerenderManager* prerender_manager() { 269 ~PrerenderTest() {
270 prerender_link_manager_->OnChannelClosing(kDefaultChildId);
271 }
272
273 UnitTestPrerenderManager* prerender_manager() {
231 return prerender_manager_.get(); 274 return prerender_manager_.get();
232 } 275 }
233 276
234 PrerenderLinkManager* prerender_link_manager() { 277 PrerenderLinkManager* prerender_link_manager() {
235 return prerender_link_manager_.get(); 278 return prerender_link_manager_.get();
236 } 279 }
237 280
238 bool IsEmptyPrerenderLinkManager() { 281 bool IsEmptyPrerenderLinkManager() {
239 return prerender_link_manager_->IsEmpty(); 282 return prerender_link_manager_->IsEmpty();
240 } 283 }
241 284
242 int last_prerender_id() const { 285 int last_prerender_id() const {
243 return last_prerender_id_; 286 return last_prerender_id_;
244 } 287 }
245 288
246 int GetNextPrerenderID() { 289 int GetNextPrerenderID() {
247 return ++last_prerender_id_; 290 return ++last_prerender_id_;
248 } 291 }
249 292
250 // Shorthand to add a simple preload with a reasonable source. 293 // Shorthand to add a simple preload with a reasonable source.
251 bool AddSimplePrerender(const GURL& url) { 294 bool AddSimplePrerender(const GURL& url) {
252 return prerender_link_manager()->OnAddPrerender( 295 return prerender_link_manager()->OnAddPrerender(
253 kDefaultChildId, GetNextPrerenderID(), 296 kDefaultChildId, GetNextPrerenderID(),
254 url, content::Referrer(), 297 url, content::Referrer(),
255 gfx::Size(), kDefaultRenderViewRouteId); 298 kSize, kDefaultRenderViewRouteId);
256 } 299 }
257 300
258 private: 301 private:
259 PrerenderTracker* prerender_tracker() { 302 PrerenderTracker* prerender_tracker() {
260 return g_browser_process->prerender_tracker(); 303 return g_browser_process->prerender_tracker();
261 } 304 }
262 305
263 // Needed to pass PrerenderManager's DCHECKs. 306 // Needed to pass PrerenderManager's DCHECKs.
264 MessageLoop message_loop_; 307 MessageLoop message_loop_;
265 content::TestBrowserThread ui_thread_; 308 content::TestBrowserThread ui_thread_;
266 scoped_ptr<TestPrerenderManager> prerender_manager_; 309 scoped_ptr<UnitTestPrerenderManager> prerender_manager_;
267 scoped_ptr<PrerenderLinkManager> prerender_link_manager_; 310 scoped_ptr<PrerenderLinkManager> prerender_link_manager_;
268 int last_prerender_id_; 311 int last_prerender_id_;
269 }; 312 };
270 313
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) { 314 TEST_F(PrerenderTest, FoundTest) {
278 GURL url("http://www.google.com/"); 315 GURL url("http://www.google.com/");
279 DummyPrerenderContents* prerender_contents = 316 DummyPrerenderContents* prerender_contents =
280 prerender_manager()->CreateNextPrerenderContents( 317 prerender_manager()->CreateNextPrerenderContents(
318 url,
319 FINAL_STATUS_USED);
320 EXPECT_TRUE(AddSimplePrerender(url));
321 EXPECT_TRUE(prerender_contents->prerendering_has_started());
322 ASSERT_EQ(prerender_contents, prerender_manager()->FindAndUseEntry(url));
323 }
324
325 TEST_F(PrerenderTest, DuplicateTest) {
326 GURL url("http://www.google.com/");
327 DummyPrerenderContents* prerender_contents =
328 prerender_manager()->CreateNextPrerenderContents(
281 url, 329 url,
282 FINAL_STATUS_USED); 330 FINAL_STATUS_USED);
283 EXPECT_TRUE(AddSimplePrerender(url)); 331 EXPECT_TRUE(AddSimplePrerender(url));
284 EXPECT_TRUE(prerender_contents->prerendering_has_started()); 332 EXPECT_TRUE(prerender_contents->prerendering_has_started());
285 ASSERT_EQ(prerender_contents, prerender_manager()->GetEntry(url)); 333
334 scoped_ptr<PrerenderHandle> duplicate_prerender_handle(
335 prerender_manager()->AddPrerenderFromLinkRelPrerender(
336 kDefaultChildId, kDefaultRenderViewRouteId, url,
337 Referrer(url, WebKit::WebReferrerPolicyDefault), kSize));
338
339 EXPECT_TRUE(duplicate_prerender_handle->IsValid());
340 EXPECT_TRUE(duplicate_prerender_handle->IsPrerendering());
341
342 ASSERT_EQ(prerender_contents, prerender_manager()->FindAndUseEntry(url));
343
344 EXPECT_FALSE(duplicate_prerender_handle->IsValid());
345 EXPECT_FALSE(duplicate_prerender_handle->IsPrerendering());
286 } 346 }
287 347
288 // Make sure that if queue a request, and a second prerender request for the 348 // 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. 349 // same URL comes in, that we drop the second request and keep the first one.
290 TEST_F(PrerenderTest, DropSecondRequestTest) { 350 TEST_F(PrerenderTest, DropSecondRequestTest) {
291 GURL url("http://www.google.com/"); 351 GURL url("http://www.google.com/");
292 DummyPrerenderContents* prerender_contents = 352 DummyPrerenderContents* prerender_contents =
293 prerender_manager()->CreateNextPrerenderContents( 353 prerender_manager()->CreateNextPrerenderContents(
294 url, 354 url,
295 FINAL_STATUS_USED); 355 FINAL_STATUS_USED);
296 DummyPrerenderContents* null = NULL; 356 DummyPrerenderContents* null = NULL;
297 EXPECT_TRUE(AddSimplePrerender(url)); 357 EXPECT_TRUE(AddSimplePrerender(url));
298 EXPECT_EQ(null, prerender_manager()->next_prerender_contents()); 358 EXPECT_EQ(null, prerender_manager()->next_prerender_contents());
299 EXPECT_TRUE(prerender_contents->prerendering_has_started()); 359 EXPECT_TRUE(prerender_contents->prerendering_has_started());
300 360
301 DummyPrerenderContents* prerender_contents1 = 361 DummyPrerenderContents* prerender_contents1 =
302 prerender_manager()->CreateNextPrerenderContents( 362 prerender_manager()->CreateNextPrerenderContents(
303 url, 363 url,
304 FINAL_STATUS_MANAGER_SHUTDOWN); 364 FINAL_STATUS_MANAGER_SHUTDOWN);
305 EXPECT_TRUE(AddSimplePrerender(url)); 365 EXPECT_TRUE(AddSimplePrerender(url));
306 EXPECT_EQ(prerender_contents1, 366 EXPECT_EQ(prerender_contents1,
307 prerender_manager()->next_prerender_contents()); 367 prerender_manager()->next_prerender_contents());
308 EXPECT_FALSE(prerender_contents1->prerendering_has_started()); 368 EXPECT_FALSE(prerender_contents1->prerendering_has_started());
309 369
310 ASSERT_EQ(prerender_contents, prerender_manager()->GetEntry(url)); 370 ASSERT_EQ(prerender_contents, prerender_manager()->FindAndUseEntry(url));
311 } 371 }
312 372
313 // Ensure that we expire a prerendered page after the max. permitted time. 373 // Ensure that we expire a prerendered page after the max. permitted time.
314 TEST_F(PrerenderTest, ExpireTest) { 374 TEST_F(PrerenderTest, ExpireTest) {
315 GURL url("http://www.google.com/"); 375 GURL url("http://www.google.com/");
316 DummyPrerenderContents* prerender_contents = 376 DummyPrerenderContents* prerender_contents =
317 prerender_manager()->CreateNextPrerenderContents( 377 prerender_manager()->CreateNextPrerenderContents(
318 url, 378 url,
319 FINAL_STATUS_TIMED_OUT); 379 FINAL_STATUS_TIMED_OUT);
320 DummyPrerenderContents* null = NULL; 380 DummyPrerenderContents* null = NULL;
321 EXPECT_TRUE(AddSimplePrerender(url)); 381 EXPECT_TRUE(AddSimplePrerender(url));
322 EXPECT_EQ(null, prerender_manager()->next_prerender_contents()); 382 EXPECT_EQ(null, prerender_manager()->next_prerender_contents());
323 EXPECT_TRUE(prerender_contents->prerendering_has_started()); 383 EXPECT_TRUE(prerender_contents->prerendering_has_started());
324 prerender_manager()->AdvanceTime(prerender_manager()->GetMaxAge() + 384 prerender_manager()->AdvanceTimeTicks(prerender_manager()->GetMaxAge() +
325 base::TimeDelta::FromSeconds(1)); 385 base::TimeDelta::FromSeconds(1));
326 ASSERT_EQ(null, prerender_manager()->GetEntry(url)); 386 ASSERT_EQ(null, prerender_manager()->FindEntry(url));
327 } 387 }
328 388
329 // LRU Test. Make sure that if we prerender more than one request, that 389 // LRU Test. Make sure that if we prerender more than one request, that
330 // the oldest one will be dropped. 390 // the oldest one will be dropped.
331 TEST_F(PrerenderTest, DropOldestRequestTest) { 391 TEST_F(PrerenderTest, DropOldestRequestTest) {
332 GURL url("http://www.google.com/"); 392 GURL url("http://www.google.com/");
333 DummyPrerenderContents* prerender_contents = 393 DummyPrerenderContents* prerender_contents =
334 prerender_manager()->CreateNextPrerenderContents( 394 prerender_manager()->CreateNextPrerenderContents(
335 url, 395 url,
336 FINAL_STATUS_EVICTED); 396 FINAL_STATUS_EVICTED);
337 DummyPrerenderContents* null = NULL; 397 DummyPrerenderContents* null = NULL;
338 EXPECT_TRUE(AddSimplePrerender(url)); 398 EXPECT_TRUE(AddSimplePrerender(url));
339 EXPECT_EQ(null, prerender_manager()->next_prerender_contents()); 399 EXPECT_EQ(null, prerender_manager()->next_prerender_contents());
340 EXPECT_TRUE(prerender_contents->prerendering_has_started()); 400 EXPECT_TRUE(prerender_contents->prerendering_has_started());
341 401
342 GURL url1("http://news.google.com/"); 402 GURL url1("http://news.google.com/");
343 DummyPrerenderContents* prerender_contents1 = 403 DummyPrerenderContents* prerender_contents1 =
344 prerender_manager()->CreateNextPrerenderContents( 404 prerender_manager()->CreateNextPrerenderContents(
345 url1, 405 url1,
346 FINAL_STATUS_USED); 406 FINAL_STATUS_USED);
347 EXPECT_TRUE(AddSimplePrerender(url1)); 407 EXPECT_TRUE(AddSimplePrerender(url1));
348 EXPECT_EQ(null, prerender_manager()->next_prerender_contents()); 408 EXPECT_EQ(null, prerender_manager()->next_prerender_contents());
349 EXPECT_TRUE(prerender_contents1->prerendering_has_started()); 409 EXPECT_TRUE(prerender_contents1->prerendering_has_started());
350 410
351 ASSERT_EQ(null, prerender_manager()->GetEntry(url)); 411 ASSERT_EQ(null, prerender_manager()->FindEntry(url));
352 ASSERT_EQ(prerender_contents1, prerender_manager()->GetEntry(url1)); 412 ASSERT_EQ(prerender_contents1, prerender_manager()->FindAndUseEntry(url1));
353 } 413 }
354 414
355 // Two element prerender test. Ensure that the LRU operates correctly if we 415 // Two element prerender test. Ensure that the LRU operates correctly if we
356 // permit 2 elements to be kept prerendered. 416 // permit 2 elements to be kept prerendered.
357 TEST_F(PrerenderTest, TwoElementPrerenderTest) { 417 TEST_F(PrerenderTest, TwoElementPrerenderTest) {
358 prerender_manager()->mutable_config().max_elements = 2; 418 prerender_manager()->mutable_config().max_elements = 2;
359 GURL url("http://www.google.com/"); 419 GURL url("http://www.google.com/");
360 DummyPrerenderContents* prerender_contents = 420 DummyPrerenderContents* prerender_contents =
361 prerender_manager()->CreateNextPrerenderContents( 421 prerender_manager()->CreateNextPrerenderContents(
362 url, 422 url,
(...skipping 14 matching lines...) Expand all
377 437
378 GURL url2("http://images.google.com/"); 438 GURL url2("http://images.google.com/");
379 DummyPrerenderContents* prerender_contents2 = 439 DummyPrerenderContents* prerender_contents2 =
380 prerender_manager()->CreateNextPrerenderContents( 440 prerender_manager()->CreateNextPrerenderContents(
381 url2, 441 url2,
382 FINAL_STATUS_USED); 442 FINAL_STATUS_USED);
383 EXPECT_TRUE(AddSimplePrerender(url2)); 443 EXPECT_TRUE(AddSimplePrerender(url2));
384 EXPECT_EQ(null, prerender_manager()->next_prerender_contents()); 444 EXPECT_EQ(null, prerender_manager()->next_prerender_contents());
385 EXPECT_TRUE(prerender_contents2->prerendering_has_started()); 445 EXPECT_TRUE(prerender_contents2->prerendering_has_started());
386 446
387 ASSERT_EQ(null, prerender_manager()->GetEntry(url)); 447 ASSERT_EQ(null, prerender_manager()->FindEntry(url));
388 ASSERT_EQ(prerender_contents1, prerender_manager()->GetEntry(url1)); 448 ASSERT_EQ(prerender_contents1, prerender_manager()->FindAndUseEntry(url1));
389 ASSERT_EQ(prerender_contents2, prerender_manager()->GetEntry(url2)); 449 ASSERT_EQ(prerender_contents2, prerender_manager()->FindAndUseEntry(url2));
390 } 450 }
391 451
392 TEST_F(PrerenderTest, AliasURLTest) { 452 TEST_F(PrerenderTest, AliasURLTest) {
393 GURL url("http://www.google.com/"); 453 GURL url("http://www.google.com/");
394 GURL alias_url1("http://www.google.com/index.html"); 454 GURL alias_url1("http://www.google.com/index.html");
395 GURL alias_url2("http://google.com/"); 455 GURL alias_url2("http://google.com/");
396 GURL not_an_alias_url("http://google.com/index.html"); 456 GURL not_an_alias_url("http://google.com/index.html");
397 std::vector<GURL> alias_urls; 457 std::vector<GURL> alias_urls;
398 alias_urls.push_back(alias_url1); 458 alias_urls.push_back(alias_url1);
399 alias_urls.push_back(alias_url2); 459 alias_urls.push_back(alias_url2);
400 460
401 // Test that all of the aliases work, but not_an_alias_url does not. 461 // Test that all of the aliases work, but not_an_alias_url does not.
402 DummyPrerenderContents* prerender_contents = 462 DummyPrerenderContents* prerender_contents =
403 prerender_manager()->CreateNextPrerenderContents( 463 prerender_manager()->CreateNextPrerenderContents(
404 url, alias_urls, FINAL_STATUS_USED); 464 url, alias_urls, FINAL_STATUS_USED);
405 EXPECT_TRUE(AddSimplePrerender(url)); 465 EXPECT_TRUE(AddSimplePrerender(url));
406 ASSERT_EQ(NULL, prerender_manager()->GetEntry(not_an_alias_url)); 466 ASSERT_EQ(NULL, prerender_manager()->FindEntry(not_an_alias_url));
407 ASSERT_EQ(prerender_contents, prerender_manager()->GetEntry(alias_url1)); 467 ASSERT_EQ(prerender_contents,
468 prerender_manager()->FindAndUseEntry(alias_url1));
408 prerender_contents = prerender_manager()->CreateNextPrerenderContents( 469 prerender_contents = prerender_manager()->CreateNextPrerenderContents(
409 url, alias_urls, FINAL_STATUS_USED); 470 url, alias_urls, FINAL_STATUS_USED);
410 EXPECT_TRUE(AddSimplePrerender(url)); 471 EXPECT_TRUE(AddSimplePrerender(url));
411 ASSERT_EQ(prerender_contents, prerender_manager()->GetEntry(alias_url2)); 472 ASSERT_EQ(prerender_contents,
473 prerender_manager()->FindAndUseEntry(alias_url2));
412 prerender_contents = prerender_manager()->CreateNextPrerenderContents( 474 prerender_contents = prerender_manager()->CreateNextPrerenderContents(
413 url, alias_urls, FINAL_STATUS_USED); 475 url, alias_urls, FINAL_STATUS_USED);
414 EXPECT_TRUE(AddSimplePrerender(url)); 476 EXPECT_TRUE(AddSimplePrerender(url));
415 ASSERT_EQ(prerender_contents, prerender_manager()->GetEntry(url)); 477 ASSERT_EQ(prerender_contents, prerender_manager()->FindAndUseEntry(url));
416 478
417 // Test that alias URLs can not be added. 479 // Test that alias URLs can not be added.
418 prerender_contents = prerender_manager()->CreateNextPrerenderContents( 480 prerender_contents = prerender_manager()->CreateNextPrerenderContents(
419 url, alias_urls, FINAL_STATUS_USED); 481 url, alias_urls, FINAL_STATUS_USED);
420 EXPECT_TRUE(AddSimplePrerender(url)); 482 EXPECT_TRUE(AddSimplePrerender(url));
421 EXPECT_TRUE(AddSimplePrerender(url)); 483 EXPECT_TRUE(AddSimplePrerender(url));
422 EXPECT_TRUE(AddSimplePrerender(alias_url1)); 484 EXPECT_TRUE(AddSimplePrerender(alias_url1));
423 EXPECT_TRUE(AddSimplePrerender(alias_url2)); 485 EXPECT_TRUE(AddSimplePrerender(alias_url2));
424 ASSERT_EQ(prerender_contents, prerender_manager()->GetEntry(url)); 486 ASSERT_EQ(prerender_contents, prerender_manager()->FindAndUseEntry(url));
425 } 487 }
426 488
427 // Ensure that we ignore prerender requests within the rate limit. 489 // Ensure that we ignore prerender requests within the rate limit.
428 TEST_F(PrerenderTest, RateLimitInWindowTest) { 490 TEST_F(PrerenderTest, RateLimitInWindowTest) {
429 GURL url("http://www.google.com/"); 491 GURL url("http://www.google.com/");
430 DummyPrerenderContents* prerender_contents = 492 DummyPrerenderContents* prerender_contents =
431 prerender_manager()->CreateNextPrerenderContents( 493 prerender_manager()->CreateNextPrerenderContents(
432 url, 494 url,
433 FINAL_STATUS_MANAGER_SHUTDOWN); 495 FINAL_STATUS_MANAGER_SHUTDOWN);
434 DummyPrerenderContents* null = NULL; 496 DummyPrerenderContents* null = NULL;
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
482 FINAL_STATUS_USED); 544 FINAL_STATUS_USED);
483 EXPECT_TRUE(AddSimplePrerender(url)); 545 EXPECT_TRUE(AddSimplePrerender(url));
484 546
485 int child_id; 547 int child_id;
486 int route_id; 548 int route_id;
487 ASSERT_TRUE(prerender_contents->GetChildId(&child_id)); 549 ASSERT_TRUE(prerender_contents->GetChildId(&child_id));
488 ASSERT_TRUE(prerender_contents->GetRouteId(&route_id)); 550 ASSERT_TRUE(prerender_contents->GetRouteId(&route_id));
489 551
490 GURL pending_url("http://news.google.com/"); 552 GURL pending_url("http://news.google.com/");
491 553
492 EXPECT_TRUE(prerender_manager()->AddPrerenderFromLinkRelPrerender( 554 DummyPrerenderContents* pending_prerender_contents =
493 child_id, route_id, 555 prerender_manager()->CreateNextPrerenderContents(
494 pending_url, Referrer(url, WebKit::WebReferrerPolicyDefault), 556 pending_url,
495 gfx::Size())); 557 ORIGIN_GWS_PRERENDER,
558 FINAL_STATUS_USED);
559 scoped_ptr<PrerenderHandle> pending_prerender_handle(
560 prerender_manager()->AddPrerenderFromLinkRelPrerender(
561 child_id, route_id, pending_url,
562 Referrer(url, WebKit::WebReferrerPolicyDefault), kSize));
563 DCHECK(pending_prerender_handle.get());
564 EXPECT_TRUE(pending_prerender_handle->IsValid());
565 EXPECT_TRUE(pending_prerender_handle->IsPending());
496 566
497 EXPECT_TRUE(prerender_manager()->IsPendingEntry(pending_url));
498 EXPECT_TRUE(prerender_contents->prerendering_has_started()); 567 EXPECT_TRUE(prerender_contents->prerendering_has_started());
499 ASSERT_EQ(prerender_contents, prerender_manager()->GetEntry(url)); 568 ASSERT_EQ(prerender_contents, prerender_manager()->FindAndUseEntry(url));
569
570 EXPECT_FALSE(pending_prerender_handle->IsPending());
571 ASSERT_EQ(pending_prerender_contents,
572 prerender_manager()->FindAndUseEntry(pending_url));
573 }
574
575 TEST_F(PrerenderTest, InvalidPendingPrerenderTest) {
576 GURL url("http://www.google.com/");
577 DummyPrerenderContents* prerender_contents =
578 prerender_manager()->CreateNextPrerenderContents(
579 url,
580 FINAL_STATUS_USED);
581 EXPECT_TRUE(AddSimplePrerender(url));
582
583 int child_id;
584 int route_id;
585 ASSERT_TRUE(prerender_contents->GetChildId(&child_id));
586 ASSERT_TRUE(prerender_contents->GetRouteId(&route_id));
587
588 // This pending URL has an unsupported scheme, and won't be able
589 // to start.
590 GURL pending_url("ftp://news.google.com/");
591
592 prerender_manager()->CreateNextPrerenderContents(
593 pending_url,
594 ORIGIN_GWS_PRERENDER,
595 FINAL_STATUS_UNSUPPORTED_SCHEME);
596 scoped_ptr<PrerenderHandle> pending_prerender_handle(
597 prerender_manager()->AddPrerenderFromLinkRelPrerender(
598 child_id, route_id, pending_url,
599 Referrer(url, WebKit::WebReferrerPolicyDefault), kSize));
600 DCHECK(pending_prerender_handle.get());
601 EXPECT_TRUE(pending_prerender_handle->IsValid());
602 EXPECT_TRUE(pending_prerender_handle->IsPending());
603
604 EXPECT_TRUE(prerender_contents->prerendering_has_started());
605 ASSERT_EQ(prerender_contents, prerender_manager()->FindAndUseEntry(url));
606
607 EXPECT_FALSE(pending_prerender_handle->IsValid());
608 EXPECT_FALSE(pending_prerender_handle->IsPending());
609 }
610
611 TEST_F(PrerenderTest, CancelPendingPrerenderTest) {
612 GURL url("http://www.google.com/");
613 DummyPrerenderContents* prerender_contents =
614 prerender_manager()->CreateNextPrerenderContents(
615 url,
616 FINAL_STATUS_USED);
617 EXPECT_TRUE(AddSimplePrerender(url));
618
619 int child_id;
620 int route_id;
621 ASSERT_TRUE(prerender_contents->GetChildId(&child_id));
622 ASSERT_TRUE(prerender_contents->GetRouteId(&route_id));
623
624 GURL pending_url("http://news.google.com/");
625
626 scoped_ptr<PrerenderHandle> pending_prerender_handle(
627 prerender_manager()->AddPrerenderFromLinkRelPrerender(
628 child_id, route_id, pending_url,
629 Referrer(url, WebKit::WebReferrerPolicyDefault), kSize));
630 DCHECK(pending_prerender_handle.get());
631 EXPECT_TRUE(pending_prerender_handle->IsValid());
632 EXPECT_TRUE(pending_prerender_handle->IsPending());
633
634 EXPECT_TRUE(prerender_contents->prerendering_has_started());
635
636 pending_prerender_handle->OnCancel();
637 EXPECT_FALSE(pending_prerender_handle->IsValid());
638
639 ASSERT_EQ(prerender_contents, prerender_manager()->FindAndUseEntry(url));
500 } 640 }
501 641
502 // Tests that a PrerenderManager created for a browser session in the control 642 // Tests that a PrerenderManager created for a browser session in the control
503 // group works as expected. 643 // group works as expected.
504 TEST_F(PrerenderTest, ControlGroup) { 644 TEST_F(PrerenderTest, ControlGroup) {
505 RestorePrerenderMode restore_prerender_mode; 645 RestorePrerenderMode restore_prerender_mode;
506 PrerenderManager::SetMode( 646 PrerenderManager::SetMode(
507 PrerenderManager::PRERENDER_MODE_EXPERIMENT_CONTROL_GROUP); 647 PrerenderManager::PRERENDER_MODE_EXPERIMENT_CONTROL_GROUP);
508 GURL url("http://www.google.com/"); 648 GURL url("http://www.google.com/");
509 DummyPrerenderContents* prerender_contents = 649 DummyPrerenderContents* prerender_contents =
510 prerender_manager()->CreateNextPrerenderContents( 650 prerender_manager()->CreateNextPrerenderContents(
511 url, 651 url,
512 FINAL_STATUS_MANAGER_SHUTDOWN); 652 FINAL_STATUS_MANAGER_SHUTDOWN);
513 EXPECT_TRUE(AddSimplePrerender(url)); 653 EXPECT_TRUE(AddSimplePrerender(url));
514 EXPECT_FALSE(prerender_contents->prerendering_has_started()); 654 EXPECT_FALSE(prerender_contents->prerendering_has_started());
515 } 655 }
516 656
517 // Tests that prerendering is cancelled when the source render view does not 657 // Tests that prerendering is cancelled when the source render view does not
518 // exist. On failure, the DCHECK in CreatePrerenderContents() above should be 658 // exist. On failure, the DCHECK in CreatePrerenderContents() above should be
519 // triggered. 659 // triggered.
520 TEST_F(PrerenderTest, SourceRenderViewClosed) { 660 TEST_F(PrerenderTest, SourceRenderViewClosed) {
521 GURL url("http://www.google.com/"); 661 GURL url("http://www.google.com/");
522 prerender_manager()->CreateNextPrerenderContents( 662 prerender_manager()->CreateNextPrerenderContents(
523 url, 663 url,
524 FINAL_STATUS_MANAGER_SHUTDOWN); 664 FINAL_STATUS_MANAGER_SHUTDOWN);
525 EXPECT_FALSE(prerender_link_manager()->OnAddPrerender( 665 EXPECT_FALSE(prerender_link_manager()->OnAddPrerender(
526 100, GetNextPrerenderID(), url, 666 100, GetNextPrerenderID(), url,
527 Referrer(), gfx::Size(), 200)); 667 Referrer(), kSize, 200));
528 } 668 }
529 669
530 // Tests that prerendering is cancelled when we launch a second prerender of 670 // Tests that prerendering is cancelled when we launch a second prerender of
531 // the same target within a short time interval. 671 // the same target within a short time interval.
532 TEST_F(PrerenderTest, RecentlyVisited) { 672 TEST_F(PrerenderTest, RecentlyVisited) {
533 GURL url("http://www.google.com/"); 673 GURL url("http://www.google.com/");
534 674
535 prerender_manager()->RecordNavigation(url); 675 prerender_manager()->RecordNavigation(url);
536 676
537 DummyPrerenderContents* prerender_contents = 677 DummyPrerenderContents* prerender_contents =
538 prerender_manager()->CreateNextPrerenderContents( 678 prerender_manager()->CreateNextPrerenderContents(
539 url, FINAL_STATUS_RECENTLY_VISITED); 679 url, FINAL_STATUS_RECENTLY_VISITED);
540 EXPECT_FALSE(AddSimplePrerender(url)); 680 EXPECT_FALSE(AddSimplePrerender(url));
541 EXPECT_FALSE(prerender_contents->prerendering_has_started()); 681 EXPECT_FALSE(prerender_contents->prerendering_has_started());
542 } 682 }
543 683
544 TEST_F(PrerenderTest, NotSoRecentlyVisited) { 684 TEST_F(PrerenderTest, NotSoRecentlyVisited) {
545 GURL url("http://www.google.com/"); 685 GURL url("http://www.google.com/");
546 686
547 prerender_manager()->RecordNavigation(url); 687 prerender_manager()->RecordNavigation(url);
548 prerender_manager()->AdvanceTimeTicks( 688 prerender_manager()->AdvanceTimeTicks(
549 base::TimeDelta::FromMilliseconds( 689 base::TimeDelta::FromMilliseconds(
550 PrerenderManager::kNavigationRecordWindowMs + 500)); 690 UnitTestPrerenderManager::kNavigationRecordWindowMs + 500));
551 691
552 DummyPrerenderContents* prerender_contents = 692 DummyPrerenderContents* prerender_contents =
553 prerender_manager()->CreateNextPrerenderContents( 693 prerender_manager()->CreateNextPrerenderContents(
554 url, FINAL_STATUS_USED); 694 url, FINAL_STATUS_USED);
555 EXPECT_TRUE(AddSimplePrerender(url)); 695 EXPECT_TRUE(AddSimplePrerender(url));
556 EXPECT_TRUE(prerender_contents->prerendering_has_started()); 696 EXPECT_TRUE(prerender_contents->prerendering_has_started());
557 ASSERT_EQ(prerender_contents, prerender_manager()->GetEntry(url)); 697 ASSERT_EQ(prerender_contents, prerender_manager()->FindAndUseEntry(url));
558 } 698 }
559 699
560 // Tests that our PPLT dummy prerender gets created properly. 700 // Tests that our PPLT dummy prerender gets created properly.
561 TEST_F(PrerenderTest, PPLTDummy) { 701 TEST_F(PrerenderTest, PPLTDummy) {
562 GURL url("http://www.google.com/"); 702 GURL url("http://www.google.com/");
563 DummyPrerenderContents* prerender_contents = 703 DummyPrerenderContents* prerender_contents =
564 prerender_manager()->CreateNextPrerenderContents( 704 prerender_manager()->CreateNextPrerenderContents(
565 url, FINAL_STATUS_UNSUPPORTED_SCHEME); 705 url, FINAL_STATUS_UNSUPPORTED_SCHEME);
566 EXPECT_TRUE(AddSimplePrerender(url)); 706 EXPECT_TRUE(AddSimplePrerender(url));
567 EXPECT_TRUE(prerender_contents->prerendering_has_started()); 707 EXPECT_TRUE(prerender_contents->prerendering_has_started());
568 708
569 DummyPrerenderContents* pplt_dummy_contents = 709 DummyPrerenderContents* pplt_dummy_contents =
570 prerender_manager()->CreateNextPrerenderContents(url, 710 prerender_manager()->CreateNextPrerenderContents(url,
571 FINAL_STATUS_USED); 711 FINAL_STATUS_USED);
572 GURL ftp_url("ftp://ftp.google.com/"); 712 GURL ftp_url("ftp://ftp.google.com/");
573 // Adding this ftp URL will force the expected unsupported scheme error. 713 // Adding this ftp URL will force the expected unsupported scheme error.
574 prerender_contents->AddAliasURL(ftp_url); 714 prerender_contents->AddAliasURL(ftp_url);
575 715
576 ASSERT_EQ(pplt_dummy_contents, prerender_manager()->GetEntry(url)); 716 ASSERT_EQ(pplt_dummy_contents, prerender_manager()->FindAndUseEntry(url));
577 } 717 }
578 718
579 // Tests that our PPLT dummy prerender gets created properly, even 719 // Tests that our PPLT dummy prerender gets created properly, even
580 // when navigating to a page that has been recently navigated to. 720 // when navigating to a page that has been recently navigated to.
581 TEST_F(PrerenderTest, RecentlyVisitedPPLTDummy) { 721 TEST_F(PrerenderTest, RecentlyVisitedPPLTDummy) {
582 GURL url("http://www.google.com/"); 722 GURL url("http://www.google.com/");
583 DummyPrerenderContents* prerender_contents = 723 DummyPrerenderContents* prerender_contents =
584 prerender_manager()->CreateNextPrerenderContents( 724 prerender_manager()->CreateNextPrerenderContents(
585 url, FINAL_STATUS_UNSUPPORTED_SCHEME); 725 url, FINAL_STATUS_UNSUPPORTED_SCHEME);
586 EXPECT_TRUE(AddSimplePrerender(url)); 726 EXPECT_TRUE(AddSimplePrerender(url));
587 EXPECT_TRUE(prerender_contents->prerendering_has_started()); 727 EXPECT_TRUE(prerender_contents->prerendering_has_started());
588 728
589 DummyPrerenderContents* pplt_dummy_contents = 729 DummyPrerenderContents* pplt_dummy_contents =
590 prerender_manager()->CreateNextPrerenderContents(url, 730 prerender_manager()->CreateNextPrerenderContents(url,
591 FINAL_STATUS_USED); 731 FINAL_STATUS_USED);
592 prerender_manager()->RecordNavigation(url); 732 prerender_manager()->RecordNavigation(url);
593 GURL ftp_url("ftp://ftp.google.com/"); 733 GURL ftp_url("ftp://ftp.google.com/");
594 prerender_contents->AddAliasURL(ftp_url); 734 prerender_contents->AddAliasURL(ftp_url);
595 735
596 ASSERT_EQ(pplt_dummy_contents, prerender_manager()->GetEntry(url)); 736 ASSERT_EQ(pplt_dummy_contents, prerender_manager()->FindAndUseEntry(url));
597 } 737 }
598 738
599 // Tests that the prerender manager ignores fragment references when matching 739 // Tests that the prerender link manager discards fragments when launching,
600 // prerender URLs in the case the fragment is not in the prerender URL. 740 // and matches only occur on URLs without fragments.
601 TEST_F(PrerenderTest, PageMatchesFragmentTest) { 741 // TODO(gavinp): Drop this test once we are fragment clean.
742 TEST_F(PrerenderTest, FragmentDroppedOnLaunchTest) {
743 GURL fragment_url("http://www.google.com/#test");
602 GURL url("http://www.google.com/"); 744 GURL url("http://www.google.com/");
603 GURL fragment_url("http://www.google.com/#test");
604 745
605 DummyPrerenderContents* prerender_contents = 746 DummyPrerenderContents* prerender_contents =
606 prerender_manager()->CreateNextPrerenderContents(url, 747 prerender_manager()->CreateNextPrerenderContents(url,
607 FINAL_STATUS_USED); 748 FINAL_STATUS_USED);
608 EXPECT_TRUE(AddSimplePrerender(url)); 749 EXPECT_TRUE(AddSimplePrerender(fragment_url));
609 EXPECT_TRUE(prerender_contents->prerendering_has_started()); 750 EXPECT_TRUE(prerender_contents->prerendering_has_started());
610 ASSERT_EQ(prerender_contents, prerender_manager()->GetEntry(fragment_url)); 751 EXPECT_FALSE(prerender_manager()->FindEntry(fragment_url));
752 ASSERT_EQ(prerender_contents, prerender_manager()->FindAndUseEntry(url));
611 } 753 }
612 754
613 // Tests that the prerender manager ignores fragment references when matching 755 // Tests that the prerender manager matches include the fragment.
614 // prerender URLs in the case the fragment is in the prerender URL. 756 // TODO(gavinp): Re-enable this once we are fragment clean.
615 // TODO(gavinp): Re-enable this in the Prerender API once we're officially
616 // fragment clean. 757 // fragment clean.
617 TEST_F(PrerenderTest, DISABLED_FragmentMatchesPageTest) { 758 TEST_F(PrerenderTest, DISABLED_FragmentMatchesTest) {
618 GURL url("http://www.google.com/");
619 GURL fragment_url("http://www.google.com/#test"); 759 GURL fragment_url("http://www.google.com/#test");
620 760
621 DummyPrerenderContents* prerender_contents = 761 DummyPrerenderContents* prerender_contents =
622 prerender_manager()->CreateNextPrerenderContents(fragment_url, 762 prerender_manager()->CreateNextPrerenderContents(fragment_url,
623 FINAL_STATUS_USED); 763 FINAL_STATUS_USED);
624 EXPECT_TRUE(AddSimplePrerender(fragment_url)); 764 EXPECT_TRUE(AddSimplePrerender(fragment_url));
625 EXPECT_TRUE(prerender_contents->prerendering_has_started()); 765 EXPECT_TRUE(prerender_contents->prerendering_has_started());
626 ASSERT_EQ(prerender_contents, prerender_manager()->GetEntry(url)); 766 ASSERT_EQ(prerender_contents,
767 prerender_manager()->FindAndUseEntry(fragment_url));
627 } 768 }
628 769
629 // Tests that the prerender manager ignores fragment references when matching 770 // Tests that the prerender manager uses fragment references when matching
630 // prerender URLs in the case the fragment is in both URLs. 771 // prerender URLs in the case a different fragment is in both URLs.
631 // TODO(gavinp): Re-enable this in the Prerender API once we're officially 772 // TODO(gavinp): Re-enable this once we are fragment clean.
632 // fragment clean. 773 TEST_F(PrerenderTest, DISABLED_FragmentsDifferTest) {
633 TEST_F(PrerenderTest, DISABLED_FragmentMatchesFragmentTest) {
634 GURL fragment_url("http://www.google.com/#test"); 774 GURL fragment_url("http://www.google.com/#test");
635 GURL other_fragment_url("http://www.google.com/#other_test"); 775 GURL other_fragment_url("http://www.google.com/#other_test");
636 776
637 DummyPrerenderContents* prerender_contents = 777 DummyPrerenderContents* prerender_contents =
638 prerender_manager()->CreateNextPrerenderContents(fragment_url, 778 prerender_manager()->CreateNextPrerenderContents(fragment_url,
639 FINAL_STATUS_USED); 779 FINAL_STATUS_USED);
640 EXPECT_TRUE(AddSimplePrerender(fragment_url)); 780 EXPECT_TRUE(AddSimplePrerender(fragment_url));
641 EXPECT_TRUE(prerender_contents->prerendering_has_started()); 781 EXPECT_TRUE(prerender_contents->prerendering_has_started());
782
783 DummyPrerenderContents* null = NULL;
784 ASSERT_EQ(null, prerender_manager()->FindEntry(other_fragment_url));
785
642 ASSERT_EQ(prerender_contents, 786 ASSERT_EQ(prerender_contents,
643 prerender_manager()->GetEntry(other_fragment_url)); 787 prerender_manager()->FindAndUseEntry(fragment_url));
644 } 788 }
645 789
646 // Make sure that clearing works as expected. 790 // Make sure that clearing works as expected.
647 TEST_F(PrerenderTest, ClearTest) { 791 TEST_F(PrerenderTest, ClearTest) {
648 GURL url("http://www.google.com/"); 792 GURL url("http://www.google.com/");
649 DummyPrerenderContents* prerender_contents = 793 DummyPrerenderContents* prerender_contents =
650 prerender_manager()->CreateNextPrerenderContents( 794 prerender_manager()->CreateNextPrerenderContents(
651 url, 795 url,
652 FINAL_STATUS_CACHE_OR_HISTORY_CLEARED); 796 FINAL_STATUS_CACHE_OR_HISTORY_CLEARED);
653 EXPECT_TRUE(AddSimplePrerender(url)); 797 EXPECT_TRUE(AddSimplePrerender(url));
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
693 837
694 EXPECT_TRUE(prerender_contents->prerendering_has_started()); 838 EXPECT_TRUE(prerender_contents->prerendering_has_started());
695 EXPECT_FALSE(prerender_contents->prerendering_has_been_cancelled()); 839 EXPECT_FALSE(prerender_contents->prerendering_has_been_cancelled());
696 ASSERT_EQ(prerender_contents, prerender_manager()->FindEntry(url)); 840 ASSERT_EQ(prerender_contents, prerender_manager()->FindEntry(url));
697 EXPECT_FALSE(IsEmptyPrerenderLinkManager()); 841 EXPECT_FALSE(IsEmptyPrerenderLinkManager());
698 prerender_link_manager()->OnCancelPrerender(kDefaultChildId, 842 prerender_link_manager()->OnCancelPrerender(kDefaultChildId,
699 last_prerender_id()); 843 last_prerender_id());
700 844
701 EXPECT_TRUE(prerender_contents->prerendering_has_been_cancelled()); 845 EXPECT_TRUE(prerender_contents->prerendering_has_been_cancelled());
702 DummyPrerenderContents* null = NULL; 846 DummyPrerenderContents* null = NULL;
703 ASSERT_EQ(null, prerender_manager()->GetEntry(url)); 847 ASSERT_EQ(null, prerender_manager()->FindEntry(url));
704 EXPECT_TRUE(IsEmptyPrerenderLinkManager()); 848 EXPECT_TRUE(IsEmptyPrerenderLinkManager());
705 } 849 }
706 850
707 TEST_F(PrerenderTest, LinkManagerCancelThenAbandon) { 851 TEST_F(PrerenderTest, LinkManagerCancelThenAbandon) {
708 EXPECT_TRUE(IsEmptyPrerenderLinkManager()); 852 EXPECT_TRUE(IsEmptyPrerenderLinkManager());
709 GURL url("http://www.myexample.com"); 853 GURL url("http://www.myexample.com");
710 DummyPrerenderContents* prerender_contents = 854 DummyPrerenderContents* prerender_contents =
711 prerender_manager()->CreateNextPrerenderContents( 855 prerender_manager()->CreateNextPrerenderContents(
712 url, FINAL_STATUS_CANCELLED); 856 url, FINAL_STATUS_CANCELLED);
713 857
714 EXPECT_TRUE(AddSimplePrerender(url)); 858 EXPECT_TRUE(AddSimplePrerender(url));
715 859
716 EXPECT_TRUE(prerender_contents->prerendering_has_started()); 860 EXPECT_TRUE(prerender_contents->prerendering_has_started());
717 EXPECT_FALSE(prerender_contents->prerendering_has_been_cancelled()); 861 EXPECT_FALSE(prerender_contents->prerendering_has_been_cancelled());
718 ASSERT_EQ(prerender_contents, prerender_manager()->FindEntry(url)); 862 ASSERT_EQ(prerender_contents, prerender_manager()->FindEntry(url));
719 EXPECT_FALSE(IsEmptyPrerenderLinkManager()); 863 EXPECT_FALSE(IsEmptyPrerenderLinkManager());
720 prerender_link_manager()->OnCancelPrerender(kDefaultChildId, 864 prerender_link_manager()->OnCancelPrerender(kDefaultChildId,
721 last_prerender_id()); 865 last_prerender_id());
722 866
723 EXPECT_TRUE(IsEmptyPrerenderLinkManager()); 867 EXPECT_TRUE(IsEmptyPrerenderLinkManager());
724 EXPECT_TRUE(prerender_contents->prerendering_has_been_cancelled()); 868 EXPECT_TRUE(prerender_contents->prerendering_has_been_cancelled());
725 prerender_link_manager()->OnAbandonPrerender(kDefaultChildId, 869 prerender_link_manager()->OnAbandonPrerender(kDefaultChildId,
726 last_prerender_id()); 870 last_prerender_id());
727 871
728 EXPECT_TRUE(IsEmptyPrerenderLinkManager()); 872 EXPECT_TRUE(IsEmptyPrerenderLinkManager());
729 EXPECT_TRUE(prerender_contents->prerendering_has_been_cancelled()); 873 EXPECT_TRUE(prerender_contents->prerendering_has_been_cancelled());
730 DummyPrerenderContents* null = NULL; 874 DummyPrerenderContents* null = NULL;
731 ASSERT_EQ(null, prerender_manager()->GetEntry(url)); 875 ASSERT_EQ(null, prerender_manager()->FindEntry(url));
732 } 876 }
733 877
734 // TODO(gavinp): Update this test after abandon has an effect on Prerenders, 878 // TODO(gavinp): Re-enabmed this test after abandon has an effect on Prerenders,
735 // like shortening the timeouts. 879 // like shortening the timeouts.
736 TEST_F(PrerenderTest, LinkManagerAbandon) { 880 TEST_F(PrerenderTest, LinkManagerAbandon) {
737 EXPECT_TRUE(IsEmptyPrerenderLinkManager()); 881 EXPECT_TRUE(IsEmptyPrerenderLinkManager());
738 GURL url("http://www.myexample.com"); 882 GURL url("http://www.myexample.com");
739 DummyPrerenderContents* prerender_contents = 883 DummyPrerenderContents* prerender_contents =
740 prerender_manager()->CreateNextPrerenderContents( 884 prerender_manager()->CreateNextPrerenderContents(
741 url, FINAL_STATUS_USED); 885 url, FINAL_STATUS_USED);
742 886
743 EXPECT_TRUE(AddSimplePrerender(url)); 887 EXPECT_TRUE(AddSimplePrerender(url));
744 888
745 EXPECT_TRUE(prerender_contents->prerendering_has_started()); 889 EXPECT_TRUE(prerender_contents->prerendering_has_started());
746 EXPECT_FALSE(prerender_contents->prerendering_has_been_cancelled()); 890 EXPECT_FALSE(prerender_contents->prerendering_has_been_cancelled());
747 ASSERT_EQ(prerender_contents, prerender_manager()->FindEntry(url)); 891 ASSERT_EQ(prerender_contents, prerender_manager()->FindEntry(url));
748 EXPECT_FALSE(IsEmptyPrerenderLinkManager()); 892 EXPECT_FALSE(IsEmptyPrerenderLinkManager());
749 prerender_link_manager()->OnAbandonPrerender(kDefaultChildId, 893 prerender_link_manager()->OnAbandonPrerender(kDefaultChildId,
750 last_prerender_id()); 894 last_prerender_id());
751 895
752 EXPECT_FALSE(prerender_contents->prerendering_has_been_cancelled()); 896 EXPECT_FALSE(prerender_contents->prerendering_has_been_cancelled());
753 ASSERT_EQ(prerender_contents, prerender_manager()->GetEntry(url)); 897 ASSERT_EQ(prerender_contents, prerender_manager()->FindAndUseEntry(url));
754 EXPECT_TRUE(IsEmptyPrerenderLinkManager()); 898 EXPECT_TRUE(IsEmptyPrerenderLinkManager());
755 } 899 }
756 900
757 TEST_F(PrerenderTest, LinkManagerCancelTwice) { 901 TEST_F(PrerenderTest, LinkManagerCancelTwice) {
758 EXPECT_TRUE(IsEmptyPrerenderLinkManager()); 902 EXPECT_TRUE(IsEmptyPrerenderLinkManager());
759 GURL url("http://www.myexample.com"); 903 GURL url("http://www.myexample.com");
760 DummyPrerenderContents* prerender_contents = 904 DummyPrerenderContents* prerender_contents =
761 prerender_manager()->CreateNextPrerenderContents( 905 prerender_manager()->CreateNextPrerenderContents(
762 url, FINAL_STATUS_CANCELLED); 906 url, FINAL_STATUS_CANCELLED);
763 907
764 EXPECT_TRUE(AddSimplePrerender(url)); 908 EXPECT_TRUE(AddSimplePrerender(url));
765 EXPECT_TRUE(prerender_contents->prerendering_has_started()); 909 EXPECT_TRUE(prerender_contents->prerendering_has_started());
766 EXPECT_FALSE(prerender_contents->prerendering_has_been_cancelled()); 910 EXPECT_FALSE(prerender_contents->prerendering_has_been_cancelled());
767 ASSERT_EQ(prerender_contents, prerender_manager()->FindEntry(url)); 911 ASSERT_EQ(prerender_contents, prerender_manager()->FindEntry(url));
768 prerender_link_manager()->OnCancelPrerender(kDefaultChildId, 912 prerender_link_manager()->OnCancelPrerender(kDefaultChildId,
769 last_prerender_id()); 913 last_prerender_id());
770 914
771 EXPECT_TRUE(IsEmptyPrerenderLinkManager()); 915 EXPECT_TRUE(IsEmptyPrerenderLinkManager());
772 EXPECT_TRUE(prerender_contents->prerendering_has_been_cancelled()); 916 EXPECT_TRUE(prerender_contents->prerendering_has_been_cancelled());
773 DummyPrerenderContents* null = NULL; 917 DummyPrerenderContents* null = NULL;
774 ASSERT_EQ(null, prerender_manager()->GetEntry(url)); 918 ASSERT_EQ(null, prerender_manager()->FindEntry(url));
775 prerender_link_manager()->OnCancelPrerender(kDefaultChildId, 919 prerender_link_manager()->OnCancelPrerender(kDefaultChildId,
776 last_prerender_id()); 920 last_prerender_id());
777 } 921 }
778 922
779 TEST_F(PrerenderTest, LinkManagerAddTwiceCancelTwice) { 923 TEST_F(PrerenderTest, LinkManagerAddTwiceCancelTwice) {
780 EXPECT_TRUE(IsEmptyPrerenderLinkManager()); 924 EXPECT_TRUE(IsEmptyPrerenderLinkManager());
781 GURL url("http://www.myexample.com"); 925 GURL url("http://www.myexample.com");
782 DummyPrerenderContents* prerender_contents = 926 DummyPrerenderContents* prerender_contents =
783 prerender_manager()->CreateNextPrerenderContents( 927 prerender_manager()->CreateNextPrerenderContents(
784 url, FINAL_STATUS_CANCELLED); 928 url, FINAL_STATUS_CANCELLED);
(...skipping 14 matching lines...) Expand all
799 first_prerender_id); 943 first_prerender_id);
800 944
801 EXPECT_FALSE(prerender_contents->prerendering_has_been_cancelled()); 945 EXPECT_FALSE(prerender_contents->prerendering_has_been_cancelled());
802 ASSERT_EQ(prerender_contents, prerender_manager()->FindEntry(url)); 946 ASSERT_EQ(prerender_contents, prerender_manager()->FindEntry(url));
803 prerender_link_manager()->OnCancelPrerender(kDefaultChildId, 947 prerender_link_manager()->OnCancelPrerender(kDefaultChildId,
804 second_prerender_id); 948 second_prerender_id);
805 949
806 EXPECT_TRUE(IsEmptyPrerenderLinkManager()); 950 EXPECT_TRUE(IsEmptyPrerenderLinkManager());
807 EXPECT_TRUE(prerender_contents->prerendering_has_been_cancelled()); 951 EXPECT_TRUE(prerender_contents->prerendering_has_been_cancelled());
808 DummyPrerenderContents* null = NULL; 952 DummyPrerenderContents* null = NULL;
809 ASSERT_EQ(null, prerender_manager()->GetEntry(url)); 953 ASSERT_EQ(null, prerender_manager()->FindEntry(url));
810 } 954 }
811 955
812 TEST_F(PrerenderTest, LinkManagerAddTwiceCancelTwiceThenAbandonTwice) { 956 TEST_F(PrerenderTest, LinkManagerAddTwiceCancelTwiceThenAbandonTwice) {
813 EXPECT_TRUE(IsEmptyPrerenderLinkManager()); 957 EXPECT_TRUE(IsEmptyPrerenderLinkManager());
814 GURL url("http://www.myexample.com"); 958 GURL url("http://www.myexample.com");
815 DummyPrerenderContents* prerender_contents = 959 DummyPrerenderContents* prerender_contents =
816 prerender_manager()->CreateNextPrerenderContents( 960 prerender_manager()->CreateNextPrerenderContents(
817 url, FINAL_STATUS_CANCELLED); 961 url, FINAL_STATUS_CANCELLED);
818 962
819 EXPECT_TRUE(AddSimplePrerender(url)); 963 EXPECT_TRUE(AddSimplePrerender(url));
(...skipping 22 matching lines...) Expand all
842 first_prerender_id); 986 first_prerender_id);
843 987
844 EXPECT_TRUE(IsEmptyPrerenderLinkManager()); 988 EXPECT_TRUE(IsEmptyPrerenderLinkManager());
845 EXPECT_TRUE(prerender_contents->prerendering_has_been_cancelled()); 989 EXPECT_TRUE(prerender_contents->prerendering_has_been_cancelled());
846 prerender_link_manager()->OnAbandonPrerender(kDefaultChildId, 990 prerender_link_manager()->OnAbandonPrerender(kDefaultChildId,
847 second_prerender_id); 991 second_prerender_id);
848 992
849 EXPECT_TRUE(IsEmptyPrerenderLinkManager()); 993 EXPECT_TRUE(IsEmptyPrerenderLinkManager());
850 EXPECT_TRUE(prerender_contents->prerendering_has_been_cancelled()); 994 EXPECT_TRUE(prerender_contents->prerendering_has_been_cancelled());
851 DummyPrerenderContents* null = NULL; 995 DummyPrerenderContents* null = NULL;
852 ASSERT_EQ(null, prerender_manager()->GetEntry(url)); 996 ASSERT_EQ(null, prerender_manager()->FindEntry(url));
853 } 997 }
854 998
855 // TODO(gavinp): Update this test after abandon has an effect on Prerenders, 999 // TODO(gavinp): Update this test after abandon has an effect on Prerenders,
856 // like shortening the timeouts. 1000 // like shortening the timeouts.
857 TEST_F(PrerenderTest, LinkManagerAddTwiceAbandonTwice) { 1001 TEST_F(PrerenderTest, LinkManagerAddTwiceAbandonTwice) {
858 EXPECT_TRUE(IsEmptyPrerenderLinkManager()); 1002 EXPECT_TRUE(IsEmptyPrerenderLinkManager());
859 GURL url("http://www.myexample.com"); 1003 GURL url("http://www.myexample.com");
860 DummyPrerenderContents* prerender_contents = 1004 DummyPrerenderContents* prerender_contents =
861 prerender_manager()->CreateNextPrerenderContents( 1005 prerender_manager()->CreateNextPrerenderContents(
862 url, FINAL_STATUS_USED); 1006 url, FINAL_STATUS_USED);
(...skipping 13 matching lines...) Expand all
876 prerender_link_manager()->OnAbandonPrerender(kDefaultChildId, 1020 prerender_link_manager()->OnAbandonPrerender(kDefaultChildId,
877 first_prerender_id); 1021 first_prerender_id);
878 1022
879 EXPECT_FALSE(prerender_contents->prerendering_has_been_cancelled()); 1023 EXPECT_FALSE(prerender_contents->prerendering_has_been_cancelled());
880 ASSERT_EQ(prerender_contents, prerender_manager()->FindEntry(url)); 1024 ASSERT_EQ(prerender_contents, prerender_manager()->FindEntry(url));
881 prerender_link_manager()->OnAbandonPrerender(kDefaultChildId, 1025 prerender_link_manager()->OnAbandonPrerender(kDefaultChildId,
882 second_prerender_id); 1026 second_prerender_id);
883 1027
884 EXPECT_TRUE(IsEmptyPrerenderLinkManager()); 1028 EXPECT_TRUE(IsEmptyPrerenderLinkManager());
885 EXPECT_FALSE(prerender_contents->prerendering_has_been_cancelled()); 1029 EXPECT_FALSE(prerender_contents->prerendering_has_been_cancelled());
886 ASSERT_EQ(prerender_contents, prerender_manager()->GetEntry(url)); 1030 ASSERT_EQ(prerender_contents, prerender_manager()->FindAndUseEntry(url));
887 } 1031 }
888 1032
889 // TODO(gavinp): After abandon shortens the expire time on a Prerender, 1033 // 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 1034 // add a series of tests testing advancing the time by either the abandon
891 // or normal expire, and verifying the expected behaviour with groups 1035 // or normal expire, and verifying the expected behaviour with groups
892 // of links. 1036 // of links.
893 TEST_F(PrerenderTest, LinkManagerExpireThenCancel) { 1037 TEST_F(PrerenderTest, LinkManagerExpireThenCancel) {
894 EXPECT_TRUE(IsEmptyPrerenderLinkManager()); 1038 EXPECT_TRUE(IsEmptyPrerenderLinkManager());
895 GURL url("http://www.myexample.com"); 1039 GURL url("http://www.myexample.com");
896 DummyPrerenderContents* prerender_contents = 1040 DummyPrerenderContents* prerender_contents =
897 prerender_manager()->CreateNextPrerenderContents( 1041 prerender_manager()->CreateNextPrerenderContents(
898 url, FINAL_STATUS_TIMED_OUT); 1042 url, FINAL_STATUS_TIMED_OUT);
899 1043
900 EXPECT_TRUE(AddSimplePrerender(url)); 1044 EXPECT_TRUE(AddSimplePrerender(url));
901 1045
902 EXPECT_TRUE(prerender_contents->prerendering_has_started()); 1046 EXPECT_TRUE(prerender_contents->prerendering_has_started());
903 EXPECT_FALSE(prerender_contents->prerendering_has_been_cancelled()); 1047 EXPECT_FALSE(prerender_contents->prerendering_has_been_cancelled());
904 ASSERT_EQ(prerender_contents, prerender_manager()->FindEntry(url)); 1048 ASSERT_EQ(prerender_contents, prerender_manager()->FindEntry(url));
905 prerender_manager()->AdvanceTime(prerender_manager()->GetMaxAge() + 1049 prerender_manager()->AdvanceTimeTicks(prerender_manager()->GetMaxAge() +
906 base::TimeDelta::FromSeconds(1)); 1050 base::TimeDelta::FromSeconds(1));
907 1051
908 EXPECT_FALSE(IsEmptyPrerenderLinkManager()); 1052 EXPECT_FALSE(IsEmptyPrerenderLinkManager());
909 DummyPrerenderContents* null = NULL; 1053 DummyPrerenderContents* null = NULL;
910 ASSERT_EQ(null, prerender_manager()->GetEntry(url)); 1054 ASSERT_EQ(null, prerender_manager()->FindEntry(url));
911 prerender_link_manager()->OnCancelPrerender(kDefaultChildId, 1055 prerender_link_manager()->OnCancelPrerender(kDefaultChildId,
912 last_prerender_id()); 1056 last_prerender_id());
913 1057
914 EXPECT_TRUE(IsEmptyPrerenderLinkManager()); 1058 EXPECT_TRUE(IsEmptyPrerenderLinkManager());
915 ASSERT_EQ(null, prerender_manager()->GetEntry(url)); 1059 ASSERT_EQ(null, prerender_manager()->FindEntry(url));
916 } 1060 }
917 1061
918 TEST_F(PrerenderTest, LinkManagerExpireThenAddAgain) { 1062 TEST_F(PrerenderTest, LinkManagerExpireThenAddAgain) {
919 EXPECT_TRUE(IsEmptyPrerenderLinkManager()); 1063 EXPECT_TRUE(IsEmptyPrerenderLinkManager());
920 GURL url("http://www.myexample.com"); 1064 GURL url("http://www.myexample.com");
921 DummyPrerenderContents* first_prerender_contents = 1065 DummyPrerenderContents* first_prerender_contents =
922 prerender_manager()->CreateNextPrerenderContents( 1066 prerender_manager()->CreateNextPrerenderContents(
923 url, FINAL_STATUS_TIMED_OUT); 1067 url, FINAL_STATUS_TIMED_OUT);
924 EXPECT_TRUE(AddSimplePrerender(url)); 1068 EXPECT_TRUE(AddSimplePrerender(url));
925 EXPECT_TRUE(first_prerender_contents->prerendering_has_started()); 1069 EXPECT_TRUE(first_prerender_contents->prerendering_has_started());
926 EXPECT_FALSE(first_prerender_contents->prerendering_has_been_cancelled()); 1070 EXPECT_FALSE(first_prerender_contents->prerendering_has_been_cancelled());
927 ASSERT_EQ(first_prerender_contents, prerender_manager()->FindEntry(url)); 1071 ASSERT_EQ(first_prerender_contents,
928 prerender_manager()->AdvanceTime(prerender_manager()->GetMaxAge() + 1072 prerender_manager()->FindAndUseEntry(url));
929 base::TimeDelta::FromSeconds(1)); 1073 prerender_manager()->AdvanceTimeTicks(prerender_manager()->GetMaxAge() +
1074 base::TimeDelta::FromSeconds(1));
930 DummyPrerenderContents* null = NULL; 1075 DummyPrerenderContents* null = NULL;
931 ASSERT_EQ(null, prerender_manager()->GetEntry(url)); 1076 ASSERT_EQ(null, prerender_manager()->FindEntry(url));
932 DummyPrerenderContents* second_prerender_contents = 1077 DummyPrerenderContents* second_prerender_contents =
933 prerender_manager()->CreateNextPrerenderContents( 1078 prerender_manager()->CreateNextPrerenderContents(
934 url, FINAL_STATUS_USED); 1079 url, FINAL_STATUS_USED);
935 EXPECT_TRUE(AddSimplePrerender(url)); 1080 EXPECT_TRUE(AddSimplePrerender(url));
936 EXPECT_TRUE(second_prerender_contents->prerendering_has_started()); 1081 EXPECT_TRUE(second_prerender_contents->prerendering_has_started());
937 ASSERT_EQ(second_prerender_contents, prerender_manager()->GetEntry(url)); 1082 ASSERT_EQ(second_prerender_contents,
1083 prerender_manager()->FindAndUseEntry(url));
938 // The PrerenderLinkManager is not empty since we never removed the first 1084 // The PrerenderLinkManager is not empty since we never removed the first
939 // prerender. 1085 // prerender.
940 EXPECT_FALSE(IsEmptyPrerenderLinkManager()); 1086 EXPECT_FALSE(IsEmptyPrerenderLinkManager());
941 } 1087 }
942 1088
943 TEST_F(PrerenderTest, LinkManagerCancelThenAddAgain) { 1089 TEST_F(PrerenderTest, LinkManagerCancelThenAddAgain) {
944 EXPECT_TRUE(IsEmptyPrerenderLinkManager()); 1090 EXPECT_TRUE(IsEmptyPrerenderLinkManager());
945 GURL url("http://www.myexample.com"); 1091 GURL url("http://www.myexample.com");
946 DummyPrerenderContents* first_prerender_contents = 1092 DummyPrerenderContents* first_prerender_contents =
947 prerender_manager()->CreateNextPrerenderContents( 1093 prerender_manager()->CreateNextPrerenderContents(
948 url, FINAL_STATUS_CANCELLED); 1094 url, FINAL_STATUS_CANCELLED);
949 EXPECT_TRUE(AddSimplePrerender(url)); 1095 EXPECT_TRUE(AddSimplePrerender(url));
950 EXPECT_TRUE(first_prerender_contents->prerendering_has_started()); 1096 EXPECT_TRUE(first_prerender_contents->prerendering_has_started());
951 EXPECT_FALSE(first_prerender_contents->prerendering_has_been_cancelled()); 1097 EXPECT_FALSE(first_prerender_contents->prerendering_has_been_cancelled());
952 ASSERT_EQ(first_prerender_contents, prerender_manager()->FindEntry(url)); 1098 ASSERT_EQ(first_prerender_contents, prerender_manager()->FindEntry(url));
953 prerender_link_manager()->OnCancelPrerender(kDefaultChildId, 1099 prerender_link_manager()->OnCancelPrerender(kDefaultChildId,
954 last_prerender_id()); 1100 last_prerender_id());
955 EXPECT_TRUE(IsEmptyPrerenderLinkManager()); 1101 EXPECT_TRUE(IsEmptyPrerenderLinkManager());
956 EXPECT_TRUE(first_prerender_contents->prerendering_has_been_cancelled()); 1102 EXPECT_TRUE(first_prerender_contents->prerendering_has_been_cancelled());
957 DummyPrerenderContents* null = NULL; 1103 DummyPrerenderContents* null = NULL;
958 ASSERT_EQ(null, prerender_manager()->GetEntry(url)); 1104 ASSERT_EQ(null, prerender_manager()->FindEntry(url));
959 DummyPrerenderContents* second_prerender_contents = 1105 DummyPrerenderContents* second_prerender_contents =
960 prerender_manager()->CreateNextPrerenderContents( 1106 prerender_manager()->CreateNextPrerenderContents(
961 url, FINAL_STATUS_USED); 1107 url, FINAL_STATUS_USED);
962 EXPECT_TRUE(AddSimplePrerender(url)); 1108 EXPECT_TRUE(AddSimplePrerender(url));
963 EXPECT_TRUE(second_prerender_contents->prerendering_has_started()); 1109 EXPECT_TRUE(second_prerender_contents->prerendering_has_started());
964 ASSERT_EQ(second_prerender_contents, prerender_manager()->GetEntry(url)); 1110 ASSERT_EQ(second_prerender_contents,
1111 prerender_manager()->FindAndUseEntry(url));
965 EXPECT_FALSE(IsEmptyPrerenderLinkManager()); 1112 EXPECT_FALSE(IsEmptyPrerenderLinkManager());
966 } 1113 }
967 1114
968 } // namespace prerender 1115 } // namespace prerender
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698