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

Side by Side Diff: chrome/browser/predictors/resource_prefetch_predictor_unittest.cc

Issue 2388783002: predictors: Refactor resource_prefetch_predictor_tables. (Closed)
Patch Set: Rebase. Created 4 years, 2 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
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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 "chrome/browser/predictors/resource_prefetch_predictor.h" 5 #include "chrome/browser/predictors/resource_prefetch_predictor.h"
6 6
7 #include <iostream> 7 #include <iostream>
8 #include <memory> 8 #include <memory>
9 #include <utility> 9 #include <utility>
10 10
(...skipping 18 matching lines...) Expand all
29 #include "testing/gtest/include/gtest/gtest.h" 29 #include "testing/gtest/include/gtest/gtest.h"
30 30
31 using testing::ContainerEq; 31 using testing::ContainerEq;
32 using testing::Pointee; 32 using testing::Pointee;
33 using testing::SetArgPointee; 33 using testing::SetArgPointee;
34 using testing::StrictMock; 34 using testing::StrictMock;
35 35
36 namespace predictors { 36 namespace predictors {
37 37
38 typedef ResourcePrefetchPredictor::URLRequestSummary URLRequestSummary; 38 typedef ResourcePrefetchPredictor::URLRequestSummary URLRequestSummary;
39 typedef ResourcePrefetchPredictorTables::PrefetchData PrefetchData;
40 typedef ResourcePrefetchPredictorTables::PrefetchDataMap PrefetchDataMap; 39 typedef ResourcePrefetchPredictorTables::PrefetchDataMap PrefetchDataMap;
41 typedef ResourcePrefetchPredictorTables::RedirectDataMap RedirectDataMap; 40 typedef ResourcePrefetchPredictorTables::RedirectDataMap RedirectDataMap;
42 41
43 scoped_refptr<net::HttpResponseHeaders> MakeResponseHeaders( 42 scoped_refptr<net::HttpResponseHeaders> MakeResponseHeaders(
44 const char* headers) { 43 const char* headers) {
45 return make_scoped_refptr(new net::HttpResponseHeaders( 44 return make_scoped_refptr(new net::HttpResponseHeaders(
46 net::HttpUtil::AssembleRawHeaders(headers, strlen(headers)))); 45 net::HttpUtil::AssembleRawHeaders(headers, strlen(headers))));
47 } 46 }
48 47
49 class EmptyURLRequestDelegate : public net::URLRequest::Delegate { 48 class EmptyURLRequestDelegate : public net::URLRequest::Delegate {
(...skipping 224 matching lines...) Expand 10 before | Expand all | Expand 10 after
274 std::unique_ptr<TestingProfile> profile_; 273 std::unique_ptr<TestingProfile> profile_;
275 net::TestURLRequestContext url_request_context_; 274 net::TestURLRequestContext url_request_context_;
276 275
277 std::unique_ptr<ResourcePrefetchPredictor> predictor_; 276 std::unique_ptr<ResourcePrefetchPredictor> predictor_;
278 scoped_refptr<StrictMock<MockResourcePrefetchPredictorTables> > mock_tables_; 277 scoped_refptr<StrictMock<MockResourcePrefetchPredictorTables> > mock_tables_;
279 278
280 PrefetchDataMap test_url_data_; 279 PrefetchDataMap test_url_data_;
281 PrefetchDataMap test_host_data_; 280 PrefetchDataMap test_host_data_;
282 RedirectDataMap test_url_redirect_data_; 281 RedirectDataMap test_url_redirect_data_;
283 RedirectDataMap test_host_redirect_data_; 282 RedirectDataMap test_host_redirect_data_;
284 PrefetchData empty_url_data_; 283 PrefetchData empty_resource_data_;
285 PrefetchData empty_host_data_; 284 RedirectData empty_redirect_data_;
286 RedirectData empty_url_redirect_data_;
287 RedirectData empty_host_redirect_data_;
288 285
289 MockURLRequestJobFactory url_request_job_factory_; 286 MockURLRequestJobFactory url_request_job_factory_;
290 EmptyURLRequestDelegate url_request_delegate_; 287 EmptyURLRequestDelegate url_request_delegate_;
291 }; 288 };
292 289
293 ResourcePrefetchPredictorTest::ResourcePrefetchPredictorTest() 290 ResourcePrefetchPredictorTest::ResourcePrefetchPredictorTest()
294 : loop_(base::MessageLoop::TYPE_DEFAULT), 291 : loop_(base::MessageLoop::TYPE_DEFAULT),
295 ui_thread_(content::BrowserThread::UI, &loop_), 292 ui_thread_(content::BrowserThread::UI, &loop_),
296 db_thread_(content::BrowserThread::DB, &loop_), 293 db_thread_(content::BrowserThread::DB, &loop_),
297 profile_(new TestingProfile()), 294 profile_(new TestingProfile()),
298 mock_tables_(new StrictMock<MockResourcePrefetchPredictorTables>()), 295 mock_tables_(new StrictMock<MockResourcePrefetchPredictorTables>()),
299 empty_url_data_(PREFETCH_KEY_TYPE_URL, std::string()), 296 empty_resource_data_(),
300 empty_host_data_(PREFETCH_KEY_TYPE_HOST, std::string()), 297 empty_redirect_data_() {}
301 empty_url_redirect_data_(),
302 empty_host_redirect_data_() {}
303 298
304 ResourcePrefetchPredictorTest::~ResourcePrefetchPredictorTest() { 299 ResourcePrefetchPredictorTest::~ResourcePrefetchPredictorTest() {
305 profile_.reset(NULL); 300 profile_.reset(NULL);
306 base::RunLoop().RunUntilIdle(); 301 base::RunLoop().RunUntilIdle();
307 } 302 }
308 303
309 void ResourcePrefetchPredictorTest::SetUp() { 304 void ResourcePrefetchPredictorTest::SetUp() {
310 InitializeSampleData(); 305 InitializeSampleData();
311 306
312 ASSERT_TRUE(profile_->CreateHistoryService(true, false)); 307 ASSERT_TRUE(profile_->CreateHistoryService(true, false));
(...skipping 17 matching lines...) Expand all
330 url_request_context_.set_job_factory(&url_request_job_factory_); 325 url_request_context_.set_job_factory(&url_request_job_factory_);
331 } 326 }
332 327
333 void ResourcePrefetchPredictorTest::TearDown() { 328 void ResourcePrefetchPredictorTest::TearDown() {
334 predictor_.reset(NULL); 329 predictor_.reset(NULL);
335 profile_->DestroyHistoryService(); 330 profile_->DestroyHistoryService();
336 } 331 }
337 332
338 void ResourcePrefetchPredictorTest::InitializeSampleData() { 333 void ResourcePrefetchPredictorTest::InitializeSampleData() {
339 { // Url data. 334 { // Url data.
340 PrefetchData google(PREFETCH_KEY_TYPE_URL, "http://www.google.com/"); 335 PrefetchData google = CreatePrefetchData("http://www.google.com/", 1);
341 google.last_visit = base::Time::FromInternalValue(1); 336 InitializeResourceData(google.add_resources(),
342 google.resources.push_back(CreateResourceData( 337 "http://google.com/style1.css",
343 "http://google.com/style1.css", content::RESOURCE_TYPE_STYLESHEET, 3, 2, 338 content::RESOURCE_TYPE_STYLESHEET, 3, 2, 1, 1.0,
344 1, 1.0, net::MEDIUM, false, false)); 339 net::MEDIUM, false, false);
345 google.resources.push_back(CreateResourceData( 340 InitializeResourceData(
346 "http://google.com/script3.js", content::RESOURCE_TYPE_SCRIPT, 4, 0, 1, 341 google.add_resources(), "http://google.com/script3.js",
347 2.1, net::MEDIUM, false, false)); 342 content::RESOURCE_TYPE_SCRIPT, 4, 0, 1, 2.1, net::MEDIUM, false, false);
348 google.resources.push_back(CreateResourceData( 343 InitializeResourceData(google.add_resources(),
349 "http://google.com/script4.js", content::RESOURCE_TYPE_SCRIPT, 11, 0, 0, 344 "http://google.com/script4.js",
350 2.1, net::MEDIUM, false, false)); 345 content::RESOURCE_TYPE_SCRIPT, 11, 0, 0, 2.1,
351 google.resources.push_back(CreateResourceData( 346 net::MEDIUM, false, false);
352 "http://google.com/image1.png", content::RESOURCE_TYPE_IMAGE, 6, 3, 0, 347 InitializeResourceData(
353 2.2, net::MEDIUM, false, false)); 348 google.add_resources(), "http://google.com/image1.png",
354 google.resources.push_back(CreateResourceData( 349 content::RESOURCE_TYPE_IMAGE, 6, 3, 0, 2.2, net::MEDIUM, false, false);
355 "http://google.com/a.font", content::RESOURCE_TYPE_LAST_TYPE, 2, 0, 0, 350 InitializeResourceData(google.add_resources(), "http://google.com/a.font",
356 5.1, net::MEDIUM, false, false)); 351 content::RESOURCE_TYPE_LAST_TYPE, 2, 0, 0, 5.1,
352 net::MEDIUM, false, false);
357 353
358 PrefetchData reddit(PREFETCH_KEY_TYPE_URL, "http://www.reddit.com/"); 354 PrefetchData reddit = CreatePrefetchData("http://www.reddit.com/", 2);
359 reddit.last_visit = base::Time::FromInternalValue(2); 355 InitializeResourceData(
360 reddit.resources.push_back(CreateResourceData( 356 reddit.add_resources(), "http://reddit-resource.com/script1.js",
361 "http://reddit-resource.com/script1.js", content::RESOURCE_TYPE_SCRIPT, 357 content::RESOURCE_TYPE_SCRIPT, 4, 0, 1, 1.0, net::MEDIUM, false, false);
362 4, 0, 1, 1.0, net::MEDIUM, false, false)); 358 InitializeResourceData(
363 reddit.resources.push_back(CreateResourceData( 359 reddit.add_resources(), "http://reddit-resource.com/script2.js",
364 "http://reddit-resource.com/script2.js", content::RESOURCE_TYPE_SCRIPT, 360 content::RESOURCE_TYPE_SCRIPT, 2, 0, 0, 2.1, net::MEDIUM, false, false);
365 2, 0, 0, 2.1, net::MEDIUM, false, false));
366 361
367 PrefetchData yahoo(PREFETCH_KEY_TYPE_URL, "http://www.yahoo.com/"); 362 PrefetchData yahoo = CreatePrefetchData("http://www.yahoo.com/", 3);
368 yahoo.last_visit = base::Time::FromInternalValue(3); 363 InitializeResourceData(yahoo.add_resources(), "http://google.com/image.png",
369 yahoo.resources.push_back(CreateResourceData( 364 content::RESOURCE_TYPE_IMAGE, 20, 1, 0, 10.0,
370 "http://google.com/image.png", content::RESOURCE_TYPE_IMAGE, 20, 1, 0, 365 net::MEDIUM, false, false);
371 10.0, net::MEDIUM, false, false));
372 366
373 test_url_data_.clear(); 367 test_url_data_.clear();
374 test_url_data_.insert(std::make_pair("http://www.google.com/", google)); 368 test_url_data_.insert(std::make_pair(google.primary_key(), google));
375 test_url_data_.insert(std::make_pair("http://www.reddit.com/", reddit)); 369 test_url_data_.insert(std::make_pair(reddit.primary_key(), reddit));
376 test_url_data_.insert(std::make_pair("http://www.yahoo.com/", yahoo)); 370 test_url_data_.insert(std::make_pair(yahoo.primary_key(), yahoo));
377 } 371 }
378 372
379 { // Host data. 373 { // Host data.
380 PrefetchData facebook(PREFETCH_KEY_TYPE_HOST, "www.facebook.com"); 374 PrefetchData facebook = CreatePrefetchData("www.facebook.com", 4);
381 facebook.last_visit = base::Time::FromInternalValue(4); 375 InitializeResourceData(facebook.add_resources(),
382 facebook.resources.push_back(CreateResourceData( 376 "http://www.facebook.com/style.css",
383 "http://www.facebook.com/style.css", content::RESOURCE_TYPE_STYLESHEET, 377 content::RESOURCE_TYPE_STYLESHEET, 5, 2, 1, 1.1,
384 5, 2, 1, 1.1, net::MEDIUM, false, false)); 378 net::MEDIUM, false, false);
385 facebook.resources.push_back(CreateResourceData( 379 InitializeResourceData(
386 "http://www.facebook.com/script.js", content::RESOURCE_TYPE_SCRIPT, 4, 380 facebook.add_resources(), "http://www.facebook.com/script.js",
387 0, 1, 2.1, net::MEDIUM, false, false)); 381 content::RESOURCE_TYPE_SCRIPT, 4, 0, 1, 2.1, net::MEDIUM, false, false);
388 facebook.resources.push_back(CreateResourceData( 382 InitializeResourceData(
389 "http://www.facebook.com/image.png", content::RESOURCE_TYPE_IMAGE, 6, 3, 383 facebook.add_resources(), "http://www.facebook.com/image.png",
390 0, 2.2, net::MEDIUM, false, false)); 384 content::RESOURCE_TYPE_IMAGE, 6, 3, 0, 2.2, net::MEDIUM, false, false);
391 facebook.resources.push_back(CreateResourceData( 385 InitializeResourceData(facebook.add_resources(),
392 "http://www.facebook.com/a.font", content::RESOURCE_TYPE_LAST_TYPE, 2, 386 "http://www.facebook.com/a.font",
393 0, 0, 5.1, net::MEDIUM, false, false)); 387 content::RESOURCE_TYPE_LAST_TYPE, 2, 0, 0, 5.1,
394 facebook.resources.push_back( 388 net::MEDIUM, false, false);
395 CreateResourceData("http://www.resources.facebook.com/script.js", 389 InitializeResourceData(facebook.add_resources(),
390 "http://www.resources.facebook.com/script.js",
396 content::RESOURCE_TYPE_SCRIPT, 11, 0, 0, 8.5, 391 content::RESOURCE_TYPE_SCRIPT, 11, 0, 0, 8.5,
397 net::MEDIUM, false, false)); 392 net::MEDIUM, false, false);
398 393
399 PrefetchData yahoo(PREFETCH_KEY_TYPE_HOST, "www.yahoo.com"); 394 PrefetchData yahoo = CreatePrefetchData("www.yahoo.com", 5);
400 yahoo.last_visit = base::Time::FromInternalValue(5); 395 InitializeResourceData(yahoo.add_resources(), "http://google.com/image.png",
401 yahoo.resources.push_back(CreateResourceData( 396 content::RESOURCE_TYPE_IMAGE, 20, 1, 0, 10.0,
402 "http://google.com/image.png", content::RESOURCE_TYPE_IMAGE, 20, 1, 0, 397 net::MEDIUM, false, false);
403 10.0, net::MEDIUM, false, false));
404 398
405 test_host_data_.clear(); 399 test_host_data_.clear();
406 test_host_data_.insert(std::make_pair("www.facebook.com", facebook)); 400 test_host_data_.insert(std::make_pair(facebook.primary_key(), facebook));
407 test_host_data_.insert(std::make_pair("www.yahoo.com", yahoo)); 401 test_host_data_.insert(std::make_pair(yahoo.primary_key(), yahoo));
408 } 402 }
409 403
410 { // Url redirect data. 404 { // Url redirect data.
411 RedirectData facebook; 405 RedirectData facebook = CreateRedirectData("http://fb.com/google", 6);
412 facebook.set_primary_key("http://fb.com/google");
413 facebook.set_last_visit_time(6);
414 InitializeRedirectStat(facebook.add_redirect_endpoints(), 406 InitializeRedirectStat(facebook.add_redirect_endpoints(),
415 "https://facebook.com/google", 5, 1, 0); 407 "https://facebook.com/google", 5, 1, 0);
416 InitializeRedirectStat(facebook.add_redirect_endpoints(), 408 InitializeRedirectStat(facebook.add_redirect_endpoints(),
417 "https://facebook.com/login", 3, 5, 1); 409 "https://facebook.com/login", 3, 5, 1);
418 410
419 RedirectData nytimes; 411 RedirectData nytimes = CreateRedirectData("http://nyt.com", 7);
420 nytimes.set_primary_key("http://nyt.com");
421 nytimes.set_last_visit_time(7);
422 InitializeRedirectStat(nytimes.add_redirect_endpoints(), 412 InitializeRedirectStat(nytimes.add_redirect_endpoints(),
423 "https://nytimes.com", 2, 0, 0); 413 "https://nytimes.com", 2, 0, 0);
424 414
425 RedirectData google; 415 RedirectData google = CreateRedirectData("http://google.com", 8);
426 google.set_primary_key("http://google.com");
427 google.set_last_visit_time(8);
428 InitializeRedirectStat(google.add_redirect_endpoints(), 416 InitializeRedirectStat(google.add_redirect_endpoints(),
429 "https://google.com", 3, 0, 0); 417 "https://google.com", 3, 0, 0);
430 418
431 test_url_redirect_data_.clear(); 419 test_url_redirect_data_.clear();
432 test_url_redirect_data_.insert( 420 test_url_redirect_data_.insert(
433 std::make_pair(facebook.primary_key(), facebook)); 421 std::make_pair(facebook.primary_key(), facebook));
434 test_url_redirect_data_.insert( 422 test_url_redirect_data_.insert(
435 std::make_pair(nytimes.primary_key(), nytimes)); 423 std::make_pair(nytimes.primary_key(), nytimes));
436 test_url_redirect_data_.insert( 424 test_url_redirect_data_.insert(
437 std::make_pair(google.primary_key(), google)); 425 std::make_pair(google.primary_key(), google));
438 } 426 }
439 427
440 { // Host redirect data. 428 { // Host redirect data.
441 RedirectData bbc; 429 RedirectData bbc = CreateRedirectData("bbc.com", 9);
442 bbc.set_primary_key("bbc.com");
443 bbc.set_last_visit_time(9);
444 InitializeRedirectStat(bbc.add_redirect_endpoints(), "www.bbc.com", 8, 4, 430 InitializeRedirectStat(bbc.add_redirect_endpoints(), "www.bbc.com", 8, 4,
445 1); 431 1);
446 InitializeRedirectStat(bbc.add_redirect_endpoints(), "m.bbc.com", 5, 8, 0); 432 InitializeRedirectStat(bbc.add_redirect_endpoints(), "m.bbc.com", 5, 8, 0);
447 InitializeRedirectStat(bbc.add_redirect_endpoints(), "bbc.co.uk", 1, 3, 0); 433 InitializeRedirectStat(bbc.add_redirect_endpoints(), "bbc.co.uk", 1, 3, 0);
448 434
449 RedirectData microsoft; 435 RedirectData microsoft = CreateRedirectData("microsoft.com", 10);
450 microsoft.set_primary_key("microsoft.com");
451 microsoft.set_last_visit_time(10);
452 InitializeRedirectStat(microsoft.add_redirect_endpoints(), 436 InitializeRedirectStat(microsoft.add_redirect_endpoints(),
453 "www.microsoft.com", 10, 0, 0); 437 "www.microsoft.com", 10, 0, 0);
454 438
455 test_host_redirect_data_.clear(); 439 test_host_redirect_data_.clear();
456 test_host_redirect_data_.insert(std::make_pair(bbc.primary_key(), bbc)); 440 test_host_redirect_data_.insert(std::make_pair(bbc.primary_key(), bbc));
457 test_host_redirect_data_.insert( 441 test_host_redirect_data_.insert(
458 std::make_pair(microsoft.primary_key(), microsoft)); 442 std::make_pair(microsoft.primary_key(), microsoft));
459 } 443 }
460 } 444 }
461 445
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after
518 predictor_->RecordURLResponse(resource1); 502 predictor_->RecordURLResponse(resource1);
519 URLRequestSummary resource2 = CreateURLRequestSummary( 503 URLRequestSummary resource2 = CreateURLRequestSummary(
520 1, 1, "https://www.google.com", "https://google.com/script1.js", 504 1, 1, "https://www.google.com", "https://google.com/script1.js",
521 content::RESOURCE_TYPE_SCRIPT, net::MEDIUM, "text/javascript", false); 505 content::RESOURCE_TYPE_SCRIPT, net::MEDIUM, "text/javascript", false);
522 predictor_->RecordURLResponse(resource2); 506 predictor_->RecordURLResponse(resource2);
523 URLRequestSummary resource3 = CreateURLRequestSummary( 507 URLRequestSummary resource3 = CreateURLRequestSummary(
524 1, 1, "https://www.google.com", "https://google.com/script2.js", 508 1, 1, "https://www.google.com", "https://google.com/script2.js",
525 content::RESOURCE_TYPE_SCRIPT, net::MEDIUM, "text/javascript", false); 509 content::RESOURCE_TYPE_SCRIPT, net::MEDIUM, "text/javascript", false);
526 predictor_->RecordURLResponse(resource3); 510 predictor_->RecordURLResponse(resource3);
527 511
528 PrefetchData host_data(PREFETCH_KEY_TYPE_HOST, "www.google.com"); 512 PrefetchData host_data = CreatePrefetchData("www.google.com");
529 host_data.resources.push_back(CreateResourceData( 513 InitializeResourceData(host_data.add_resources(),
530 "https://google.com/style1.css", content::RESOURCE_TYPE_STYLESHEET, 1, 0, 514 "https://google.com/style1.css",
531 0, 1.0, net::MEDIUM, false, false)); 515 content::RESOURCE_TYPE_STYLESHEET, 1, 0, 0, 1.0,
532 host_data.resources.push_back(CreateResourceData( 516 net::MEDIUM, false, false);
533 "https://google.com/script1.js", content::RESOURCE_TYPE_SCRIPT, 1, 0, 0, 517 InitializeResourceData(
534 2.0, net::MEDIUM, false, false)); 518 host_data.add_resources(), "https://google.com/script1.js",
535 host_data.resources.push_back(CreateResourceData( 519 content::RESOURCE_TYPE_SCRIPT, 1, 0, 0, 2.0, net::MEDIUM, false, false);
536 "https://google.com/script2.js", content::RESOURCE_TYPE_SCRIPT, 1, 0, 0, 520 InitializeResourceData(
537 3.0, net::MEDIUM, false, false)); 521 host_data.add_resources(), "https://google.com/script2.js",
522 content::RESOURCE_TYPE_SCRIPT, 1, 0, 0, 3.0, net::MEDIUM, false, false);
538 EXPECT_CALL(*mock_tables_.get(), 523 EXPECT_CALL(*mock_tables_.get(),
539 UpdateData(empty_url_data_, host_data, empty_url_redirect_data_, 524 UpdateData(empty_resource_data_, host_data, empty_redirect_data_,
540 empty_host_redirect_data_)); 525 empty_redirect_data_));
541 526
542 predictor_->RecordMainFrameLoadComplete(main_frame.navigation_id); 527 predictor_->RecordMainFrameLoadComplete(main_frame.navigation_id);
543 profile_->BlockUntilHistoryProcessesPendingRequests(); 528 profile_->BlockUntilHistoryProcessesPendingRequests();
544 } 529 }
545 530
546 // Single navigation that will be recorded. Will check for duplicate 531 // Single navigation that will be recorded. Will check for duplicate
547 // resources and also for number of resources saved. 532 // resources and also for number of resources saved.
548 TEST_F(ResourcePrefetchPredictorTest, NavigationUrlNotInDB) { 533 TEST_F(ResourcePrefetchPredictorTest, NavigationUrlNotInDB) {
549 AddUrlToHistory("http://www.google.com", 4); 534 AddUrlToHistory("http://www.google.com", 4);
550 535
(...skipping 24 matching lines...) Expand all
575 predictor_->RecordURLResponse(resource5); 560 predictor_->RecordURLResponse(resource5);
576 URLRequestSummary resource6 = CreateURLRequestSummary( 561 URLRequestSummary resource6 = CreateURLRequestSummary(
577 1, 1, "http://www.google.com", "http://google.com/image2.png", 562 1, 1, "http://www.google.com", "http://google.com/image2.png",
578 content::RESOURCE_TYPE_IMAGE, net::MEDIUM, "image/png", false); 563 content::RESOURCE_TYPE_IMAGE, net::MEDIUM, "image/png", false);
579 predictor_->RecordURLResponse(resource6); 564 predictor_->RecordURLResponse(resource6);
580 URLRequestSummary resource7 = CreateURLRequestSummary( 565 URLRequestSummary resource7 = CreateURLRequestSummary(
581 1, 1, "http://www.google.com", "http://google.com/style2.css", 566 1, 1, "http://www.google.com", "http://google.com/style2.css",
582 content::RESOURCE_TYPE_STYLESHEET, net::MEDIUM, "text/css", true); 567 content::RESOURCE_TYPE_STYLESHEET, net::MEDIUM, "text/css", true);
583 predictor_->RecordURLResponse(resource7); 568 predictor_->RecordURLResponse(resource7);
584 569
585 PrefetchData url_data(PREFETCH_KEY_TYPE_URL, "http://www.google.com/"); 570 PrefetchData url_data = CreatePrefetchData("http://www.google.com/");
586 url_data.resources.push_back(CreateResourceData( 571 InitializeResourceData(url_data.add_resources(),
587 "http://google.com/style1.css", content::RESOURCE_TYPE_STYLESHEET, 1, 0, 572 "http://google.com/style1.css",
588 0, 1.0, net::MEDIUM, false, false)); 573 content::RESOURCE_TYPE_STYLESHEET, 1, 0, 0, 1.0,
589 url_data.resources.push_back(CreateResourceData( 574 net::MEDIUM, false, false);
590 "http://google.com/script1.js", content::RESOURCE_TYPE_SCRIPT, 1, 0, 0, 575 InitializeResourceData(
591 2.0, net::MEDIUM, false, false)); 576 url_data.add_resources(), "http://google.com/script1.js",
592 url_data.resources.push_back(CreateResourceData( 577 content::RESOURCE_TYPE_SCRIPT, 1, 0, 0, 2.0, net::MEDIUM, false, false);
593 "http://google.com/script2.js", content::RESOURCE_TYPE_SCRIPT, 1, 0, 0, 578 InitializeResourceData(
594 3.0, net::MEDIUM, false, false)); 579 url_data.add_resources(), "http://google.com/script2.js",
595 url_data.resources.push_back(CreateResourceData( 580 content::RESOURCE_TYPE_SCRIPT, 1, 0, 0, 3.0, net::MEDIUM, false, false);
596 "http://google.com/style2.css", content::RESOURCE_TYPE_STYLESHEET, 1, 0, 581 InitializeResourceData(url_data.add_resources(),
597 0, 7.0, net::MEDIUM, false, false)); 582 "http://google.com/style2.css",
583 content::RESOURCE_TYPE_STYLESHEET, 1, 0, 0, 7.0,
584 net::MEDIUM, false, false);
598 EXPECT_CALL(*mock_tables_.get(), 585 EXPECT_CALL(*mock_tables_.get(),
599 UpdateData(url_data, empty_host_data_, empty_url_redirect_data_, 586 UpdateData(url_data, empty_resource_data_, empty_redirect_data_,
600 empty_host_redirect_data_)); 587 empty_redirect_data_));
601 588
602 PrefetchData host_data(PREFETCH_KEY_TYPE_HOST, "www.google.com"); 589 PrefetchData host_data = CreatePrefetchData("www.google.com");
603 host_data.resources = url_data.resources; 590 host_data.mutable_resources()->CopyFrom(url_data.resources());
604 EXPECT_CALL(*mock_tables_.get(), 591 EXPECT_CALL(*mock_tables_.get(),
605 UpdateData(empty_url_data_, host_data, empty_url_redirect_data_, 592 UpdateData(empty_resource_data_, host_data, empty_redirect_data_,
606 empty_host_redirect_data_)); 593 empty_redirect_data_));
607 594
608 predictor_->OnNavigationComplete(main_frame.navigation_id); 595 predictor_->OnNavigationComplete(main_frame.navigation_id);
609 profile_->BlockUntilHistoryProcessesPendingRequests(); 596 profile_->BlockUntilHistoryProcessesPendingRequests();
610 } 597 }
611 598
612 // Tests that navigation is recorded correctly for URL already present in 599 // Tests that navigation is recorded correctly for URL already present in
613 // the database cache. 600 // the database cache.
614 TEST_F(ResourcePrefetchPredictorTest, NavigationUrlInDB) { 601 TEST_F(ResourcePrefetchPredictorTest, NavigationUrlInDB) {
615 AddUrlToHistory("http://www.google.com", 4); 602 AddUrlToHistory("http://www.google.com", 4);
616 603
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
654 predictor_->RecordURLResponse(resource5); 641 predictor_->RecordURLResponse(resource5);
655 URLRequestSummary resource6 = CreateURLRequestSummary( 642 URLRequestSummary resource6 = CreateURLRequestSummary(
656 1, 1, "http://www.google.com", "http://google.com/image2.png", 643 1, 1, "http://www.google.com", "http://google.com/image2.png",
657 content::RESOURCE_TYPE_IMAGE, net::MEDIUM, "image/png", false); 644 content::RESOURCE_TYPE_IMAGE, net::MEDIUM, "image/png", false);
658 predictor_->RecordURLResponse(resource6); 645 predictor_->RecordURLResponse(resource6);
659 URLRequestSummary resource7 = CreateURLRequestSummary( 646 URLRequestSummary resource7 = CreateURLRequestSummary(
660 1, 1, "http://www.google.com", "http://google.com/style2.css", 647 1, 1, "http://www.google.com", "http://google.com/style2.css",
661 content::RESOURCE_TYPE_STYLESHEET, net::MEDIUM, "text/css", true); 648 content::RESOURCE_TYPE_STYLESHEET, net::MEDIUM, "text/css", true);
662 predictor_->RecordURLResponse(resource7); 649 predictor_->RecordURLResponse(resource7);
663 650
664 PrefetchData url_data(PREFETCH_KEY_TYPE_URL, "http://www.google.com/"); 651 PrefetchData url_data = CreatePrefetchData("http://www.google.com/");
665 url_data.resources.push_back(CreateResourceData( 652 InitializeResourceData(url_data.add_resources(),
666 "http://google.com/style1.css", content::RESOURCE_TYPE_STYLESHEET, 4, 2, 653 "http://google.com/style1.css",
667 0, 1.0, net::MEDIUM, false, false)); 654 content::RESOURCE_TYPE_STYLESHEET, 4, 2, 0, 1.0,
668 url_data.resources.push_back(CreateResourceData( 655 net::MEDIUM, false, false);
669 "http://google.com/script1.js", content::RESOURCE_TYPE_SCRIPT, 1, 0, 0, 656 InitializeResourceData(
670 2.0, net::MEDIUM, false, false)); 657 url_data.add_resources(), "http://google.com/script1.js",
671 url_data.resources.push_back(CreateResourceData( 658 content::RESOURCE_TYPE_SCRIPT, 1, 0, 0, 2.0, net::MEDIUM, false, false);
672 "http://google.com/script4.js", content::RESOURCE_TYPE_SCRIPT, 11, 1, 1, 659 InitializeResourceData(
673 2.1, net::MEDIUM, false, false)); 660 url_data.add_resources(), "http://google.com/script4.js",
674 url_data.resources.push_back(CreateResourceData( 661 content::RESOURCE_TYPE_SCRIPT, 11, 1, 1, 2.1, net::MEDIUM, false, false);
675 "http://google.com/script2.js", content::RESOURCE_TYPE_SCRIPT, 1, 0, 0, 662 InitializeResourceData(
676 3.0, net::MEDIUM, false, false)); 663 url_data.add_resources(), "http://google.com/script2.js",
664 content::RESOURCE_TYPE_SCRIPT, 1, 0, 0, 3.0, net::MEDIUM, false, false);
677 EXPECT_CALL(*mock_tables_.get(), 665 EXPECT_CALL(*mock_tables_.get(),
678 UpdateData(url_data, empty_host_data_, empty_url_redirect_data_, 666 UpdateData(url_data, empty_resource_data_, empty_redirect_data_,
679 empty_host_redirect_data_)); 667 empty_redirect_data_));
680 EXPECT_CALL(*mock_tables_.get(), 668 EXPECT_CALL(*mock_tables_.get(),
681 DeleteSingleResourceDataPoint("www.facebook.com", 669 DeleteSingleResourceDataPoint("www.facebook.com",
682 PREFETCH_KEY_TYPE_HOST)); 670 PREFETCH_KEY_TYPE_HOST));
683 671
684 PrefetchData host_data(PREFETCH_KEY_TYPE_HOST, "www.google.com"); 672 PrefetchData host_data = CreatePrefetchData("www.google.com");
685 host_data.resources.push_back(CreateResourceData( 673 InitializeResourceData(host_data.add_resources(),
686 "http://google.com/style1.css", content::RESOURCE_TYPE_STYLESHEET, 1, 0, 674 "http://google.com/style1.css",
687 0, 1.0, net::MEDIUM, false, false)); 675 content::RESOURCE_TYPE_STYLESHEET, 1, 0, 0, 1.0,
688 host_data.resources.push_back(CreateResourceData( 676 net::MEDIUM, false, false);
689 "http://google.com/script1.js", content::RESOURCE_TYPE_SCRIPT, 1, 0, 0, 677 InitializeResourceData(
690 2.0, net::MEDIUM, false, false)); 678 host_data.add_resources(), "http://google.com/script1.js",
691 host_data.resources.push_back(CreateResourceData( 679 content::RESOURCE_TYPE_SCRIPT, 1, 0, 0, 2.0, net::MEDIUM, false, false);
692 "http://google.com/script2.js", content::RESOURCE_TYPE_SCRIPT, 1, 0, 0, 680 InitializeResourceData(
693 3.0, net::MEDIUM, false, false)); 681 host_data.add_resources(), "http://google.com/script2.js",
694 host_data.resources.push_back(CreateResourceData( 682 content::RESOURCE_TYPE_SCRIPT, 1, 0, 0, 3.0, net::MEDIUM, false, false);
695 "http://google.com/style2.css", content::RESOURCE_TYPE_STYLESHEET, 1, 0, 683 InitializeResourceData(host_data.add_resources(),
696 0, 7.0, net::MEDIUM, false, false)); 684 "http://google.com/style2.css",
685 content::RESOURCE_TYPE_STYLESHEET, 1, 0, 0, 7.0,
686 net::MEDIUM, false, false);
697 EXPECT_CALL(*mock_tables_.get(), 687 EXPECT_CALL(*mock_tables_.get(),
698 UpdateData(empty_url_data_, host_data, empty_url_redirect_data_, 688 UpdateData(empty_resource_data_, host_data, empty_redirect_data_,
699 empty_host_redirect_data_)); 689 empty_redirect_data_));
700 690
701 predictor_->OnNavigationComplete(main_frame.navigation_id); 691 predictor_->OnNavigationComplete(main_frame.navigation_id);
702 profile_->BlockUntilHistoryProcessesPendingRequests(); 692 profile_->BlockUntilHistoryProcessesPendingRequests();
703 } 693 }
704 694
705 // Tests that a URL is deleted before another is added if the cache is full. 695 // Tests that a URL is deleted before another is added if the cache is full.
706 TEST_F(ResourcePrefetchPredictorTest, NavigationUrlNotInDBAndDBFull) { 696 TEST_F(ResourcePrefetchPredictorTest, NavigationUrlNotInDBAndDBFull) {
707 AddUrlToHistory("http://www.nike.com/", 4); 697 AddUrlToHistory("http://www.nike.com/", 4);
708 698
709 EXPECT_CALL(*mock_tables_.get(), 699 EXPECT_CALL(*mock_tables_.get(),
(...skipping 23 matching lines...) Expand all
733 content::RESOURCE_TYPE_IMAGE, net::MEDIUM, "image/png", false); 723 content::RESOURCE_TYPE_IMAGE, net::MEDIUM, "image/png", false);
734 predictor_->RecordURLResponse(resource2); 724 predictor_->RecordURLResponse(resource2);
735 725
736 EXPECT_CALL(*mock_tables_.get(), 726 EXPECT_CALL(*mock_tables_.get(),
737 DeleteSingleResourceDataPoint("http://www.google.com/", 727 DeleteSingleResourceDataPoint("http://www.google.com/",
738 PREFETCH_KEY_TYPE_URL)); 728 PREFETCH_KEY_TYPE_URL));
739 EXPECT_CALL(*mock_tables_.get(), 729 EXPECT_CALL(*mock_tables_.get(),
740 DeleteSingleResourceDataPoint("www.facebook.com", 730 DeleteSingleResourceDataPoint("www.facebook.com",
741 PREFETCH_KEY_TYPE_HOST)); 731 PREFETCH_KEY_TYPE_HOST));
742 732
743 PrefetchData url_data(PREFETCH_KEY_TYPE_URL, "http://www.nike.com/"); 733 PrefetchData url_data = CreatePrefetchData("http://www.nike.com/");
744 url_data.resources.push_back(CreateResourceData( 734 InitializeResourceData(url_data.add_resources(), "http://nike.com/style1.css",
745 "http://nike.com/style1.css", content::RESOURCE_TYPE_STYLESHEET, 1, 0, 0, 735 content::RESOURCE_TYPE_STYLESHEET, 1, 0, 0, 1.0,
746 1.0, net::MEDIUM, false, false)); 736 net::MEDIUM, false, false);
747 url_data.resources.push_back(CreateResourceData( 737 InitializeResourceData(url_data.add_resources(), "http://nike.com/image2.png",
748 "http://nike.com/image2.png", content::RESOURCE_TYPE_IMAGE, 1, 0, 0, 2.0, 738 content::RESOURCE_TYPE_IMAGE, 1, 0, 0, 2.0,
749 net::MEDIUM, false, false)); 739 net::MEDIUM, false, false);
750 EXPECT_CALL(*mock_tables_.get(), 740 EXPECT_CALL(*mock_tables_.get(),
751 UpdateData(url_data, empty_host_data_, empty_url_redirect_data_, 741 UpdateData(url_data, empty_resource_data_, empty_redirect_data_,
752 empty_host_redirect_data_)); 742 empty_redirect_data_));
753 743
754 PrefetchData host_data(PREFETCH_KEY_TYPE_HOST, "www.nike.com"); 744 PrefetchData host_data = CreatePrefetchData("www.nike.com");
755 host_data.resources = url_data.resources; 745 host_data.mutable_resources()->CopyFrom(url_data.resources());
756 EXPECT_CALL(*mock_tables_.get(), 746 EXPECT_CALL(*mock_tables_.get(),
757 UpdateData(empty_url_data_, host_data, empty_url_redirect_data_, 747 UpdateData(empty_resource_data_, host_data, empty_redirect_data_,
758 empty_host_redirect_data_)); 748 empty_redirect_data_));
759 749
760 predictor_->OnNavigationComplete(main_frame.navigation_id); 750 predictor_->OnNavigationComplete(main_frame.navigation_id);
761 profile_->BlockUntilHistoryProcessesPendingRequests(); 751 profile_->BlockUntilHistoryProcessesPendingRequests();
762 } 752 }
763 753
764 TEST_F(ResourcePrefetchPredictorTest, RedirectUrlNotInDB) { 754 TEST_F(ResourcePrefetchPredictorTest, RedirectUrlNotInDB) {
765 AddUrlToHistory("https://facebook.com/google", 4); 755 AddUrlToHistory("https://facebook.com/google", 4);
766 756
767 URLRequestSummary fb1 = CreateURLRequestSummary(1, 1, "http://fb.com/google"); 757 URLRequestSummary fb1 = CreateURLRequestSummary(1, 1, "http://fb.com/google");
768 predictor_->RecordURLRequest(fb1); 758 predictor_->RecordURLRequest(fb1);
769 EXPECT_EQ(1U, predictor_->inflight_navigations_.size()); 759 EXPECT_EQ(1U, predictor_->inflight_navigations_.size());
770 760
771 URLRequestSummary fb2 = CreateRedirectRequestSummary( 761 URLRequestSummary fb2 = CreateRedirectRequestSummary(
772 1, 1, "http://fb.com/google", "http://facebook.com/google"); 762 1, 1, "http://fb.com/google", "http://facebook.com/google");
773 predictor_->RecordURLRedirect(fb2); 763 predictor_->RecordURLRedirect(fb2);
774 URLRequestSummary fb3 = CreateRedirectRequestSummary( 764 URLRequestSummary fb3 = CreateRedirectRequestSummary(
775 1, 1, "http://facebook.com/google", "https://facebook.com/google"); 765 1, 1, "http://facebook.com/google", "https://facebook.com/google");
776 predictor_->RecordURLRedirect(fb3); 766 predictor_->RecordURLRedirect(fb3);
777 NavigationID fb_end = CreateNavigationID(1, 1, "https://facebook.com/google"); 767 NavigationID fb_end = CreateNavigationID(1, 1, "https://facebook.com/google");
778 768
779 // Since the navigation hasn't resources, corresponding entry 769 // Since the navigation hasn't resources, corresponding entry
780 // in resource table will be deleted. 770 // in resource table will be deleted.
781 EXPECT_CALL(*mock_tables_.get(), 771 EXPECT_CALL(*mock_tables_.get(),
782 DeleteSingleResourceDataPoint("https://facebook.com/google", 772 DeleteSingleResourceDataPoint("https://facebook.com/google",
783 PREFETCH_KEY_TYPE_URL)); 773 PREFETCH_KEY_TYPE_URL));
784 EXPECT_CALL(*mock_tables_.get(), DeleteSingleResourceDataPoint( 774 EXPECT_CALL(*mock_tables_.get(), DeleteSingleResourceDataPoint(
785 "facebook.com", PREFETCH_KEY_TYPE_HOST)); 775 "facebook.com", PREFETCH_KEY_TYPE_HOST));
786 776
787 RedirectData url_redirect_data; 777 RedirectData url_redirect_data = CreateRedirectData("http://fb.com/google");
788 url_redirect_data.set_primary_key("http://fb.com/google");
789 InitializeRedirectStat(url_redirect_data.add_redirect_endpoints(), 778 InitializeRedirectStat(url_redirect_data.add_redirect_endpoints(),
790 "https://facebook.com/google", 1, 0, 0); 779 "https://facebook.com/google", 1, 0, 0);
791 EXPECT_CALL(*mock_tables_.get(), 780 EXPECT_CALL(*mock_tables_.get(),
792 UpdateData(empty_url_data_, empty_host_data_, url_redirect_data, 781 UpdateData(empty_resource_data_, empty_resource_data_,
793 empty_host_redirect_data_)); 782 url_redirect_data, empty_redirect_data_));
794 783
795 RedirectData host_redirect_data; 784 RedirectData host_redirect_data = CreateRedirectData("fb.com");
796 host_redirect_data.set_primary_key("fb.com");
797 InitializeRedirectStat(host_redirect_data.add_redirect_endpoints(), 785 InitializeRedirectStat(host_redirect_data.add_redirect_endpoints(),
798 "facebook.com", 1, 0, 0); 786 "facebook.com", 1, 0, 0);
799 EXPECT_CALL(*mock_tables_.get(), 787 EXPECT_CALL(*mock_tables_.get(),
800 UpdateData(empty_url_data_, empty_host_data_, 788 UpdateData(empty_resource_data_, empty_resource_data_,
801 empty_url_redirect_data_, host_redirect_data)); 789 empty_redirect_data_, host_redirect_data));
802 790
803 predictor_->RecordMainFrameLoadComplete(fb_end); 791 predictor_->RecordMainFrameLoadComplete(fb_end);
804 profile_->BlockUntilHistoryProcessesPendingRequests(); 792 profile_->BlockUntilHistoryProcessesPendingRequests();
805 } 793 }
806 794
807 // Tests that redirect is recorded correctly for URL already present in 795 // Tests that redirect is recorded correctly for URL already present in
808 // the database cache. 796 // the database cache.
809 TEST_F(ResourcePrefetchPredictorTest, RedirectUrlInDB) { 797 TEST_F(ResourcePrefetchPredictorTest, RedirectUrlInDB) {
810 AddUrlToHistory("https://facebook.com/google", 4); 798 AddUrlToHistory("https://facebook.com/google", 4);
811 799
(...skipping 26 matching lines...) Expand all
838 DeleteSingleRedirectDataPoint("bbc.com", PREFETCH_KEY_TYPE_HOST)); 826 DeleteSingleRedirectDataPoint("bbc.com", PREFETCH_KEY_TYPE_HOST));
839 827
840 // Since the navigation hasn't resources, corresponding entry 828 // Since the navigation hasn't resources, corresponding entry
841 // in resource table will be deleted. 829 // in resource table will be deleted.
842 EXPECT_CALL(*mock_tables_.get(), 830 EXPECT_CALL(*mock_tables_.get(),
843 DeleteSingleResourceDataPoint("https://facebook.com/google", 831 DeleteSingleResourceDataPoint("https://facebook.com/google",
844 PREFETCH_KEY_TYPE_URL)); 832 PREFETCH_KEY_TYPE_URL));
845 EXPECT_CALL(*mock_tables_.get(), DeleteSingleResourceDataPoint( 833 EXPECT_CALL(*mock_tables_.get(), DeleteSingleResourceDataPoint(
846 "facebook.com", PREFETCH_KEY_TYPE_HOST)); 834 "facebook.com", PREFETCH_KEY_TYPE_HOST));
847 835
848 RedirectData url_redirect_data; 836 RedirectData url_redirect_data = CreateRedirectData("http://fb.com/google");
849 url_redirect_data.set_primary_key("http://fb.com/google");
850 InitializeRedirectStat(url_redirect_data.add_redirect_endpoints(), 837 InitializeRedirectStat(url_redirect_data.add_redirect_endpoints(),
851 "https://facebook.com/google", 6, 1, 0); 838 "https://facebook.com/google", 6, 1, 0);
852 // Existing redirect to https://facebook.com/login will be deleted because of 839 // Existing redirect to https://facebook.com/login will be deleted because of
853 // too many consecutive misses. 840 // too many consecutive misses.
854 EXPECT_CALL(*mock_tables_.get(), 841 EXPECT_CALL(*mock_tables_.get(),
855 UpdateData(empty_url_data_, empty_host_data_, url_redirect_data, 842 UpdateData(empty_resource_data_, empty_resource_data_,
856 empty_host_redirect_data_)); 843 url_redirect_data, empty_redirect_data_));
857 844
858 RedirectData host_redirect_data; 845 RedirectData host_redirect_data = CreateRedirectData("fb.com");
859 host_redirect_data.set_primary_key("fb.com");
860 InitializeRedirectStat(host_redirect_data.add_redirect_endpoints(), 846 InitializeRedirectStat(host_redirect_data.add_redirect_endpoints(),
861 "facebook.com", 1, 0, 0); 847 "facebook.com", 1, 0, 0);
862 EXPECT_CALL(*mock_tables_.get(), 848 EXPECT_CALL(*mock_tables_.get(),
863 UpdateData(empty_url_data_, empty_host_data_, 849 UpdateData(empty_resource_data_, empty_resource_data_,
864 empty_url_redirect_data_, host_redirect_data)); 850 empty_redirect_data_, host_redirect_data));
865 851
866 predictor_->RecordMainFrameLoadComplete(fb_end); 852 predictor_->RecordMainFrameLoadComplete(fb_end);
867 profile_->BlockUntilHistoryProcessesPendingRequests(); 853 profile_->BlockUntilHistoryProcessesPendingRequests();
868 } 854 }
869 855
870 TEST_F(ResourcePrefetchPredictorTest, DeleteUrls) { 856 TEST_F(ResourcePrefetchPredictorTest, DeleteUrls) {
871 // Add some dummy entries to cache. 857 // Add some dummy entries to cache.
858 predictor_->url_table_cache_->insert(
859 std::make_pair("http://www.google.com/page1.html",
860 CreatePrefetchData("http://www.google.com/page1.html")));
861 predictor_->url_table_cache_->insert(
862 std::make_pair("http://www.google.com/page2.html",
863 CreatePrefetchData("http://www.google.com/page2.html")));
872 predictor_->url_table_cache_->insert(std::make_pair( 864 predictor_->url_table_cache_->insert(std::make_pair(
873 "http://www.google.com/page1.html", 865 "http://www.yahoo.com/", CreatePrefetchData("http://www.yahoo.com/")));
874 PrefetchData(PREFETCH_KEY_TYPE_URL, "http://www.google.com/page1.html")));
875 predictor_->url_table_cache_->insert(std::make_pair( 866 predictor_->url_table_cache_->insert(std::make_pair(
876 "http://www.google.com/page2.html", 867 "http://www.apple.com/", CreatePrefetchData("http://www.apple.com/")));
877 PrefetchData(PREFETCH_KEY_TYPE_URL, "http://www.google.com/page2.html")));
878 predictor_->url_table_cache_->insert(std::make_pair( 868 predictor_->url_table_cache_->insert(std::make_pair(
879 "http://www.yahoo.com/", 869 "http://www.nike.com/", CreatePrefetchData("http://www.nike.com/")));
880 PrefetchData(PREFETCH_KEY_TYPE_URL, "http://www.yahoo.com/")));
881 predictor_->url_table_cache_->insert(std::make_pair(
882 "http://www.apple.com/",
883 PrefetchData(PREFETCH_KEY_TYPE_URL, "http://www.apple.com/")));
884 predictor_->url_table_cache_->insert(std::make_pair(
885 "http://www.nike.com/",
886 PrefetchData(PREFETCH_KEY_TYPE_URL, "http://www.nike.com/")));
887 870
888 predictor_->host_table_cache_->insert(std::make_pair( 871 predictor_->host_table_cache_->insert(
889 "www.google.com", 872 std::make_pair("www.google.com", CreatePrefetchData("www.google.com")));
890 PrefetchData(PREFETCH_KEY_TYPE_HOST, "www.google.com"))); 873 predictor_->host_table_cache_->insert(
891 predictor_->host_table_cache_->insert(std::make_pair( 874 std::make_pair("www.yahoo.com", CreatePrefetchData("www.yahoo.com")));
892 "www.yahoo.com", 875 predictor_->host_table_cache_->insert(
893 PrefetchData(PREFETCH_KEY_TYPE_HOST, "www.yahoo.com"))); 876 std::make_pair("www.apple.com", CreatePrefetchData("www.apple.com")));
894 predictor_->host_table_cache_->insert(std::make_pair(
895 "www.apple.com",
896 PrefetchData(PREFETCH_KEY_TYPE_HOST, "www.apple.com")));
897 877
898 predictor_->url_redirect_table_cache_->insert( 878 predictor_->url_redirect_table_cache_->insert(
899 std::make_pair("http://www.google.com/page1.html", 879 std::make_pair("http://www.google.com/page1.html",
900 CreateRedirectData("http://www.google.com/page1.html"))); 880 CreateRedirectData("http://www.google.com/page1.html")));
901 predictor_->url_redirect_table_cache_->insert( 881 predictor_->url_redirect_table_cache_->insert(
902 std::make_pair("http://www.google.com/page2.html", 882 std::make_pair("http://www.google.com/page2.html",
903 CreateRedirectData("http://www.google.com/page2.html"))); 883 CreateRedirectData("http://www.google.com/page2.html")));
904 predictor_->url_redirect_table_cache_->insert(std::make_pair( 884 predictor_->url_redirect_table_cache_->insert(std::make_pair(
905 "http://www.apple.com/", CreateRedirectData("http://www.apple.com/"))); 885 "http://www.apple.com/", CreateRedirectData("http://www.apple.com/")));
906 predictor_->url_redirect_table_cache_->insert( 886 predictor_->url_redirect_table_cache_->insert(
(...skipping 433 matching lines...) Expand 10 before | Expand all | Expand 10 after
1340 url_request_job_factory_.set_response_info(response_info); 1320 url_request_job_factory_.set_response_info(response_info);
1341 std::unique_ptr<net::URLRequest> request_etag = 1321 std::unique_ptr<net::URLRequest> request_etag =
1342 CreateURLRequest(GURL("http://www.google.com/cat.png"), net::MEDIUM, 1322 CreateURLRequest(GURL("http://www.google.com/cat.png"), net::MEDIUM,
1343 content::RESOURCE_TYPE_PREFETCH, 1, 1, true); 1323 content::RESOURCE_TYPE_PREFETCH, 1, 1, true);
1344 EXPECT_TRUE(URLRequestSummary::SummarizeResponse(*request_etag, &summary)); 1324 EXPECT_TRUE(URLRequestSummary::SummarizeResponse(*request_etag, &summary));
1345 EXPECT_TRUE(summary.has_validators); 1325 EXPECT_TRUE(summary.has_validators);
1346 EXPECT_TRUE(summary.always_revalidate); 1326 EXPECT_TRUE(summary.always_revalidate);
1347 } 1327 }
1348 1328
1349 } // namespace predictors 1329 } // namespace predictors
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698