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

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

Issue 7210020: Added prerendering to omnibox. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Remove TODO Created 9 years, 6 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) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 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/memory/scoped_vector.h" 5 #include "base/memory/scoped_vector.h"
6 #include "base/time.h" 6 #include "base/time.h"
7 #include "chrome/browser/prerender/prerender_contents.h" 7 #include "chrome/browser/prerender/prerender_contents.h"
8 #include "chrome/browser/prerender/prerender_manager.h" 8 #include "chrome/browser/prerender/prerender_manager.h"
9 #include "chrome/test/testing_browser_process.h" 9 #include "chrome/test/testing_browser_process.h"
10 #include "content/browser/browser_thread.h" 10 #include "content/browser/browser_thread.h"
(...skipping 100 matching lines...) Expand 10 before | Expand all | Expand 10 after
111 expected_final_status); 111 expected_final_status);
112 for (std::vector<GURL>::const_iterator it = alias_urls.begin(); 112 for (std::vector<GURL>::const_iterator it = alias_urls.begin();
113 it != alias_urls.end(); 113 it != alias_urls.end();
114 ++it) { 114 ++it) {
115 EXPECT_TRUE(prerender_contents->AddAliasURL(*it)); 115 EXPECT_TRUE(prerender_contents->AddAliasURL(*it));
116 } 116 }
117 SetNextPrerenderContents(prerender_contents); 117 SetNextPrerenderContents(prerender_contents);
118 return prerender_contents; 118 return prerender_contents;
119 } 119 }
120 120
121 // Shorthand to add a simple preload with no aliases.
122 bool AddSimplePreload(const GURL& url) {
123 return AddPreload(std::pair<int, int>(-1, -1), url, GURL());
124 }
125
126 bool IsPendingEntry(const GURL& url) { 121 bool IsPendingEntry(const GURL& url) {
127 return (PrerenderManager::FindPendingEntry(url) != NULL); 122 return (PrerenderManager::FindPendingEntry(url) != NULL);
128 } 123 }
129 124
130 void set_rate_limit_enabled(bool enabled) { rate_limit_enabled_ = true; } 125 void set_rate_limit_enabled(bool enabled) { rate_limit_enabled_ = true; }
131 126
132 PrerenderContents* next_prerender_contents() { 127 PrerenderContents* next_prerender_contents() {
133 return next_prerender_contents_.get(); 128 return next_prerender_contents_.get();
134 } 129 }
135 130
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after
205 GURL url("http://www.google.com/"); 200 GURL url("http://www.google.com/");
206 EXPECT_FALSE(prerender_manager()->MaybeUsePreloadedPage(NULL, url, false)); 201 EXPECT_FALSE(prerender_manager()->MaybeUsePreloadedPage(NULL, url, false));
207 } 202 }
208 203
209 TEST_F(PrerenderManagerTest, FoundTest) { 204 TEST_F(PrerenderManagerTest, FoundTest) {
210 GURL url("http://www.google.com/"); 205 GURL url("http://www.google.com/");
211 DummyPrerenderContents* prerender_contents = 206 DummyPrerenderContents* prerender_contents =
212 prerender_manager()->CreateNextPrerenderContents( 207 prerender_manager()->CreateNextPrerenderContents(
213 url, 208 url,
214 FINAL_STATUS_USED); 209 FINAL_STATUS_USED);
215 EXPECT_TRUE(prerender_manager()->AddSimplePreload(url)); 210 EXPECT_TRUE(prerender_manager()->AddPrerenderWithNoTag(url));
216 EXPECT_TRUE(prerender_contents->has_started()); 211 EXPECT_TRUE(prerender_contents->has_started());
217 ASSERT_EQ(prerender_contents, prerender_manager()->GetEntry(url)); 212 ASSERT_EQ(prerender_contents, prerender_manager()->GetEntry(url));
218 } 213 }
219 214
220 // Make sure that if queue a request, and a second prerender request for the 215 // Make sure that if queue a request, and a second prerender request for the
221 // same URL comes in, that we drop the second request and keep the first one. 216 // same URL comes in, that we drop the second request and keep the first one.
222 TEST_F(PrerenderManagerTest, DropSecondRequestTest) { 217 TEST_F(PrerenderManagerTest, DropSecondRequestTest) {
223 GURL url("http://www.google.com/"); 218 GURL url("http://www.google.com/");
224 DummyPrerenderContents* prerender_contents = 219 DummyPrerenderContents* prerender_contents =
225 prerender_manager()->CreateNextPrerenderContents( 220 prerender_manager()->CreateNextPrerenderContents(
226 url, 221 url,
227 FINAL_STATUS_USED); 222 FINAL_STATUS_USED);
228 DummyPrerenderContents* null = NULL; 223 DummyPrerenderContents* null = NULL;
229 EXPECT_TRUE(prerender_manager()->AddSimplePreload(url)); 224 EXPECT_TRUE(prerender_manager()->AddPrerenderWithNoTag(url));
230 EXPECT_EQ(null, prerender_manager()->next_prerender_contents()); 225 EXPECT_EQ(null, prerender_manager()->next_prerender_contents());
231 EXPECT_TRUE(prerender_contents->has_started()); 226 EXPECT_TRUE(prerender_contents->has_started());
232 227
233 DummyPrerenderContents* prerender_contents1 = 228 DummyPrerenderContents* prerender_contents1 =
234 prerender_manager()->CreateNextPrerenderContents( 229 prerender_manager()->CreateNextPrerenderContents(
235 url, 230 url,
236 FINAL_STATUS_MANAGER_SHUTDOWN); 231 FINAL_STATUS_MANAGER_SHUTDOWN);
237 EXPECT_FALSE(prerender_manager()->AddSimplePreload(url)); 232 EXPECT_FALSE(prerender_manager()->AddPrerenderWithNoTag(url));
238 EXPECT_EQ(prerender_contents1, 233 EXPECT_EQ(prerender_contents1,
239 prerender_manager()->next_prerender_contents()); 234 prerender_manager()->next_prerender_contents());
240 EXPECT_FALSE(prerender_contents1->has_started()); 235 EXPECT_FALSE(prerender_contents1->has_started());
241 236
242 ASSERT_EQ(prerender_contents, prerender_manager()->GetEntry(url)); 237 ASSERT_EQ(prerender_contents, prerender_manager()->GetEntry(url));
243 } 238 }
244 239
245 // Ensure that we expire a prerendered page after the max. permitted time. 240 // Ensure that we expire a prerendered page after the max. permitted time.
246 TEST_F(PrerenderManagerTest, ExpireTest) { 241 TEST_F(PrerenderManagerTest, ExpireTest) {
247 GURL url("http://www.google.com/"); 242 GURL url("http://www.google.com/");
248 DummyPrerenderContents* prerender_contents = 243 DummyPrerenderContents* prerender_contents =
249 prerender_manager()->CreateNextPrerenderContents( 244 prerender_manager()->CreateNextPrerenderContents(
250 url, 245 url,
251 FINAL_STATUS_TIMED_OUT); 246 FINAL_STATUS_TIMED_OUT);
252 DummyPrerenderContents* null = NULL; 247 DummyPrerenderContents* null = NULL;
253 EXPECT_TRUE(prerender_manager()->AddSimplePreload(url)); 248 EXPECT_TRUE(prerender_manager()->AddPrerenderWithNoTag(url));
254 EXPECT_EQ(null, prerender_manager()->next_prerender_contents()); 249 EXPECT_EQ(null, prerender_manager()->next_prerender_contents());
255 EXPECT_TRUE(prerender_contents->has_started()); 250 EXPECT_TRUE(prerender_contents->has_started());
256 prerender_manager()->AdvanceTime(prerender_manager()->max_prerender_age() 251 prerender_manager()->AdvanceTime(prerender_manager()->max_prerender_age()
257 + base::TimeDelta::FromSeconds(1)); 252 + base::TimeDelta::FromSeconds(1));
258 ASSERT_EQ(null, prerender_manager()->GetEntry(url)); 253 ASSERT_EQ(null, prerender_manager()->GetEntry(url));
259 } 254 }
260 255
261 // LRU Test. Make sure that if we prerender more than one request, that 256 // LRU Test. Make sure that if we prerender more than one request, that
262 // the oldest one will be dropped. 257 // the oldest one will be dropped.
263 TEST_F(PrerenderManagerTest, DropOldestRequestTest) { 258 TEST_F(PrerenderManagerTest, DropOldestRequestTest) {
264 GURL url("http://www.google.com/"); 259 GURL url("http://www.google.com/");
265 DummyPrerenderContents* prerender_contents = 260 DummyPrerenderContents* prerender_contents =
266 prerender_manager()->CreateNextPrerenderContents( 261 prerender_manager()->CreateNextPrerenderContents(
267 url, 262 url,
268 FINAL_STATUS_EVICTED); 263 FINAL_STATUS_EVICTED);
269 DummyPrerenderContents* null = NULL; 264 DummyPrerenderContents* null = NULL;
270 EXPECT_TRUE(prerender_manager()->AddSimplePreload(url)); 265 EXPECT_TRUE(prerender_manager()->AddPrerenderWithNoTag(url));
271 EXPECT_EQ(null, prerender_manager()->next_prerender_contents()); 266 EXPECT_EQ(null, prerender_manager()->next_prerender_contents());
272 EXPECT_TRUE(prerender_contents->has_started()); 267 EXPECT_TRUE(prerender_contents->has_started());
273 268
274 GURL url1("http://news.google.com/"); 269 GURL url1("http://news.google.com/");
275 DummyPrerenderContents* prerender_contents1 = 270 DummyPrerenderContents* prerender_contents1 =
276 prerender_manager()->CreateNextPrerenderContents( 271 prerender_manager()->CreateNextPrerenderContents(
277 url1, 272 url1,
278 FINAL_STATUS_USED); 273 FINAL_STATUS_USED);
279 EXPECT_TRUE(prerender_manager()->AddSimplePreload(url1)); 274 EXPECT_TRUE(prerender_manager()->AddPrerenderWithNoTag(url1));
280 EXPECT_EQ(null, prerender_manager()->next_prerender_contents()); 275 EXPECT_EQ(null, prerender_manager()->next_prerender_contents());
281 EXPECT_TRUE(prerender_contents1->has_started()); 276 EXPECT_TRUE(prerender_contents1->has_started());
282 277
283 ASSERT_EQ(null, prerender_manager()->GetEntry(url)); 278 ASSERT_EQ(null, prerender_manager()->GetEntry(url));
284 ASSERT_EQ(prerender_contents1, prerender_manager()->GetEntry(url1)); 279 ASSERT_EQ(prerender_contents1, prerender_manager()->GetEntry(url1));
285 } 280 }
286 281
287 // Two element prerender test. Ensure that the LRU operates correctly if we 282 // Two element prerender test. Ensure that the LRU operates correctly if we
288 // permit 2 elements to be kept prerendered. 283 // permit 2 elements to be kept prerendered.
289 TEST_F(PrerenderManagerTest, TwoElementPrerenderTest) { 284 TEST_F(PrerenderManagerTest, TwoElementPrerenderTest) {
290 prerender_manager()->set_max_elements(2); 285 prerender_manager()->set_max_elements(2);
291 GURL url("http://www.google.com/"); 286 GURL url("http://www.google.com/");
292 DummyPrerenderContents* prerender_contents = 287 DummyPrerenderContents* prerender_contents =
293 prerender_manager()->CreateNextPrerenderContents( 288 prerender_manager()->CreateNextPrerenderContents(
294 url, 289 url,
295 FINAL_STATUS_EVICTED); 290 FINAL_STATUS_EVICTED);
296 DummyPrerenderContents* null = NULL; 291 DummyPrerenderContents* null = NULL;
297 EXPECT_TRUE(prerender_manager()->AddSimplePreload(url)); 292 EXPECT_TRUE(prerender_manager()->AddPrerenderWithNoTag(url));
298 EXPECT_EQ(null, prerender_manager()->next_prerender_contents()); 293 EXPECT_EQ(null, prerender_manager()->next_prerender_contents());
299 EXPECT_TRUE(prerender_contents->has_started()); 294 EXPECT_TRUE(prerender_contents->has_started());
300 295
301 GURL url1("http://news.google.com/"); 296 GURL url1("http://news.google.com/");
302 DummyPrerenderContents* prerender_contents1 = 297 DummyPrerenderContents* prerender_contents1 =
303 prerender_manager()->CreateNextPrerenderContents( 298 prerender_manager()->CreateNextPrerenderContents(
304 url1, 299 url1,
305 FINAL_STATUS_USED); 300 FINAL_STATUS_USED);
306 EXPECT_TRUE(prerender_manager()->AddSimplePreload(url1)); 301 EXPECT_TRUE(prerender_manager()->AddPrerenderWithNoTag(url1));
307 EXPECT_EQ(null, prerender_manager()->next_prerender_contents()); 302 EXPECT_EQ(null, prerender_manager()->next_prerender_contents());
308 EXPECT_TRUE(prerender_contents1->has_started()); 303 EXPECT_TRUE(prerender_contents1->has_started());
309 304
310 GURL url2("http://images.google.com/"); 305 GURL url2("http://images.google.com/");
311 DummyPrerenderContents* prerender_contents2 = 306 DummyPrerenderContents* prerender_contents2 =
312 prerender_manager()->CreateNextPrerenderContents( 307 prerender_manager()->CreateNextPrerenderContents(
313 url2, 308 url2,
314 FINAL_STATUS_USED); 309 FINAL_STATUS_USED);
315 EXPECT_TRUE(prerender_manager()->AddSimplePreload(url2)); 310 EXPECT_TRUE(prerender_manager()->AddPrerenderWithNoTag(url2));
316 EXPECT_EQ(null, prerender_manager()->next_prerender_contents()); 311 EXPECT_EQ(null, prerender_manager()->next_prerender_contents());
317 EXPECT_TRUE(prerender_contents2->has_started()); 312 EXPECT_TRUE(prerender_contents2->has_started());
318 313
319 ASSERT_EQ(null, prerender_manager()->GetEntry(url)); 314 ASSERT_EQ(null, prerender_manager()->GetEntry(url));
320 ASSERT_EQ(prerender_contents1, prerender_manager()->GetEntry(url1)); 315 ASSERT_EQ(prerender_contents1, prerender_manager()->GetEntry(url1));
321 ASSERT_EQ(prerender_contents2, prerender_manager()->GetEntry(url2)); 316 ASSERT_EQ(prerender_contents2, prerender_manager()->GetEntry(url2));
322 } 317 }
323 318
324 TEST_F(PrerenderManagerTest, AliasURLTest) { 319 TEST_F(PrerenderManagerTest, AliasURLTest) {
325 GURL url("http://www.google.com/"); 320 GURL url("http://www.google.com/");
326 GURL alias_url1("http://www.google.com/index.html"); 321 GURL alias_url1("http://www.google.com/index.html");
327 GURL alias_url2("http://google.com/"); 322 GURL alias_url2("http://google.com/");
328 GURL not_an_alias_url("http://google.com/index.html"); 323 GURL not_an_alias_url("http://google.com/index.html");
329 std::vector<GURL> alias_urls; 324 std::vector<GURL> alias_urls;
330 alias_urls.push_back(alias_url1); 325 alias_urls.push_back(alias_url1);
331 alias_urls.push_back(alias_url2); 326 alias_urls.push_back(alias_url2);
332 327
333 // Test that all of the aliases work, but not_an_alias_url does not. 328 // Test that all of the aliases work, but not_an_alias_url does not.
334 DummyPrerenderContents* prerender_contents = 329 DummyPrerenderContents* prerender_contents =
335 prerender_manager()->CreateNextPrerenderContents( 330 prerender_manager()->CreateNextPrerenderContents(
336 url, alias_urls, FINAL_STATUS_USED); 331 url, alias_urls, FINAL_STATUS_USED);
337 EXPECT_TRUE(prerender_manager()->AddSimplePreload(url)); 332 EXPECT_TRUE(prerender_manager()->AddPrerenderWithNoTag(url));
338 ASSERT_EQ(NULL, prerender_manager()->GetEntry(not_an_alias_url)); 333 ASSERT_EQ(NULL, prerender_manager()->GetEntry(not_an_alias_url));
339 ASSERT_EQ(prerender_contents, prerender_manager()->GetEntry(alias_url1)); 334 ASSERT_EQ(prerender_contents, prerender_manager()->GetEntry(alias_url1));
340 prerender_contents = prerender_manager()->CreateNextPrerenderContents( 335 prerender_contents = prerender_manager()->CreateNextPrerenderContents(
341 url, alias_urls, FINAL_STATUS_USED); 336 url, alias_urls, FINAL_STATUS_USED);
342 EXPECT_TRUE(prerender_manager()->AddSimplePreload(url)); 337 EXPECT_TRUE(prerender_manager()->AddPrerenderWithNoTag(url));
343 ASSERT_EQ(prerender_contents, prerender_manager()->GetEntry(alias_url2)); 338 ASSERT_EQ(prerender_contents, prerender_manager()->GetEntry(alias_url2));
344 prerender_contents = prerender_manager()->CreateNextPrerenderContents( 339 prerender_contents = prerender_manager()->CreateNextPrerenderContents(
345 url, alias_urls, FINAL_STATUS_USED); 340 url, alias_urls, FINAL_STATUS_USED);
346 EXPECT_TRUE(prerender_manager()->AddSimplePreload(url)); 341 EXPECT_TRUE(prerender_manager()->AddPrerenderWithNoTag(url));
347 ASSERT_EQ(prerender_contents, prerender_manager()->GetEntry(url)); 342 ASSERT_EQ(prerender_contents, prerender_manager()->GetEntry(url));
348 343
349 // Test that alias URLs can not be added. 344 // Test that alias URLs can not be added.
350 prerender_contents = prerender_manager()->CreateNextPrerenderContents( 345 prerender_contents = prerender_manager()->CreateNextPrerenderContents(
351 url, alias_urls, FINAL_STATUS_USED); 346 url, alias_urls, FINAL_STATUS_USED);
352 EXPECT_TRUE(prerender_manager()->AddSimplePreload(url)); 347 EXPECT_TRUE(prerender_manager()->AddPrerenderWithNoTag(url));
353 EXPECT_FALSE(prerender_manager()->AddSimplePreload(url)); 348 EXPECT_FALSE(prerender_manager()->AddPrerenderWithNoTag(url));
354 EXPECT_FALSE(prerender_manager()->AddSimplePreload(alias_url1)); 349 EXPECT_FALSE(prerender_manager()->AddPrerenderWithNoTag(alias_url1));
355 EXPECT_FALSE(prerender_manager()->AddSimplePreload(alias_url2)); 350 EXPECT_FALSE(prerender_manager()->AddPrerenderWithNoTag(alias_url2));
356 ASSERT_EQ(prerender_contents, prerender_manager()->GetEntry(url)); 351 ASSERT_EQ(prerender_contents, prerender_manager()->GetEntry(url));
357 } 352 }
358 353
359 // Ensure that we ignore prerender requests within the rate limit. 354 // Ensure that we ignore prerender requests within the rate limit.
360 TEST_F(PrerenderManagerTest, RateLimitInWindowTest) { 355 TEST_F(PrerenderManagerTest, RateLimitInWindowTest) {
361 GURL url("http://www.google.com/"); 356 GURL url("http://www.google.com/");
362 DummyPrerenderContents* prerender_contents = 357 DummyPrerenderContents* prerender_contents =
363 prerender_manager()->CreateNextPrerenderContents( 358 prerender_manager()->CreateNextPrerenderContents(
364 url, 359 url,
365 FINAL_STATUS_MANAGER_SHUTDOWN); 360 FINAL_STATUS_MANAGER_SHUTDOWN);
366 DummyPrerenderContents* null = NULL; 361 DummyPrerenderContents* null = NULL;
367 EXPECT_TRUE(prerender_manager()->AddSimplePreload(url)); 362 EXPECT_TRUE(prerender_manager()->AddPrerenderWithNoTag(url));
368 EXPECT_EQ(null, prerender_manager()->next_prerender_contents()); 363 EXPECT_EQ(null, prerender_manager()->next_prerender_contents());
369 EXPECT_TRUE(prerender_contents->has_started()); 364 EXPECT_TRUE(prerender_contents->has_started());
370 365
371 prerender_manager()->set_rate_limit_enabled(true); 366 prerender_manager()->set_rate_limit_enabled(true);
372 prerender_manager()->AdvanceTimeTicks(base::TimeDelta::FromMilliseconds(1)); 367 prerender_manager()->AdvanceTimeTicks(base::TimeDelta::FromMilliseconds(1));
373 368
374 GURL url1("http://news.google.com/"); 369 GURL url1("http://news.google.com/");
375 prerender_manager()->CreateNextPrerenderContents( 370 prerender_manager()->CreateNextPrerenderContents(
376 url, 371 url,
377 FINAL_STATUS_MANAGER_SHUTDOWN); 372 FINAL_STATUS_MANAGER_SHUTDOWN);
378 EXPECT_FALSE(prerender_manager()->AddSimplePreload(url1)); 373 EXPECT_FALSE(prerender_manager()->AddPrerenderWithNoTag(url1));
379 prerender_manager()->set_rate_limit_enabled(false); 374 prerender_manager()->set_rate_limit_enabled(false);
380 } 375 }
381 376
382 // Ensure that we don't ignore prerender requests outside the rate limit. 377 // Ensure that we don't ignore prerender requests outside the rate limit.
383 TEST_F(PrerenderManagerTest, RateLimitOutsideWindowTest) { 378 TEST_F(PrerenderManagerTest, RateLimitOutsideWindowTest) {
384 GURL url("http://www.google.com/"); 379 GURL url("http://www.google.com/");
385 DummyPrerenderContents* prerender_contents = 380 DummyPrerenderContents* prerender_contents =
386 prerender_manager()->CreateNextPrerenderContents( 381 prerender_manager()->CreateNextPrerenderContents(
387 url, 382 url,
388 FINAL_STATUS_EVICTED); 383 FINAL_STATUS_EVICTED);
389 DummyPrerenderContents* null = NULL; 384 DummyPrerenderContents* null = NULL;
390 EXPECT_TRUE(prerender_manager()->AddSimplePreload(url)); 385 EXPECT_TRUE(prerender_manager()->AddPrerenderWithNoTag(url));
391 EXPECT_EQ(null, prerender_manager()->next_prerender_contents()); 386 EXPECT_EQ(null, prerender_manager()->next_prerender_contents());
392 EXPECT_TRUE(prerender_contents->has_started()); 387 EXPECT_TRUE(prerender_contents->has_started());
393 388
394 prerender_manager()->set_rate_limit_enabled(true); 389 prerender_manager()->set_rate_limit_enabled(true);
395 prerender_manager()->AdvanceTimeTicks( 390 prerender_manager()->AdvanceTimeTicks(
396 base::TimeDelta::FromMilliseconds(2000)); 391 base::TimeDelta::FromMilliseconds(2000));
397 392
398 GURL url1("http://news.google.com/"); 393 GURL url1("http://news.google.com/");
399 DummyPrerenderContents* rate_limit_prerender_contents = 394 DummyPrerenderContents* rate_limit_prerender_contents =
400 prerender_manager()->CreateNextPrerenderContents( 395 prerender_manager()->CreateNextPrerenderContents(
401 url1, 396 url1,
402 FINAL_STATUS_MANAGER_SHUTDOWN); 397 FINAL_STATUS_MANAGER_SHUTDOWN);
403 EXPECT_TRUE(prerender_manager()->AddSimplePreload(url1)); 398 EXPECT_TRUE(prerender_manager()->AddPrerenderWithNoTag(url1));
404 EXPECT_EQ(null, prerender_manager()->next_prerender_contents()); 399 EXPECT_EQ(null, prerender_manager()->next_prerender_contents());
405 EXPECT_TRUE(rate_limit_prerender_contents->has_started()); 400 EXPECT_TRUE(rate_limit_prerender_contents->has_started());
406 prerender_manager()->set_rate_limit_enabled(false); 401 prerender_manager()->set_rate_limit_enabled(false);
407 } 402 }
408 403
409 TEST_F(PrerenderManagerTest, PendingPreloadTest) { 404 TEST_F(PrerenderManagerTest, PendingPreloadTest) {
410 GURL url("http://www.google.com/"); 405 GURL url("http://www.google.com/");
411 DummyPrerenderContents* prerender_contents = 406 DummyPrerenderContents* prerender_contents =
412 prerender_manager()->CreateNextPrerenderContents( 407 prerender_manager()->CreateNextPrerenderContents(
413 url, 408 url,
414 FINAL_STATUS_USED); 409 FINAL_STATUS_USED);
415 EXPECT_TRUE(prerender_manager()->AddSimplePreload(url)); 410 EXPECT_TRUE(prerender_manager()->AddPrerenderWithNoTag(url));
416 411
417 int child_id; 412 int child_id;
418 int route_id; 413 int route_id;
419 ASSERT_TRUE(prerender_contents->GetChildId(&child_id)); 414 ASSERT_TRUE(prerender_contents->GetChildId(&child_id));
420 ASSERT_TRUE(prerender_contents->GetRouteId(&route_id)); 415 ASSERT_TRUE(prerender_contents->GetRouteId(&route_id));
421 416
422 GURL pending_url("http://news.google.com/"); 417 GURL pending_url("http://news.google.com/");
423 418
424 EXPECT_TRUE( 419 EXPECT_TRUE(
425 prerender_manager()->AddPreload(std::make_pair(child_id, route_id), 420 prerender_manager()->AddPreload(std::make_pair(child_id, route_id),
(...skipping 27 matching lines...) Expand all
453 // group will not be able to override FINAL_STATUS_CONTROL_GROUP. 448 // group will not be able to override FINAL_STATUS_CONTROL_GROUP.
454 TEST_F(PrerenderManagerTest, ControlGroup) { 449 TEST_F(PrerenderManagerTest, ControlGroup) {
455 RestorePrerenderMode restore_prerender_mode; 450 RestorePrerenderMode restore_prerender_mode;
456 PrerenderManager::SetMode( 451 PrerenderManager::SetMode(
457 PrerenderManager::PRERENDER_MODE_EXPERIMENT_CONTROL_GROUP); 452 PrerenderManager::PRERENDER_MODE_EXPERIMENT_CONTROL_GROUP);
458 GURL url("http://www.google.com/"); 453 GURL url("http://www.google.com/");
459 DummyPrerenderContents* prerender_contents = 454 DummyPrerenderContents* prerender_contents =
460 prerender_manager()->CreateNextPrerenderContents( 455 prerender_manager()->CreateNextPrerenderContents(
461 url, 456 url,
462 FINAL_STATUS_CONTROL_GROUP); 457 FINAL_STATUS_CONTROL_GROUP);
463 EXPECT_TRUE(prerender_manager()->AddSimplePreload(url)); 458 EXPECT_TRUE(prerender_manager()->AddPrerenderWithNoTag(url));
464 EXPECT_FALSE(prerender_contents->has_started()); 459 EXPECT_FALSE(prerender_contents->has_started());
465 } 460 }
466 461
467 // Tests that prerendering is cancelled when the source render view does not 462 // Tests that prerendering is cancelled when the source render view does not
468 // exist. On failure, the DCHECK in CreatePrerenderContents() above should be 463 // exist. On failure, the DCHECK in CreatePrerenderContents() above should be
469 // triggered. 464 // triggered.
470 TEST_F(PrerenderManagerTest, SourceRenderViewClosed) { 465 TEST_F(PrerenderManagerTest, SourceRenderViewClosed) {
471 GURL url("http://www.google.com/"); 466 GURL url("http://www.google.com/");
472 prerender_manager()->CreateNextPrerenderContents( 467 prerender_manager()->CreateNextPrerenderContents(
473 url, 468 url,
474 FINAL_STATUS_MANAGER_SHUTDOWN); 469 FINAL_STATUS_MANAGER_SHUTDOWN);
475 EXPECT_FALSE(prerender_manager()->AddPreload( 470 EXPECT_FALSE(prerender_manager()->AddPreload(
476 std::pair<int, int>(100, 100), url, GURL())); 471 std::pair<int, int>(100, 100), url, GURL()));
477 } 472 }
478 473
479 // Tests that the prerender manager ignores fragment references when matching 474 // Tests that the prerender manager ignores fragment references when matching
480 // prerender URLs in the case the fragment is not in the prerender URL. 475 // prerender URLs in the case the fragment is not in the prerender URL.
481 TEST_F(PrerenderManagerTest, PageMatchesFragmentTest) { 476 TEST_F(PrerenderManagerTest, PageMatchesFragmentTest) {
482 GURL url("http://www.google.com/"); 477 GURL url("http://www.google.com/");
483 GURL fragment_url("http://www.google.com/#test"); 478 GURL fragment_url("http://www.google.com/#test");
484 479
485 DummyPrerenderContents* prerender_contents = 480 DummyPrerenderContents* prerender_contents =
486 prerender_manager()->CreateNextPrerenderContents(url, 481 prerender_manager()->CreateNextPrerenderContents(url,
487 FINAL_STATUS_USED); 482 FINAL_STATUS_USED);
488 EXPECT_TRUE(prerender_manager()->AddSimplePreload(url)); 483 EXPECT_TRUE(prerender_manager()->AddPrerenderWithNoTag(url));
489 EXPECT_TRUE(prerender_contents->has_started()); 484 EXPECT_TRUE(prerender_contents->has_started());
490 ASSERT_EQ(prerender_contents, prerender_manager()->GetEntry(fragment_url)); 485 ASSERT_EQ(prerender_contents, prerender_manager()->GetEntry(fragment_url));
491 } 486 }
492 487
493 // Tests that the prerender manager ignores fragment references when matching 488 // Tests that the prerender manager ignores fragment references when matching
494 // prerender URLs in the case the fragment is in the prerender URL. 489 // prerender URLs in the case the fragment is in the prerender URL.
495 TEST_F(PrerenderManagerTest, FragmentMatchesPageTest) { 490 TEST_F(PrerenderManagerTest, FragmentMatchesPageTest) {
496 GURL url("http://www.google.com/"); 491 GURL url("http://www.google.com/");
497 GURL fragment_url("http://www.google.com/#test"); 492 GURL fragment_url("http://www.google.com/#test");
498 493
499 DummyPrerenderContents* prerender_contents = 494 DummyPrerenderContents* prerender_contents =
500 prerender_manager()->CreateNextPrerenderContents(fragment_url, 495 prerender_manager()->CreateNextPrerenderContents(fragment_url,
501 FINAL_STATUS_USED); 496 FINAL_STATUS_USED);
502 EXPECT_TRUE(prerender_manager()->AddSimplePreload(fragment_url)); 497 EXPECT_TRUE(prerender_manager()->AddPrerenderWithNoTag(fragment_url));
503 EXPECT_TRUE(prerender_contents->has_started()); 498 EXPECT_TRUE(prerender_contents->has_started());
504 ASSERT_EQ(prerender_contents, prerender_manager()->GetEntry(url)); 499 ASSERT_EQ(prerender_contents, prerender_manager()->GetEntry(url));
505 } 500 }
506 501
507 // Tests that the prerender manager ignores fragment references when matching 502 // Tests that the prerender manager ignores fragment references when matching
508 // prerender URLs in the case the fragment is in both URLs. 503 // prerender URLs in the case the fragment is in both URLs.
509 TEST_F(PrerenderManagerTest, FragmentMatchesFragmentTest) { 504 TEST_F(PrerenderManagerTest, FragmentMatchesFragmentTest) {
510 GURL fragment_url("http://www.google.com/#test"); 505 GURL fragment_url("http://www.google.com/#test");
511 GURL other_fragment_url("http://www.google.com/#other_test"); 506 GURL other_fragment_url("http://www.google.com/#other_test");
512 507
513 DummyPrerenderContents* prerender_contents = 508 DummyPrerenderContents* prerender_contents =
514 prerender_manager()->CreateNextPrerenderContents(fragment_url, 509 prerender_manager()->CreateNextPrerenderContents(fragment_url,
515 FINAL_STATUS_USED); 510 FINAL_STATUS_USED);
516 EXPECT_TRUE(prerender_manager()->AddSimplePreload(fragment_url)); 511 EXPECT_TRUE(prerender_manager()->AddPrerenderWithNoTag(fragment_url));
517 EXPECT_TRUE(prerender_contents->has_started()); 512 EXPECT_TRUE(prerender_contents->has_started());
518 ASSERT_EQ(prerender_contents, 513 ASSERT_EQ(prerender_contents,
519 prerender_manager()->GetEntry(other_fragment_url)); 514 prerender_manager()->GetEntry(other_fragment_url));
520 } 515 }
521 516
522 } // namespace prerender 517 } // namespace prerender
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698