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

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

Powered by Google App Engine
This is Rietveld 408576698