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

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

Issue 2587443002: predictors: Make speculative_prefetch_predictor work with PlzNavigate (Closed)
Patch Set: Modified after clamy@ review Created 4 years 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
11 #include "base/memory/ptr_util.h" 11 #include "base/memory/ptr_util.h"
12 #include "base/memory/ref_counted.h" 12 #include "base/memory/ref_counted.h"
13 #include "base/run_loop.h" 13 #include "base/run_loop.h"
14 #include "base/time/time.h" 14 #include "base/time/time.h"
15 #include "chrome/browser/history/history_service_factory.h" 15 #include "chrome/browser/history/history_service_factory.h"
16 #include "chrome/browser/predictors/resource_prefetch_predictor_tables.h" 16 #include "chrome/browser/predictors/resource_prefetch_predictor_tables.h"
17 #include "chrome/browser/predictors/resource_prefetch_predictor_test_util.h" 17 #include "chrome/browser/predictors/resource_prefetch_predictor_test_util.h"
18 #include "chrome/test/base/testing_profile.h" 18 #include "chrome/test/base/testing_profile.h"
19 #include "components/history/core/browser/history_service.h" 19 #include "components/history/core/browser/history_service.h"
20 #include "components/history/core/browser/history_types.h" 20 #include "components/history/core/browser/history_types.h"
21 #include "components/sessions/core/session_id.h"
21 #include "content/public/browser/resource_request_info.h" 22 #include "content/public/browser/resource_request_info.h"
22 #include "content/public/test/test_browser_thread_bundle.h" 23 #include "content/public/test/test_browser_thread_bundle.h"
23 #include "net/http/http_response_headers.h" 24 #include "net/http/http_response_headers.h"
24 #include "net/url_request/url_request_context.h" 25 #include "net/url_request/url_request_context.h"
25 #include "net/url_request/url_request_job.h" 26 #include "net/url_request/url_request_job.h"
26 #include "net/url_request/url_request_test_util.h" 27 #include "net/url_request/url_request_test_util.h"
27 #include "testing/gmock/include/gmock/gmock.h" 28 #include "testing/gmock/include/gmock/gmock.h"
28 #include "testing/gtest/include/gtest/gtest.h" 29 #include "testing/gtest/include/gtest/gtest.h"
29 30
30 using testing::ContainerEq; 31 using testing::ContainerEq;
(...skipping 151 matching lines...) Expand 10 before | Expand all | Expand 10 after
182 base::string16(), 183 base::string16(),
183 visit_count, 184 visit_count,
184 0, 185 0,
185 base::Time::Now(), 186 base::Time::Now(),
186 false, 187 false,
187 history::SOURCE_BROWSED); 188 history::SOURCE_BROWSED);
188 profile_->BlockUntilHistoryProcessesPendingRequests(); 189 profile_->BlockUntilHistoryProcessesPendingRequests();
189 } 190 }
190 191
191 URLRequestSummary CreateRedirectRequestSummary( 192 URLRequestSummary CreateRedirectRequestSummary(
192 int process_id, 193 SessionID::id_type session_id,
193 int render_frame_id,
194 const std::string& main_frame_url, 194 const std::string& main_frame_url,
195 const std::string& redirect_url) { 195 const std::string& redirect_url) {
196 URLRequestSummary summary = 196 URLRequestSummary summary =
197 CreateURLRequestSummary(process_id, render_frame_id, main_frame_url); 197 CreateURLRequestSummary(session_id, main_frame_url);
198 summary.redirect_url = GURL(redirect_url); 198 summary.redirect_url = GURL(redirect_url);
199 return summary; 199 return summary;
200 } 200 }
201 201
202 std::unique_ptr<net::URLRequest> CreateURLRequest( 202 std::unique_ptr<net::URLRequest> CreateURLRequest(
203 const GURL& url, 203 const GURL& url,
204 net::RequestPriority priority, 204 net::RequestPriority priority,
205 content::ResourceType resource_type, 205 content::ResourceType resource_type,
206 int render_process_id,
207 int render_frame_id,
208 bool is_main_frame) { 206 bool is_main_frame) {
209 std::unique_ptr<net::URLRequest> request = 207 std::unique_ptr<net::URLRequest> request =
210 url_request_context_.CreateRequest(url, priority, 208 url_request_context_.CreateRequest(url, priority,
211 &url_request_delegate_); 209 &url_request_delegate_);
212 request->set_first_party_for_cookies(url); 210 request->set_first_party_for_cookies(url);
213 content::ResourceRequestInfo::AllocateForTesting( 211 content::ResourceRequestInfo::AllocateForTesting(
214 request.get(), resource_type, nullptr, render_process_id, -1, 212 request.get(), resource_type, nullptr, -1, -1, -1, is_main_frame, false,
215 render_frame_id, is_main_frame, false, false, true, false); 213 false, true, false);
216 request->Start(); 214 request->Start();
217 return request; 215 return request;
218 } 216 }
219 217
220 void InitializePredictor() { 218 void InitializePredictor() {
221 predictor_->StartInitialization(); 219 predictor_->StartInitialization();
222 base::RunLoop loop; 220 base::RunLoop loop;
223 loop.RunUntilIdle(); // Runs the DB lookup. 221 loop.RunUntilIdle(); // Runs the DB lookup.
224 profile_->BlockUntilHistoryProcessesPendingRequests(); 222 profile_->BlockUntilHistoryProcessesPendingRequests();
225 } 223 }
(...skipping 242 matching lines...) Expand 10 before | Expand all | Expand 10 after
468 EXPECT_EQ(test_url_redirect_data_, *predictor_->url_redirect_table_cache_); 466 EXPECT_EQ(test_url_redirect_data_, *predictor_->url_redirect_table_cache_);
469 EXPECT_EQ(test_host_redirect_data_, *predictor_->host_redirect_table_cache_); 467 EXPECT_EQ(test_host_redirect_data_, *predictor_->host_redirect_table_cache_);
470 } 468 }
471 469
472 // Single navigation but history count is low, so should not record. 470 // Single navigation but history count is low, so should not record.
473 TEST_F(ResourcePrefetchPredictorTest, NavigationNotRecorded) { 471 TEST_F(ResourcePrefetchPredictorTest, NavigationNotRecorded) {
474 const int kVisitCount = 1; 472 const int kVisitCount = 1;
475 AddUrlToHistory("https://www.google.com", kVisitCount); 473 AddUrlToHistory("https://www.google.com", kVisitCount);
476 474
477 URLRequestSummary main_frame = 475 URLRequestSummary main_frame =
478 CreateURLRequestSummary(1, 1, "http://www.google.com"); 476 CreateURLRequestSummary(1, "http://www.google.com");
479 predictor_->RecordURLRequest(main_frame); 477 predictor_->RecordURLRequest(main_frame);
480 EXPECT_EQ(1U, predictor_->inflight_navigations_.size()); 478 EXPECT_EQ(1U, predictor_->inflight_navigations_.size());
481 479
482 URLRequestSummary main_frame_redirect = CreateRedirectRequestSummary( 480 URLRequestSummary main_frame_redirect = CreateRedirectRequestSummary(
483 1, 1, "http://www.google.com", "https://www.google.com"); 481 1, "http://www.google.com", "https://www.google.com");
484 predictor_->RecordURLRedirect(main_frame_redirect); 482 predictor_->RecordURLRedirect(main_frame_redirect);
485 EXPECT_EQ(1U, predictor_->inflight_navigations_.size()); 483 EXPECT_EQ(1U, predictor_->inflight_navigations_.size());
486 main_frame = CreateURLRequestSummary(1, 1, "https://www.google.com"); 484 main_frame = CreateURLRequestSummary(1, "https://www.google.com");
487 485
488 // Now add a few subresources. 486 // Now add a few subresources.
489 URLRequestSummary resource1 = CreateURLRequestSummary( 487 URLRequestSummary resource1 = CreateURLRequestSummary(
490 1, 1, "https://www.google.com", "https://google.com/style1.css", 488 1, "https://www.google.com", "https://google.com/style1.css",
491 content::RESOURCE_TYPE_STYLESHEET, net::MEDIUM, "text/css", false); 489 content::RESOURCE_TYPE_STYLESHEET, net::MEDIUM, "text/css", false);
492 predictor_->RecordURLResponse(resource1); 490 predictor_->RecordURLResponse(resource1);
493 URLRequestSummary resource2 = CreateURLRequestSummary( 491 URLRequestSummary resource2 = CreateURLRequestSummary(
494 1, 1, "https://www.google.com", "https://google.com/script1.js", 492 1, "https://www.google.com", "https://google.com/script1.js",
495 content::RESOURCE_TYPE_SCRIPT, net::MEDIUM, "text/javascript", false); 493 content::RESOURCE_TYPE_SCRIPT, net::MEDIUM, "text/javascript", false);
496 predictor_->RecordURLResponse(resource2); 494 predictor_->RecordURLResponse(resource2);
497 URLRequestSummary resource3 = CreateURLRequestSummary( 495 URLRequestSummary resource3 = CreateURLRequestSummary(
498 1, 1, "https://www.google.com", "https://google.com/script2.js", 496 1, "https://www.google.com", "https://google.com/script2.js",
499 content::RESOURCE_TYPE_SCRIPT, net::MEDIUM, "text/javascript", false); 497 content::RESOURCE_TYPE_SCRIPT, net::MEDIUM, "text/javascript", false);
500 predictor_->RecordURLResponse(resource3); 498 predictor_->RecordURLResponse(resource3);
501 499
502 StrictMock<MockResourcePrefetchPredictorObserver> mock_observer( 500 StrictMock<MockResourcePrefetchPredictorObserver> mock_observer(
503 predictor_.get()); 501 predictor_.get());
504 EXPECT_CALL( 502 EXPECT_CALL(
505 mock_observer, 503 mock_observer,
506 OnNavigationLearned(kVisitCount, 504 OnNavigationLearned(kVisitCount,
507 CreatePageRequestSummary( 505 CreatePageRequestSummary(
508 "https://www.google.com", "http://www.google.com", 506 "https://www.google.com", "http://www.google.com",
(...skipping 18 matching lines...) Expand all
527 profile_->BlockUntilHistoryProcessesPendingRequests(); 525 profile_->BlockUntilHistoryProcessesPendingRequests();
528 } 526 }
529 527
530 // Single navigation that will be recorded. Will check for duplicate 528 // Single navigation that will be recorded. Will check for duplicate
531 // resources and also for number of resources saved. 529 // resources and also for number of resources saved.
532 TEST_F(ResourcePrefetchPredictorTest, NavigationUrlNotInDB) { 530 TEST_F(ResourcePrefetchPredictorTest, NavigationUrlNotInDB) {
533 const int kVisitCount = 4; 531 const int kVisitCount = 4;
534 AddUrlToHistory("http://www.google.com", kVisitCount); 532 AddUrlToHistory("http://www.google.com", kVisitCount);
535 533
536 URLRequestSummary main_frame = 534 URLRequestSummary main_frame =
537 CreateURLRequestSummary(1, 1, "http://www.google.com"); 535 CreateURLRequestSummary(1, "http://www.google.com");
538 predictor_->RecordURLRequest(main_frame); 536 predictor_->RecordURLRequest(main_frame);
539 EXPECT_EQ(1U, predictor_->inflight_navigations_.size()); 537 EXPECT_EQ(1U, predictor_->inflight_navigations_.size());
540 538
541 std::vector<URLRequestSummary> resources; 539 std::vector<URLRequestSummary> resources;
542 resources.push_back(CreateURLRequestSummary( 540 resources.push_back(CreateURLRequestSummary(
543 1, 1, "http://www.google.com", "http://google.com/style1.css", 541 1, "http://www.google.com", "http://google.com/style1.css",
544 content::RESOURCE_TYPE_STYLESHEET, net::MEDIUM, "text/css", false)); 542 content::RESOURCE_TYPE_STYLESHEET, net::MEDIUM, "text/css", false));
545 predictor_->RecordURLResponse(resources.back()); 543 predictor_->RecordURLResponse(resources.back());
546 resources.push_back(CreateURLRequestSummary( 544 resources.push_back(CreateURLRequestSummary(
547 1, 1, "http://www.google.com", "http://google.com/script1.js", 545 1, "http://www.google.com", "http://google.com/script1.js",
548 content::RESOURCE_TYPE_SCRIPT, net::MEDIUM, "text/javascript", false)); 546 content::RESOURCE_TYPE_SCRIPT, net::MEDIUM, "text/javascript", false));
549 predictor_->RecordURLResponse(resources.back()); 547 predictor_->RecordURLResponse(resources.back());
550 resources.push_back(CreateURLRequestSummary( 548 resources.push_back(CreateURLRequestSummary(
551 1, 1, "http://www.google.com", "http://google.com/script2.js", 549 1, "http://www.google.com", "http://google.com/script2.js",
552 content::RESOURCE_TYPE_SCRIPT, net::MEDIUM, "text/javascript", false)); 550 content::RESOURCE_TYPE_SCRIPT, net::MEDIUM, "text/javascript", false));
553 predictor_->RecordURLResponse(resources.back()); 551 predictor_->RecordURLResponse(resources.back());
554 resources.push_back(CreateURLRequestSummary( 552 resources.push_back(CreateURLRequestSummary(
555 1, 1, "http://www.google.com", "http://google.com/script1.js", 553 1, "http://www.google.com", "http://google.com/script1.js",
556 content::RESOURCE_TYPE_SCRIPT, net::MEDIUM, "text/javascript", true)); 554 content::RESOURCE_TYPE_SCRIPT, net::MEDIUM, "text/javascript", true));
557 predictor_->RecordURLResponse(resources.back()); 555 predictor_->RecordURLResponse(resources.back());
558 resources.push_back(CreateURLRequestSummary( 556 resources.push_back(CreateURLRequestSummary(
559 1, 1, "http://www.google.com", "http://google.com/image1.png", 557 1, "http://www.google.com", "http://google.com/image1.png",
560 content::RESOURCE_TYPE_IMAGE, net::MEDIUM, "image/png", false)); 558 content::RESOURCE_TYPE_IMAGE, net::MEDIUM, "image/png", false));
561 predictor_->RecordURLResponse(resources.back()); 559 predictor_->RecordURLResponse(resources.back());
562 resources.push_back(CreateURLRequestSummary( 560 resources.push_back(CreateURLRequestSummary(
563 1, 1, "http://www.google.com", "http://google.com/image2.png", 561 1, "http://www.google.com", "http://google.com/image2.png",
564 content::RESOURCE_TYPE_IMAGE, net::MEDIUM, "image/png", false)); 562 content::RESOURCE_TYPE_IMAGE, net::MEDIUM, "image/png", false));
565 predictor_->RecordURLResponse(resources.back()); 563 predictor_->RecordURLResponse(resources.back());
566 resources.push_back(CreateURLRequestSummary( 564 resources.push_back(CreateURLRequestSummary(
567 1, 1, "http://www.google.com", "http://google.com/style2.css", 565 1, "http://www.google.com", "http://google.com/style2.css",
568 content::RESOURCE_TYPE_STYLESHEET, net::MEDIUM, "text/css", true)); 566 content::RESOURCE_TYPE_STYLESHEET, net::MEDIUM, "text/css", true));
569 predictor_->RecordURLResponse(resources.back()); 567 predictor_->RecordURLResponse(resources.back());
570 568
571 StrictMock<MockResourcePrefetchPredictorObserver> mock_observer( 569 StrictMock<MockResourcePrefetchPredictorObserver> mock_observer(
572 predictor_.get()); 570 predictor_.get());
573 EXPECT_CALL(mock_observer, 571 EXPECT_CALL(mock_observer,
574 OnNavigationLearned( 572 OnNavigationLearned(
575 kVisitCount, CreatePageRequestSummary("http://www.google.com", 573 kVisitCount, CreatePageRequestSummary("http://www.google.com",
576 "http://www.google.com", 574 "http://www.google.com",
577 resources))); 575 resources)));
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
617 Pointee(ContainerEq(RedirectDataMap())), 615 Pointee(ContainerEq(RedirectDataMap())),
618 Pointee(ContainerEq(RedirectDataMap())))) 616 Pointee(ContainerEq(RedirectDataMap()))))
619 .WillOnce(DoAll(SetArgPointee<0>(test_url_data_), 617 .WillOnce(DoAll(SetArgPointee<0>(test_url_data_),
620 SetArgPointee<1>(test_host_data_))); 618 SetArgPointee<1>(test_host_data_)));
621 ResetPredictor(); 619 ResetPredictor();
622 InitializePredictor(); 620 InitializePredictor();
623 EXPECT_EQ(3U, predictor_->url_table_cache_->size()); 621 EXPECT_EQ(3U, predictor_->url_table_cache_->size());
624 EXPECT_EQ(2U, predictor_->host_table_cache_->size()); 622 EXPECT_EQ(2U, predictor_->host_table_cache_->size());
625 623
626 URLRequestSummary main_frame = CreateURLRequestSummary( 624 URLRequestSummary main_frame = CreateURLRequestSummary(
627 1, 1, "http://www.google.com", "http://www.google.com", 625 1, "http://www.google.com", "http://www.google.com",
628 content::RESOURCE_TYPE_MAIN_FRAME, net::MEDIUM, std::string(), false); 626 content::RESOURCE_TYPE_MAIN_FRAME, net::MEDIUM, std::string(), false);
629 predictor_->RecordURLRequest(main_frame); 627 predictor_->RecordURLRequest(main_frame);
630 EXPECT_EQ(1U, predictor_->inflight_navigations_.size()); 628 EXPECT_EQ(1U, predictor_->inflight_navigations_.size());
631 629
632 std::vector<URLRequestSummary> resources; 630 std::vector<URLRequestSummary> resources;
633 resources.push_back(CreateURLRequestSummary( 631 resources.push_back(CreateURLRequestSummary(
634 1, 1, "http://www.google.com", "http://google.com/style1.css", 632 1, "http://www.google.com", "http://google.com/style1.css",
635 content::RESOURCE_TYPE_STYLESHEET, net::MEDIUM, "text/css", false)); 633 content::RESOURCE_TYPE_STYLESHEET, net::MEDIUM, "text/css", false));
636 predictor_->RecordURLResponse(resources.back()); 634 predictor_->RecordURLResponse(resources.back());
637 resources.push_back(CreateURLRequestSummary( 635 resources.push_back(CreateURLRequestSummary(
638 1, 1, "http://www.google.com", "http://google.com/script1.js", 636 1, "http://www.google.com", "http://google.com/script1.js",
639 content::RESOURCE_TYPE_SCRIPT, net::MEDIUM, "text/javascript", false)); 637 content::RESOURCE_TYPE_SCRIPT, net::MEDIUM, "text/javascript", false));
640 predictor_->RecordURLResponse(resources.back()); 638 predictor_->RecordURLResponse(resources.back());
641 resources.push_back(CreateURLRequestSummary( 639 resources.push_back(CreateURLRequestSummary(
642 1, 1, "http://www.google.com", "http://google.com/script2.js", 640 1, "http://www.google.com", "http://google.com/script2.js",
643 content::RESOURCE_TYPE_SCRIPT, net::MEDIUM, "text/javascript", false)); 641 content::RESOURCE_TYPE_SCRIPT, net::MEDIUM, "text/javascript", false));
644 predictor_->RecordURLResponse(resources.back()); 642 predictor_->RecordURLResponse(resources.back());
645 resources.push_back(CreateURLRequestSummary( 643 resources.push_back(CreateURLRequestSummary(
646 1, 1, "http://www.google.com", "http://google.com/script1.js", 644 1, "http://www.google.com", "http://google.com/script1.js",
647 content::RESOURCE_TYPE_SCRIPT, net::MEDIUM, "text/javascript", true)); 645 content::RESOURCE_TYPE_SCRIPT, net::MEDIUM, "text/javascript", true));
648 predictor_->RecordURLResponse(resources.back()); 646 predictor_->RecordURLResponse(resources.back());
649 resources.push_back(CreateURLRequestSummary( 647 resources.push_back(CreateURLRequestSummary(
650 1, 1, "http://www.google.com", "http://google.com/image1.png", 648 1, "http://www.google.com", "http://google.com/image1.png",
651 content::RESOURCE_TYPE_IMAGE, net::MEDIUM, "image/png", false)); 649 content::RESOURCE_TYPE_IMAGE, net::MEDIUM, "image/png", false));
652 predictor_->RecordURLResponse(resources.back()); 650 predictor_->RecordURLResponse(resources.back());
653 resources.push_back(CreateURLRequestSummary( 651 resources.push_back(CreateURLRequestSummary(
654 1, 1, "http://www.google.com", "http://google.com/image2.png", 652 1, "http://www.google.com", "http://google.com/image2.png",
655 content::RESOURCE_TYPE_IMAGE, net::MEDIUM, "image/png", false)); 653 content::RESOURCE_TYPE_IMAGE, net::MEDIUM, "image/png", false));
656 predictor_->RecordURLResponse(resources.back()); 654 predictor_->RecordURLResponse(resources.back());
657 resources.push_back(CreateURLRequestSummary( 655 resources.push_back(CreateURLRequestSummary(
658 1, 1, "http://www.google.com", "http://google.com/style2.css", 656 1, "http://www.google.com", "http://google.com/style2.css",
659 content::RESOURCE_TYPE_STYLESHEET, net::MEDIUM, "text/css", true)); 657 content::RESOURCE_TYPE_STYLESHEET, net::MEDIUM, "text/css", true));
660 predictor_->RecordURLResponse(resources.back()); 658 predictor_->RecordURLResponse(resources.back());
661 659
662 StrictMock<MockResourcePrefetchPredictorObserver> mock_observer( 660 StrictMock<MockResourcePrefetchPredictorObserver> mock_observer(
663 predictor_.get()); 661 predictor_.get());
664 EXPECT_CALL(mock_observer, 662 EXPECT_CALL(mock_observer,
665 OnNavigationLearned( 663 OnNavigationLearned(
666 kVisitCount, CreatePageRequestSummary("http://www.google.com", 664 kVisitCount, CreatePageRequestSummary("http://www.google.com",
667 "http://www.google.com", 665 "http://www.google.com",
668 resources))); 666 resources)));
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after
722 Pointee(ContainerEq(RedirectDataMap())), 720 Pointee(ContainerEq(RedirectDataMap())),
723 Pointee(ContainerEq(RedirectDataMap())))) 721 Pointee(ContainerEq(RedirectDataMap()))))
724 .WillOnce(DoAll(SetArgPointee<0>(test_url_data_), 722 .WillOnce(DoAll(SetArgPointee<0>(test_url_data_),
725 SetArgPointee<1>(test_host_data_))); 723 SetArgPointee<1>(test_host_data_)));
726 ResetPredictor(); 724 ResetPredictor();
727 InitializePredictor(); 725 InitializePredictor();
728 EXPECT_EQ(3U, predictor_->url_table_cache_->size()); 726 EXPECT_EQ(3U, predictor_->url_table_cache_->size());
729 EXPECT_EQ(2U, predictor_->host_table_cache_->size()); 727 EXPECT_EQ(2U, predictor_->host_table_cache_->size());
730 728
731 URLRequestSummary main_frame = CreateURLRequestSummary( 729 URLRequestSummary main_frame = CreateURLRequestSummary(
732 1, 1, "http://www.nike.com", "http://www.nike.com", 730 1, "http://www.nike.com", "http://www.nike.com",
733 content::RESOURCE_TYPE_MAIN_FRAME, net::MEDIUM, std::string(), false); 731 content::RESOURCE_TYPE_MAIN_FRAME, net::MEDIUM, std::string(), false);
734 predictor_->RecordURLRequest(main_frame); 732 predictor_->RecordURLRequest(main_frame);
735 EXPECT_EQ(1U, predictor_->inflight_navigations_.size()); 733 EXPECT_EQ(1U, predictor_->inflight_navigations_.size());
736 734
737 URLRequestSummary resource1 = CreateURLRequestSummary( 735 URLRequestSummary resource1 = CreateURLRequestSummary(
738 1, 1, "http://www.nike.com", "http://nike.com/style1.css", 736 1, "http://www.nike.com", "http://nike.com/style1.css",
739 content::RESOURCE_TYPE_STYLESHEET, net::MEDIUM, "text/css", false); 737 content::RESOURCE_TYPE_STYLESHEET, net::MEDIUM, "text/css", false);
740 predictor_->RecordURLResponse(resource1); 738 predictor_->RecordURLResponse(resource1);
741 URLRequestSummary resource2 = CreateURLRequestSummary( 739 URLRequestSummary resource2 = CreateURLRequestSummary(
742 1, 1, "http://www.nike.com", "http://nike.com/image2.png", 740 1, "http://www.nike.com", "http://nike.com/image2.png",
743 content::RESOURCE_TYPE_IMAGE, net::MEDIUM, "image/png", false); 741 content::RESOURCE_TYPE_IMAGE, net::MEDIUM, "image/png", false);
744 predictor_->RecordURLResponse(resource2); 742 predictor_->RecordURLResponse(resource2);
745 743
746 StrictMock<MockResourcePrefetchPredictorObserver> mock_observer( 744 StrictMock<MockResourcePrefetchPredictorObserver> mock_observer(
747 predictor_.get()); 745 predictor_.get());
748 EXPECT_CALL(mock_observer, 746 EXPECT_CALL(mock_observer,
749 OnNavigationLearned( 747 OnNavigationLearned(
750 kVisitCount, CreatePageRequestSummary( 748 kVisitCount, CreatePageRequestSummary(
751 "http://www.nike.com", "http://www.nike.com", 749 "http://www.nike.com", "http://www.nike.com",
752 {resource1, resource2}))); 750 {resource1, resource2})));
(...skipping 23 matching lines...) Expand all
776 empty_redirect_data_)); 774 empty_redirect_data_));
777 775
778 predictor_->RecordMainFrameLoadComplete(main_frame.navigation_id); 776 predictor_->RecordMainFrameLoadComplete(main_frame.navigation_id);
779 profile_->BlockUntilHistoryProcessesPendingRequests(); 777 profile_->BlockUntilHistoryProcessesPendingRequests();
780 } 778 }
781 779
782 TEST_F(ResourcePrefetchPredictorTest, RedirectUrlNotInDB) { 780 TEST_F(ResourcePrefetchPredictorTest, RedirectUrlNotInDB) {
783 const int kVisitCount = 4; 781 const int kVisitCount = 4;
784 AddUrlToHistory("https://facebook.com/google", kVisitCount); 782 AddUrlToHistory("https://facebook.com/google", kVisitCount);
785 783
786 URLRequestSummary fb1 = CreateURLRequestSummary(1, 1, "http://fb.com/google"); 784 URLRequestSummary fb1 = CreateURLRequestSummary(1, "http://fb.com/google");
787 predictor_->RecordURLRequest(fb1); 785 predictor_->RecordURLRequest(fb1);
788 EXPECT_EQ(1U, predictor_->inflight_navigations_.size()); 786 EXPECT_EQ(1U, predictor_->inflight_navigations_.size());
789 787
790 URLRequestSummary fb2 = CreateRedirectRequestSummary( 788 URLRequestSummary fb2 = CreateRedirectRequestSummary(
791 1, 1, "http://fb.com/google", "http://facebook.com/google"); 789 1, "http://fb.com/google", "http://facebook.com/google");
792 predictor_->RecordURLRedirect(fb2); 790 predictor_->RecordURLRedirect(fb2);
793 URLRequestSummary fb3 = CreateRedirectRequestSummary( 791 URLRequestSummary fb3 = CreateRedirectRequestSummary(
794 1, 1, "http://facebook.com/google", "https://facebook.com/google"); 792 1, "http://facebook.com/google", "https://facebook.com/google");
795 predictor_->RecordURLRedirect(fb3); 793 predictor_->RecordURLRedirect(fb3);
796 NavigationID fb_end = CreateNavigationID(1, 1, "https://facebook.com/google"); 794 NavigationID fb_end = CreateNavigationID(1, "https://facebook.com/google");
797 795
798 StrictMock<MockResourcePrefetchPredictorObserver> mock_observer( 796 StrictMock<MockResourcePrefetchPredictorObserver> mock_observer(
799 predictor_.get()); 797 predictor_.get());
800 EXPECT_CALL( 798 EXPECT_CALL(
801 mock_observer, 799 mock_observer,
802 OnNavigationLearned(kVisitCount, CreatePageRequestSummary( 800 OnNavigationLearned(kVisitCount, CreatePageRequestSummary(
803 "https://facebook.com/google", 801 "https://facebook.com/google",
804 "http://fb.com/google", 802 "http://fb.com/google",
805 std::vector<URLRequestSummary>()))); 803 std::vector<URLRequestSummary>())));
806 804
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
841 Pointee(ContainerEq(PrefetchDataMap())), 839 Pointee(ContainerEq(PrefetchDataMap())),
842 Pointee(ContainerEq(RedirectDataMap())), 840 Pointee(ContainerEq(RedirectDataMap())),
843 Pointee(ContainerEq(RedirectDataMap())))) 841 Pointee(ContainerEq(RedirectDataMap()))))
844 .WillOnce(DoAll(SetArgPointee<2>(test_url_redirect_data_), 842 .WillOnce(DoAll(SetArgPointee<2>(test_url_redirect_data_),
845 SetArgPointee<3>(test_host_redirect_data_))); 843 SetArgPointee<3>(test_host_redirect_data_)));
846 ResetPredictor(); 844 ResetPredictor();
847 InitializePredictor(); 845 InitializePredictor();
848 EXPECT_EQ(3U, predictor_->url_redirect_table_cache_->size()); 846 EXPECT_EQ(3U, predictor_->url_redirect_table_cache_->size());
849 EXPECT_EQ(2U, predictor_->host_redirect_table_cache_->size()); 847 EXPECT_EQ(2U, predictor_->host_redirect_table_cache_->size());
850 848
851 URLRequestSummary fb1 = CreateURLRequestSummary(1, 1, "http://fb.com/google"); 849 URLRequestSummary fb1 = CreateURLRequestSummary(1, "http://fb.com/google");
852 predictor_->RecordURLRequest(fb1); 850 predictor_->RecordURLRequest(fb1);
853 EXPECT_EQ(1U, predictor_->inflight_navigations_.size()); 851 EXPECT_EQ(1U, predictor_->inflight_navigations_.size());
854 852
855 URLRequestSummary fb2 = CreateRedirectRequestSummary( 853 URLRequestSummary fb2 = CreateRedirectRequestSummary(
856 1, 1, "http://fb.com/google", "http://facebook.com/google"); 854 1, "http://fb.com/google", "http://facebook.com/google");
857 predictor_->RecordURLRedirect(fb2); 855 predictor_->RecordURLRedirect(fb2);
858 URLRequestSummary fb3 = CreateRedirectRequestSummary( 856 URLRequestSummary fb3 = CreateRedirectRequestSummary(
859 1, 1, "http://facebook.com/google", "https://facebook.com/google"); 857 1, "http://facebook.com/google", "https://facebook.com/google");
860 predictor_->RecordURLRedirect(fb3); 858 predictor_->RecordURLRedirect(fb3);
861 NavigationID fb_end = CreateNavigationID(1, 1, "https://facebook.com/google"); 859 NavigationID fb_end = CreateNavigationID(1, "https://facebook.com/google");
862 860
863 StrictMock<MockResourcePrefetchPredictorObserver> mock_observer( 861 StrictMock<MockResourcePrefetchPredictorObserver> mock_observer(
864 predictor_.get()); 862 predictor_.get());
865 EXPECT_CALL( 863 EXPECT_CALL(
866 mock_observer, 864 mock_observer,
867 OnNavigationLearned(kVisitCount, CreatePageRequestSummary( 865 OnNavigationLearned(kVisitCount, CreatePageRequestSummary(
868 "https://facebook.com/google", 866 "https://facebook.com/google",
869 "http://fb.com/google", 867 "http://fb.com/google",
870 std::vector<URLRequestSummary>()))); 868 std::vector<URLRequestSummary>())));
871 869
(...skipping 103 matching lines...) Expand 10 before | Expand all | Expand 10 after
975 973
976 predictor_->DeleteAllUrls(); 974 predictor_->DeleteAllUrls();
977 EXPECT_TRUE(predictor_->url_table_cache_->empty()); 975 EXPECT_TRUE(predictor_->url_table_cache_->empty());
978 EXPECT_TRUE(predictor_->host_table_cache_->empty()); 976 EXPECT_TRUE(predictor_->host_table_cache_->empty());
979 EXPECT_TRUE(predictor_->url_redirect_table_cache_->empty()); 977 EXPECT_TRUE(predictor_->url_redirect_table_cache_->empty());
980 EXPECT_TRUE(predictor_->host_redirect_table_cache_->empty()); 978 EXPECT_TRUE(predictor_->host_redirect_table_cache_->empty());
981 } 979 }
982 980
983 TEST_F(ResourcePrefetchPredictorTest, OnMainFrameRequest) { 981 TEST_F(ResourcePrefetchPredictorTest, OnMainFrameRequest) {
984 URLRequestSummary summary1 = CreateURLRequestSummary( 982 URLRequestSummary summary1 = CreateURLRequestSummary(
985 1, 1, "http://www.google.com", "http://www.google.com", 983 1, "http://www.google.com", "http://www.google.com",
986 content::RESOURCE_TYPE_MAIN_FRAME, net::MEDIUM, std::string(), false); 984 content::RESOURCE_TYPE_MAIN_FRAME, net::MEDIUM, std::string(), false);
987 URLRequestSummary summary2 = CreateURLRequestSummary( 985 URLRequestSummary summary2 = CreateURLRequestSummary(
988 1, 2, "http://www.google.com", "http://www.google.com", 986 2, "http://www.google.com", "http://www.google.com",
989 content::RESOURCE_TYPE_MAIN_FRAME, net::MEDIUM, std::string(), false); 987 content::RESOURCE_TYPE_MAIN_FRAME, net::MEDIUM, std::string(), false);
990 URLRequestSummary summary3 = CreateURLRequestSummary( 988 URLRequestSummary summary3 = CreateURLRequestSummary(
991 2, 1, "http://www.yahoo.com", "http://www.yahoo.com", 989 3, "http://www.yahoo.com", "http://www.yahoo.com",
992 content::RESOURCE_TYPE_MAIN_FRAME, net::MEDIUM, std::string(), false); 990 content::RESOURCE_TYPE_MAIN_FRAME, net::MEDIUM, std::string(), false);
993 991
994 predictor_->OnMainFrameRequest(summary1); 992 predictor_->OnMainFrameRequest(summary1);
995 EXPECT_EQ(1U, predictor_->inflight_navigations_.size()); 993 EXPECT_EQ(1U, predictor_->inflight_navigations_.size());
996 predictor_->OnMainFrameRequest(summary2); 994 predictor_->OnMainFrameRequest(summary2);
997 EXPECT_EQ(2U, predictor_->inflight_navigations_.size()); 995 EXPECT_EQ(2U, predictor_->inflight_navigations_.size());
998 predictor_->OnMainFrameRequest(summary3); 996 predictor_->OnMainFrameRequest(summary3);
999 EXPECT_EQ(3U, predictor_->inflight_navigations_.size()); 997 EXPECT_EQ(3U, predictor_->inflight_navigations_.size());
1000 998
1001 // Insert another with same navigation id. It should replace. 999 // Insert another with same navigation id. It should replace.
1002 URLRequestSummary summary4 = CreateURLRequestSummary( 1000 URLRequestSummary summary4 = CreateURLRequestSummary(
1003 1, 1, "http://www.nike.com", "http://www.nike.com", 1001 1, "http://www.nike.com", "http://www.nike.com",
1004 content::RESOURCE_TYPE_MAIN_FRAME, net::MEDIUM, std::string(), false); 1002 content::RESOURCE_TYPE_MAIN_FRAME, net::MEDIUM, std::string(), false);
1005 URLRequestSummary summary5 = CreateURLRequestSummary( 1003 URLRequestSummary summary5 = CreateURLRequestSummary(
1006 1, 2, "http://www.google.com", "http://www.google.com", 1004 2, "http://www.google.com", "http://www.google.com",
1007 content::RESOURCE_TYPE_MAIN_FRAME, net::MEDIUM, std::string(), false); 1005 content::RESOURCE_TYPE_MAIN_FRAME, net::MEDIUM, std::string(), false);
1008 1006
1009 predictor_->OnMainFrameRequest(summary4); 1007 predictor_->OnMainFrameRequest(summary4);
1010 EXPECT_EQ(3U, predictor_->inflight_navigations_.size()); 1008 EXPECT_EQ(3U, predictor_->inflight_navigations_.size());
1011 1009
1012 // Change this creation time so that it will go away on the next insert. 1010 // Change this creation time so that it will go away on the next insert.
1013 summary5.navigation_id.creation_time = base::TimeTicks::Now() - 1011 summary5.navigation_id.creation_time = base::TimeTicks::Now() -
1014 base::TimeDelta::FromDays(1); 1012 base::TimeDelta::FromDays(1);
1015 predictor_->OnMainFrameRequest(summary5); 1013 predictor_->OnMainFrameRequest(summary5);
1016 EXPECT_EQ(3U, predictor_->inflight_navigations_.size()); 1014 EXPECT_EQ(3U, predictor_->inflight_navigations_.size());
1017 1015
1018 URLRequestSummary summary6 = CreateURLRequestSummary( 1016 URLRequestSummary summary6 = CreateURLRequestSummary(
1019 3, 1, "http://www.shoes.com", "http://www.shoes.com", 1017 4, "http://www.shoes.com", "http://www.shoes.com",
1020 content::RESOURCE_TYPE_MAIN_FRAME, net::MEDIUM, std::string(), false); 1018 content::RESOURCE_TYPE_MAIN_FRAME, net::MEDIUM, std::string(), false);
1021 predictor_->OnMainFrameRequest(summary6); 1019 predictor_->OnMainFrameRequest(summary6);
1022 EXPECT_EQ(3U, predictor_->inflight_navigations_.size()); 1020 EXPECT_EQ(3U, predictor_->inflight_navigations_.size());
1023 1021
1024 EXPECT_TRUE(predictor_->inflight_navigations_.find(summary3.navigation_id) != 1022 EXPECT_TRUE(predictor_->inflight_navigations_.find(summary3.navigation_id) !=
1025 predictor_->inflight_navigations_.end()); 1023 predictor_->inflight_navigations_.end());
1026 EXPECT_TRUE(predictor_->inflight_navigations_.find(summary4.navigation_id) != 1024 EXPECT_TRUE(predictor_->inflight_navigations_.find(summary4.navigation_id) !=
1027 predictor_->inflight_navigations_.end()); 1025 predictor_->inflight_navigations_.end());
1028 EXPECT_TRUE(predictor_->inflight_navigations_.find(summary6.navigation_id) != 1026 EXPECT_TRUE(predictor_->inflight_navigations_.find(summary6.navigation_id) !=
1029 predictor_->inflight_navigations_.end()); 1027 predictor_->inflight_navigations_.end());
1030 } 1028 }
1031 1029
1032 TEST_F(ResourcePrefetchPredictorTest, OnMainFrameRedirect) { 1030 TEST_F(ResourcePrefetchPredictorTest, OnMainFrameRedirect) {
1033 URLRequestSummary yahoo = CreateURLRequestSummary(1, 1, "http://yahoo.com"); 1031 URLRequestSummary yahoo = CreateURLRequestSummary(1, "http://yahoo.com");
1034 1032
1035 URLRequestSummary bbc1 = CreateURLRequestSummary(2, 2, "http://bbc.com"); 1033 URLRequestSummary bbc1 = CreateURLRequestSummary(2, "http://bbc.com");
1036 URLRequestSummary bbc2 = CreateRedirectRequestSummary(2, 2, "http://bbc.com", 1034 URLRequestSummary bbc2 =
1037 "https://www.bbc.com"); 1035 CreateRedirectRequestSummary(2, "http://bbc.com", "https://www.bbc.com");
1038 NavigationID bbc_end = CreateNavigationID(2, 2, "https://www.bbc.com"); 1036 NavigationID bbc_end = CreateNavigationID(2, "https://www.bbc.com");
1039 1037
1040 URLRequestSummary youtube1 = 1038 URLRequestSummary youtube1 = CreateURLRequestSummary(3, "http://youtube.com");
1041 CreateURLRequestSummary(1, 2, "http://youtube.com");
1042 URLRequestSummary youtube2 = CreateRedirectRequestSummary( 1039 URLRequestSummary youtube2 = CreateRedirectRequestSummary(
1043 1, 2, "http://youtube.com", "https://youtube.com"); 1040 3, "http://youtube.com", "https://youtube.com");
1044 NavigationID youtube_end = CreateNavigationID(1, 2, "https://youtube.com"); 1041 NavigationID youtube_end = CreateNavigationID(3, "https://youtube.com");
1045 1042
1046 URLRequestSummary nyt1 = CreateURLRequestSummary(2, 1, "http://nyt.com"); 1043 URLRequestSummary nyt1 = CreateURLRequestSummary(4, "http://nyt.com");
1047 URLRequestSummary nyt2 = CreateRedirectRequestSummary(2, 1, "http://nyt.com", 1044 URLRequestSummary nyt2 =
1048 "http://nytimes.com"); 1045 CreateRedirectRequestSummary(4, "http://nyt.com", "http://nytimes.com");
1049 URLRequestSummary nyt3 = CreateRedirectRequestSummary( 1046 URLRequestSummary nyt3 = CreateRedirectRequestSummary(4, "http://nytimes.com",
1050 2, 1, "http://nytimes.com", "http://m.nytimes.com"); 1047 "http://m.nytimes.com");
1051 NavigationID nyt_end = CreateNavigationID(2, 1, "http://m.nytimes.com"); 1048 NavigationID nyt_end = CreateNavigationID(4, "http://m.nytimes.com");
1052 1049
1053 URLRequestSummary fb1 = CreateURLRequestSummary(1, 3, "http://fb.com"); 1050 URLRequestSummary fb1 = CreateURLRequestSummary(5, "http://fb.com");
1054 URLRequestSummary fb2 = CreateRedirectRequestSummary(1, 3, "http://fb.com", 1051 URLRequestSummary fb2 =
1055 "http://facebook.com"); 1052 CreateRedirectRequestSummary(5, "http://fb.com", "http://facebook.com");
1056 URLRequestSummary fb3 = CreateRedirectRequestSummary( 1053 URLRequestSummary fb3 = CreateRedirectRequestSummary(5, "http://facebook.com",
1057 1, 3, "http://facebook.com", "https://facebook.com"); 1054 "https://facebook.com");
1058 URLRequestSummary fb4 = CreateRedirectRequestSummary( 1055 URLRequestSummary fb4 = CreateRedirectRequestSummary(
1059 1, 3, "https://facebook.com", 1056 5, "https://facebook.com",
1060 "https://m.facebook.com/?refsrc=https%3A%2F%2Fwww.facebook.com%2F&_rdr"); 1057 "https://m.facebook.com/?refsrc=https%3A%2F%2Fwww.facebook.com%2F&_rdr");
1061 NavigationID fb_end = CreateNavigationID( 1058 NavigationID fb_end = CreateNavigationID(
1062 1, 3, 1059 5,
1063 "https://m.facebook.com/?refsrc=https%3A%2F%2Fwww.facebook.com%2F&_rdr"); 1060 "https://m.facebook.com/?refsrc=https%3A%2F%2Fwww.facebook.com%2F&_rdr");
1064 1061
1065 // Redirect with empty redirect_url will be deleted. 1062 // Redirect with empty redirect_url will be deleted.
1066 predictor_->OnMainFrameRequest(yahoo); 1063 predictor_->OnMainFrameRequest(yahoo);
1067 EXPECT_EQ(1U, predictor_->inflight_navigations_.size()); 1064 EXPECT_EQ(1U, predictor_->inflight_navigations_.size());
1068 predictor_->OnMainFrameRedirect(yahoo); 1065 predictor_->OnMainFrameRedirect(yahoo);
1069 EXPECT_TRUE(predictor_->inflight_navigations_.empty()); 1066 EXPECT_TRUE(predictor_->inflight_navigations_.empty());
1070 1067
1071 // Redirect without previous request works fine. 1068 // Redirect without previous request works fine.
1072 // predictor_->OnMainFrameRequest(bbc1) missing. 1069 // predictor_->OnMainFrameRequest(bbc1) missing.
(...skipping 27 matching lines...) Expand all
1100 predictor_->OnMainFrameRedirect(fb3); 1097 predictor_->OnMainFrameRedirect(fb3);
1101 predictor_->OnMainFrameRedirect(fb4); 1098 predictor_->OnMainFrameRedirect(fb4);
1102 EXPECT_EQ(4U, predictor_->inflight_navigations_.size()); 1099 EXPECT_EQ(4U, predictor_->inflight_navigations_.size());
1103 EXPECT_EQ(fb1.navigation_id.main_frame_url, 1100 EXPECT_EQ(fb1.navigation_id.main_frame_url,
1104 predictor_->inflight_navigations_[fb_end]->initial_url); 1101 predictor_->inflight_navigations_[fb_end]->initial_url);
1105 } 1102 }
1106 1103
1107 TEST_F(ResourcePrefetchPredictorTest, OnSubresourceResponse) { 1104 TEST_F(ResourcePrefetchPredictorTest, OnSubresourceResponse) {
1108 // If there is no inflight navigation, nothing happens. 1105 // If there is no inflight navigation, nothing happens.
1109 URLRequestSummary resource1 = CreateURLRequestSummary( 1106 URLRequestSummary resource1 = CreateURLRequestSummary(
1110 1, 1, "http://www.google.com", "http://google.com/style1.css", 1107 1, "http://www.google.com", "http://google.com/style1.css",
1111 content::RESOURCE_TYPE_STYLESHEET, net::MEDIUM, "text/css", false); 1108 content::RESOURCE_TYPE_STYLESHEET, net::MEDIUM, "text/css", false);
1112 predictor_->OnSubresourceResponse(resource1); 1109 predictor_->OnSubresourceResponse(resource1);
1113 EXPECT_TRUE(predictor_->inflight_navigations_.empty()); 1110 EXPECT_TRUE(predictor_->inflight_navigations_.empty());
1114 1111
1115 // Add an inflight navigation. 1112 // Add an inflight navigation.
1116 URLRequestSummary main_frame1 = CreateURLRequestSummary( 1113 URLRequestSummary main_frame1 = CreateURLRequestSummary(
1117 1, 1, "http://www.google.com", "http://www.google.com", 1114 1, "http://www.google.com", "http://www.google.com",
1118 content::RESOURCE_TYPE_MAIN_FRAME, net::MEDIUM, std::string(), false); 1115 content::RESOURCE_TYPE_MAIN_FRAME, net::MEDIUM, std::string(), false);
1119 predictor_->OnMainFrameRequest(main_frame1); 1116 predictor_->OnMainFrameRequest(main_frame1);
1120 EXPECT_EQ(1U, predictor_->inflight_navigations_.size()); 1117 EXPECT_EQ(1U, predictor_->inflight_navigations_.size());
1121 1118
1122 // Now add a few subresources. 1119 // Now add a few subresources.
1123 URLRequestSummary resource2 = CreateURLRequestSummary( 1120 URLRequestSummary resource2 = CreateURLRequestSummary(
1124 1, 1, "http://www.google.com", "http://google.com/script1.js", 1121 1, "http://www.google.com", "http://google.com/script1.js",
1125 content::RESOURCE_TYPE_SCRIPT, net::MEDIUM, "text/javascript", false); 1122 content::RESOURCE_TYPE_SCRIPT, net::MEDIUM, "text/javascript", false);
1126 URLRequestSummary resource3 = CreateURLRequestSummary( 1123 URLRequestSummary resource3 = CreateURLRequestSummary(
1127 1, 1, "http://www.google.com", "http://google.com/script2.js", 1124 1, "http://www.google.com", "http://google.com/script2.js",
1128 content::RESOURCE_TYPE_SCRIPT, net::MEDIUM, "text/javascript", false); 1125 content::RESOURCE_TYPE_SCRIPT, net::MEDIUM, "text/javascript", false);
1129 predictor_->OnSubresourceResponse(resource1); 1126 predictor_->OnSubresourceResponse(resource1);
1130 predictor_->OnSubresourceResponse(resource2); 1127 predictor_->OnSubresourceResponse(resource2);
1131 predictor_->OnSubresourceResponse(resource3); 1128 predictor_->OnSubresourceResponse(resource3);
1132 1129
1133 EXPECT_EQ(1U, predictor_->inflight_navigations_.size()); 1130 EXPECT_EQ(1U, predictor_->inflight_navigations_.size());
1134 EXPECT_EQ(3U, predictor_->inflight_navigations_[main_frame1.navigation_id] 1131 EXPECT_EQ(3U, predictor_->inflight_navigations_[main_frame1.navigation_id]
1135 ->subresource_requests.size()); 1132 ->subresource_requests.size());
1136 EXPECT_TRUE(URLRequestSummaryAreEqual( 1133 EXPECT_TRUE(URLRequestSummaryAreEqual(
1137 resource1, predictor_->inflight_navigations_[main_frame1.navigation_id] 1134 resource1, predictor_->inflight_navigations_[main_frame1.navigation_id]
(...skipping 29 matching lines...) Expand all
1167 content::RESOURCE_TYPE_XHR, "")); 1164 content::RESOURCE_TYPE_XHR, ""));
1168 EXPECT_FALSE(ResourcePrefetchPredictor::IsHandledResourceType( 1165 EXPECT_FALSE(ResourcePrefetchPredictor::IsHandledResourceType(
1169 content::RESOURCE_TYPE_XHR, "bogus/mime-type")); 1166 content::RESOURCE_TYPE_XHR, "bogus/mime-type"));
1170 EXPECT_TRUE(ResourcePrefetchPredictor::IsHandledResourceType( 1167 EXPECT_TRUE(ResourcePrefetchPredictor::IsHandledResourceType(
1171 content::RESOURCE_TYPE_XHR, "application/javascript")); 1168 content::RESOURCE_TYPE_XHR, "application/javascript"));
1172 } 1169 }
1173 1170
1174 TEST_F(ResourcePrefetchPredictorTest, ShouldRecordRequestMainFrame) { 1171 TEST_F(ResourcePrefetchPredictorTest, ShouldRecordRequestMainFrame) {
1175 std::unique_ptr<net::URLRequest> http_request = 1172 std::unique_ptr<net::URLRequest> http_request =
1176 CreateURLRequest(GURL("http://www.google.com"), net::MEDIUM, 1173 CreateURLRequest(GURL("http://www.google.com"), net::MEDIUM,
1177 content::RESOURCE_TYPE_IMAGE, 1, 1, true); 1174 content::RESOURCE_TYPE_IMAGE, true);
1178 EXPECT_TRUE(ResourcePrefetchPredictor::ShouldRecordRequest( 1175 EXPECT_TRUE(ResourcePrefetchPredictor::ShouldRecordRequest(
1179 http_request.get(), content::RESOURCE_TYPE_MAIN_FRAME)); 1176 http_request.get(), content::RESOURCE_TYPE_MAIN_FRAME));
1180 1177
1181 std::unique_ptr<net::URLRequest> https_request = 1178 std::unique_ptr<net::URLRequest> https_request =
1182 CreateURLRequest(GURL("https://www.google.com"), net::MEDIUM, 1179 CreateURLRequest(GURL("https://www.google.com"), net::MEDIUM,
1183 content::RESOURCE_TYPE_IMAGE, 1, 1, true); 1180 content::RESOURCE_TYPE_IMAGE, true);
1184 EXPECT_TRUE(ResourcePrefetchPredictor::ShouldRecordRequest( 1181 EXPECT_TRUE(ResourcePrefetchPredictor::ShouldRecordRequest(
1185 https_request.get(), content::RESOURCE_TYPE_MAIN_FRAME)); 1182 https_request.get(), content::RESOURCE_TYPE_MAIN_FRAME));
1186 1183
1187 std::unique_ptr<net::URLRequest> file_request = 1184 std::unique_ptr<net::URLRequest> file_request =
1188 CreateURLRequest(GURL("file://www.google.com"), net::MEDIUM, 1185 CreateURLRequest(GURL("file://www.google.com"), net::MEDIUM,
1189 content::RESOURCE_TYPE_IMAGE, 1, 1, true); 1186 content::RESOURCE_TYPE_IMAGE, true);
1190 EXPECT_FALSE(ResourcePrefetchPredictor::ShouldRecordRequest( 1187 EXPECT_FALSE(ResourcePrefetchPredictor::ShouldRecordRequest(
1191 file_request.get(), content::RESOURCE_TYPE_MAIN_FRAME)); 1188 file_request.get(), content::RESOURCE_TYPE_MAIN_FRAME));
1192 } 1189 }
1193 1190
1194 TEST_F(ResourcePrefetchPredictorTest, ShouldRecordRequestSubResource) { 1191 TEST_F(ResourcePrefetchPredictorTest, ShouldRecordRequestSubResource) {
1195 std::unique_ptr<net::URLRequest> http_request = 1192 std::unique_ptr<net::URLRequest> http_request =
1196 CreateURLRequest(GURL("http://www.google.com/cat.png"), net::MEDIUM, 1193 CreateURLRequest(GURL("http://www.google.com/cat.png"), net::MEDIUM,
1197 content::RESOURCE_TYPE_IMAGE, 1, 1, false); 1194 content::RESOURCE_TYPE_IMAGE, false);
1198 EXPECT_FALSE(ResourcePrefetchPredictor::ShouldRecordRequest( 1195 EXPECT_FALSE(ResourcePrefetchPredictor::ShouldRecordRequest(
1199 http_request.get(), content::RESOURCE_TYPE_IMAGE)); 1196 http_request.get(), content::RESOURCE_TYPE_IMAGE));
1200 1197
1201 std::unique_ptr<net::URLRequest> https_request = 1198 std::unique_ptr<net::URLRequest> https_request =
1202 CreateURLRequest(GURL("https://www.google.com/cat.png"), net::MEDIUM, 1199 CreateURLRequest(GURL("https://www.google.com/cat.png"), net::MEDIUM,
1203 content::RESOURCE_TYPE_IMAGE, 1, 1, false); 1200 content::RESOURCE_TYPE_IMAGE, false);
1204 EXPECT_FALSE(ResourcePrefetchPredictor::ShouldRecordRequest( 1201 EXPECT_FALSE(ResourcePrefetchPredictor::ShouldRecordRequest(
1205 https_request.get(), content::RESOURCE_TYPE_IMAGE)); 1202 https_request.get(), content::RESOURCE_TYPE_IMAGE));
1206 1203
1207 std::unique_ptr<net::URLRequest> file_request = 1204 std::unique_ptr<net::URLRequest> file_request =
1208 CreateURLRequest(GURL("file://www.google.com/cat.png"), net::MEDIUM, 1205 CreateURLRequest(GURL("file://www.google.com/cat.png"), net::MEDIUM,
1209 content::RESOURCE_TYPE_IMAGE, 1, 1, false); 1206 content::RESOURCE_TYPE_IMAGE, false);
1210 EXPECT_FALSE(ResourcePrefetchPredictor::ShouldRecordRequest( 1207 EXPECT_FALSE(ResourcePrefetchPredictor::ShouldRecordRequest(
1211 file_request.get(), content::RESOURCE_TYPE_IMAGE)); 1208 file_request.get(), content::RESOURCE_TYPE_IMAGE));
1212 } 1209 }
1213 1210
1214 TEST_F(ResourcePrefetchPredictorTest, ShouldRecordResponseMainFrame) { 1211 TEST_F(ResourcePrefetchPredictorTest, ShouldRecordResponseMainFrame) {
1215 net::HttpResponseInfo response_info; 1212 net::HttpResponseInfo response_info;
1216 response_info.headers = MakeResponseHeaders(""); 1213 response_info.headers = MakeResponseHeaders("");
1217 url_request_job_factory_.set_response_info(response_info); 1214 url_request_job_factory_.set_response_info(response_info);
1218 1215
1219 std::unique_ptr<net::URLRequest> http_request = 1216 std::unique_ptr<net::URLRequest> http_request =
1220 CreateURLRequest(GURL("http://www.google.com"), net::MEDIUM, 1217 CreateURLRequest(GURL("http://www.google.com"), net::MEDIUM,
1221 content::RESOURCE_TYPE_MAIN_FRAME, 1, 1, true); 1218 content::RESOURCE_TYPE_MAIN_FRAME, true);
1222 EXPECT_TRUE( 1219 EXPECT_TRUE(
1223 ResourcePrefetchPredictor::ShouldRecordResponse(http_request.get())); 1220 ResourcePrefetchPredictor::ShouldRecordResponse(http_request.get()));
1224 1221
1225 std::unique_ptr<net::URLRequest> https_request = 1222 std::unique_ptr<net::URLRequest> https_request =
1226 CreateURLRequest(GURL("https://www.google.com"), net::MEDIUM, 1223 CreateURLRequest(GURL("https://www.google.com"), net::MEDIUM,
1227 content::RESOURCE_TYPE_MAIN_FRAME, 1, 1, true); 1224 content::RESOURCE_TYPE_MAIN_FRAME, true);
1228 EXPECT_TRUE( 1225 EXPECT_TRUE(
1229 ResourcePrefetchPredictor::ShouldRecordResponse(https_request.get())); 1226 ResourcePrefetchPredictor::ShouldRecordResponse(https_request.get()));
1230 1227
1231 std::unique_ptr<net::URLRequest> file_request = 1228 std::unique_ptr<net::URLRequest> file_request =
1232 CreateURLRequest(GURL("file://www.google.com"), net::MEDIUM, 1229 CreateURLRequest(GURL("file://www.google.com"), net::MEDIUM,
1233 content::RESOURCE_TYPE_MAIN_FRAME, 1, 1, true); 1230 content::RESOURCE_TYPE_MAIN_FRAME, true);
1234 EXPECT_FALSE( 1231 EXPECT_FALSE(
1235 ResourcePrefetchPredictor::ShouldRecordResponse(file_request.get())); 1232 ResourcePrefetchPredictor::ShouldRecordResponse(file_request.get()));
1236 } 1233 }
1237 1234
1238 TEST_F(ResourcePrefetchPredictorTest, ShouldRecordResponseSubresource) { 1235 TEST_F(ResourcePrefetchPredictorTest, ShouldRecordResponseSubresource) {
1239 net::HttpResponseInfo response_info; 1236 net::HttpResponseInfo response_info;
1240 response_info.headers = 1237 response_info.headers =
1241 MakeResponseHeaders("HTTP/1.1 200 OK\n\nSome: Headers\n"); 1238 MakeResponseHeaders("HTTP/1.1 200 OK\n\nSome: Headers\n");
1242 response_info.was_cached = true; 1239 response_info.was_cached = true;
1243 url_request_job_factory_.set_response_info(response_info); 1240 url_request_job_factory_.set_response_info(response_info);
1244 1241
1245 // Protocol. 1242 // Protocol.
1246 std::unique_ptr<net::URLRequest> http_image_request = 1243 std::unique_ptr<net::URLRequest> http_image_request =
1247 CreateURLRequest(GURL("http://www.google.com/cat.png"), net::MEDIUM, 1244 CreateURLRequest(GURL("http://www.google.com/cat.png"), net::MEDIUM,
1248 content::RESOURCE_TYPE_IMAGE, 1, 1, true); 1245 content::RESOURCE_TYPE_IMAGE, true);
1249 EXPECT_TRUE(ResourcePrefetchPredictor::ShouldRecordResponse( 1246 EXPECT_TRUE(ResourcePrefetchPredictor::ShouldRecordResponse(
1250 http_image_request.get())); 1247 http_image_request.get()));
1251 1248
1252 std::unique_ptr<net::URLRequest> https_image_request = 1249 std::unique_ptr<net::URLRequest> https_image_request =
1253 CreateURLRequest(GURL("https://www.google.com/cat.png"), net::MEDIUM, 1250 CreateURLRequest(GURL("https://www.google.com/cat.png"), net::MEDIUM,
1254 content::RESOURCE_TYPE_IMAGE, 1, 1, true); 1251 content::RESOURCE_TYPE_IMAGE, true);
1255 EXPECT_TRUE(ResourcePrefetchPredictor::ShouldRecordResponse( 1252 EXPECT_TRUE(ResourcePrefetchPredictor::ShouldRecordResponse(
1256 https_image_request.get())); 1253 https_image_request.get()));
1257 1254
1258 std::unique_ptr<net::URLRequest> file_image_request = 1255 std::unique_ptr<net::URLRequest> file_image_request =
1259 CreateURLRequest(GURL("file://www.google.com/cat.png"), net::MEDIUM, 1256 CreateURLRequest(GURL("file://www.google.com/cat.png"), net::MEDIUM,
1260 content::RESOURCE_TYPE_IMAGE, 1, 1, true); 1257 content::RESOURCE_TYPE_IMAGE, true);
1261 EXPECT_FALSE(ResourcePrefetchPredictor::ShouldRecordResponse( 1258 EXPECT_FALSE(ResourcePrefetchPredictor::ShouldRecordResponse(
1262 file_image_request.get())); 1259 file_image_request.get()));
1263 1260
1264 // ResourceType. 1261 // ResourceType.
1265 std::unique_ptr<net::URLRequest> sub_frame_request = 1262 std::unique_ptr<net::URLRequest> sub_frame_request =
1266 CreateURLRequest(GURL("http://www.google.com/frame.html"), net::MEDIUM, 1263 CreateURLRequest(GURL("http://www.google.com/frame.html"), net::MEDIUM,
1267 content::RESOURCE_TYPE_SUB_FRAME, 1, 1, true); 1264 content::RESOURCE_TYPE_SUB_FRAME, true);
1268 EXPECT_FALSE( 1265 EXPECT_FALSE(
1269 ResourcePrefetchPredictor::ShouldRecordResponse(sub_frame_request.get())); 1266 ResourcePrefetchPredictor::ShouldRecordResponse(sub_frame_request.get()));
1270 1267
1271 std::unique_ptr<net::URLRequest> font_request = CreateURLRequest( 1268 std::unique_ptr<net::URLRequest> font_request =
1272 GURL("http://www.google.com/comic-sans-ms.woff"), net::MEDIUM, 1269 CreateURLRequest(GURL("http://www.google.com/comic-sans-ms.woff"),
1273 content::RESOURCE_TYPE_FONT_RESOURCE, 1, 1, true); 1270 net::MEDIUM, content::RESOURCE_TYPE_FONT_RESOURCE, true);
1274 EXPECT_TRUE( 1271 EXPECT_TRUE(
1275 ResourcePrefetchPredictor::ShouldRecordResponse(font_request.get())); 1272 ResourcePrefetchPredictor::ShouldRecordResponse(font_request.get()));
1276 1273
1277 // From MIME Type. 1274 // From MIME Type.
1278 url_request_job_factory_.set_mime_type("image/png"); 1275 url_request_job_factory_.set_mime_type("image/png");
1279 std::unique_ptr<net::URLRequest> prefetch_image_request = 1276 std::unique_ptr<net::URLRequest> prefetch_image_request =
1280 CreateURLRequest(GURL("http://www.google.com/cat.png"), net::MEDIUM, 1277 CreateURLRequest(GURL("http://www.google.com/cat.png"), net::MEDIUM,
1281 content::RESOURCE_TYPE_PREFETCH, 1, 1, true); 1278 content::RESOURCE_TYPE_PREFETCH, true);
1282 EXPECT_TRUE(ResourcePrefetchPredictor::ShouldRecordResponse( 1279 EXPECT_TRUE(ResourcePrefetchPredictor::ShouldRecordResponse(
1283 prefetch_image_request.get())); 1280 prefetch_image_request.get()));
1284 1281
1285 url_request_job_factory_.set_mime_type("image/my-wonderful-format"); 1282 url_request_job_factory_.set_mime_type("image/my-wonderful-format");
1286 std::unique_ptr<net::URLRequest> prefetch_unknown_image_request = 1283 std::unique_ptr<net::URLRequest> prefetch_unknown_image_request =
1287 CreateURLRequest(GURL("http://www.google.com/cat.png"), net::MEDIUM, 1284 CreateURLRequest(GURL("http://www.google.com/cat.png"), net::MEDIUM,
1288 content::RESOURCE_TYPE_PREFETCH, 1, 1, true); 1285 content::RESOURCE_TYPE_PREFETCH, true);
1289 EXPECT_FALSE(ResourcePrefetchPredictor::ShouldRecordResponse( 1286 EXPECT_FALSE(ResourcePrefetchPredictor::ShouldRecordResponse(
1290 prefetch_unknown_image_request.get())); 1287 prefetch_unknown_image_request.get()));
1291 1288
1292 url_request_job_factory_.set_mime_type("font/woff"); 1289 url_request_job_factory_.set_mime_type("font/woff");
1293 std::unique_ptr<net::URLRequest> prefetch_font_request = CreateURLRequest( 1290 std::unique_ptr<net::URLRequest> prefetch_font_request =
1294 GURL("http://www.google.com/comic-sans-ms.woff"), net::MEDIUM, 1291 CreateURLRequest(GURL("http://www.google.com/comic-sans-ms.woff"),
1295 content::RESOURCE_TYPE_PREFETCH, 1, 1, true); 1292 net::MEDIUM, content::RESOURCE_TYPE_PREFETCH, true);
1296 EXPECT_TRUE(ResourcePrefetchPredictor::ShouldRecordResponse( 1293 EXPECT_TRUE(ResourcePrefetchPredictor::ShouldRecordResponse(
1297 prefetch_font_request.get())); 1294 prefetch_font_request.get()));
1298 1295
1299 url_request_job_factory_.set_mime_type("font/woff-woff"); 1296 url_request_job_factory_.set_mime_type("font/woff-woff");
1300 std::unique_ptr<net::URLRequest> prefetch_unknown_font_request = 1297 std::unique_ptr<net::URLRequest> prefetch_unknown_font_request =
1301 CreateURLRequest(GURL("http://www.google.com/comic-sans-ms.woff"), 1298 CreateURLRequest(GURL("http://www.google.com/comic-sans-ms.woff"),
1302 net::MEDIUM, content::RESOURCE_TYPE_PREFETCH, 1, 1, 1299 net::MEDIUM, content::RESOURCE_TYPE_PREFETCH, true);
1303 true);
1304 EXPECT_FALSE(ResourcePrefetchPredictor::ShouldRecordResponse( 1300 EXPECT_FALSE(ResourcePrefetchPredictor::ShouldRecordResponse(
1305 prefetch_unknown_font_request.get())); 1301 prefetch_unknown_font_request.get()));
1306 1302
1307 // Not main frame. 1303 // Not main frame.
1308 std::unique_ptr<net::URLRequest> font_request_sub_frame = CreateURLRequest( 1304 std::unique_ptr<net::URLRequest> font_request_sub_frame = CreateURLRequest(
1309 GURL("http://www.google.com/comic-sans-ms.woff"), net::MEDIUM, 1305 GURL("http://www.google.com/comic-sans-ms.woff"), net::MEDIUM,
1310 content::RESOURCE_TYPE_FONT_RESOURCE, 1, 1, false); 1306 content::RESOURCE_TYPE_FONT_RESOURCE, false);
1311 EXPECT_FALSE(ResourcePrefetchPredictor::ShouldRecordResponse( 1307 EXPECT_FALSE(ResourcePrefetchPredictor::ShouldRecordResponse(
1312 font_request_sub_frame.get())); 1308 font_request_sub_frame.get()));
1313 } 1309 }
1314 1310
1315 TEST_F(ResourcePrefetchPredictorTest, SummarizeResponse) { 1311 TEST_F(ResourcePrefetchPredictorTest, SummarizeResponse) {
1316 net::HttpResponseInfo response_info; 1312 net::HttpResponseInfo response_info;
1317 response_info.headers = 1313 response_info.headers =
1318 MakeResponseHeaders("HTTP/1.1 200 OK\n\nSome: Headers\n"); 1314 MakeResponseHeaders("HTTP/1.1 200 OK\n\nSome: Headers\n");
1319 response_info.was_cached = true; 1315 response_info.was_cached = true;
1320 url_request_job_factory_.set_response_info(response_info); 1316 url_request_job_factory_.set_response_info(response_info);
1321 1317
1322 GURL url("http://www.google.com/cat.png"); 1318 GURL url("http://www.google.com/cat.png");
1323 std::unique_ptr<net::URLRequest> request = CreateURLRequest( 1319 std::unique_ptr<net::URLRequest> request =
1324 url, net::MEDIUM, content::RESOURCE_TYPE_IMAGE, 1, 1, true); 1320 CreateURLRequest(url, net::MEDIUM, content::RESOURCE_TYPE_IMAGE, true);
1325 URLRequestSummary summary; 1321 URLRequestSummary summary;
1326 EXPECT_TRUE(URLRequestSummary::SummarizeResponse(*request, &summary)); 1322 EXPECT_TRUE(URLRequestSummary::SummarizeResponse(*request, &summary));
1327 EXPECT_EQ(url, summary.resource_url); 1323 EXPECT_EQ(url, summary.resource_url);
1328 EXPECT_EQ(content::RESOURCE_TYPE_IMAGE, summary.resource_type); 1324 EXPECT_EQ(content::RESOURCE_TYPE_IMAGE, summary.resource_type);
1329 EXPECT_TRUE(summary.was_cached); 1325 EXPECT_TRUE(summary.was_cached);
1330 EXPECT_FALSE(summary.has_validators); 1326 EXPECT_FALSE(summary.has_validators);
1331 EXPECT_FALSE(summary.always_revalidate); 1327 EXPECT_FALSE(summary.always_revalidate);
1332 1328
1333 // Navigation_id elements should be unset by default. 1329 // Navigation_id elements should be unset by default.
1334 EXPECT_EQ(-1, summary.navigation_id.render_process_id); 1330 EXPECT_EQ(-1, summary.navigation_id.tab_id);
1335 EXPECT_EQ(-1, summary.navigation_id.render_frame_id);
1336 EXPECT_EQ(GURL(), summary.navigation_id.main_frame_url); 1331 EXPECT_EQ(GURL(), summary.navigation_id.main_frame_url);
1337 } 1332 }
1338 1333
1339 TEST_F(ResourcePrefetchPredictorTest, SummarizeResponseContentType) { 1334 TEST_F(ResourcePrefetchPredictorTest, SummarizeResponseContentType) {
1340 net::HttpResponseInfo response_info; 1335 net::HttpResponseInfo response_info;
1341 response_info.headers = MakeResponseHeaders( 1336 response_info.headers = MakeResponseHeaders(
1342 "HTTP/1.1 200 OK\n\n" 1337 "HTTP/1.1 200 OK\n\n"
1343 "Some: Headers\n" 1338 "Some: Headers\n"
1344 "Content-Type: image/whatever\n"); 1339 "Content-Type: image/whatever\n");
1345 url_request_job_factory_.set_response_info(response_info); 1340 url_request_job_factory_.set_response_info(response_info);
1346 url_request_job_factory_.set_mime_type("image/png"); 1341 url_request_job_factory_.set_mime_type("image/png");
1347 1342
1348 std::unique_ptr<net::URLRequest> request = 1343 std::unique_ptr<net::URLRequest> request =
1349 CreateURLRequest(GURL("http://www.google.com/cat.png"), net::MEDIUM, 1344 CreateURLRequest(GURL("http://www.google.com/cat.png"), net::MEDIUM,
1350 content::RESOURCE_TYPE_PREFETCH, 1, 1, true); 1345 content::RESOURCE_TYPE_PREFETCH, true);
1351 URLRequestSummary summary; 1346 URLRequestSummary summary;
1352 EXPECT_TRUE(URLRequestSummary::SummarizeResponse(*request, &summary)); 1347 EXPECT_TRUE(URLRequestSummary::SummarizeResponse(*request, &summary));
1353 EXPECT_EQ(content::RESOURCE_TYPE_IMAGE, summary.resource_type); 1348 EXPECT_EQ(content::RESOURCE_TYPE_IMAGE, summary.resource_type);
1354 } 1349 }
1355 1350
1356 TEST_F(ResourcePrefetchPredictorTest, SummarizeResponseCachePolicy) { 1351 TEST_F(ResourcePrefetchPredictorTest, SummarizeResponseCachePolicy) {
1357 net::HttpResponseInfo response_info; 1352 net::HttpResponseInfo response_info;
1358 response_info.headers = MakeResponseHeaders( 1353 response_info.headers = MakeResponseHeaders(
1359 "HTTP/1.1 200 OK\n" 1354 "HTTP/1.1 200 OK\n"
1360 "Some: Headers\n"); 1355 "Some: Headers\n");
1361 url_request_job_factory_.set_response_info(response_info); 1356 url_request_job_factory_.set_response_info(response_info);
1362 1357
1363 std::unique_ptr<net::URLRequest> request_no_validators = 1358 std::unique_ptr<net::URLRequest> request_no_validators =
1364 CreateURLRequest(GURL("http://www.google.com/cat.png"), net::MEDIUM, 1359 CreateURLRequest(GURL("http://www.google.com/cat.png"), net::MEDIUM,
1365 content::RESOURCE_TYPE_PREFETCH, 1, 1, true); 1360 content::RESOURCE_TYPE_PREFETCH, true);
1366 1361
1367 URLRequestSummary summary; 1362 URLRequestSummary summary;
1368 EXPECT_TRUE( 1363 EXPECT_TRUE(
1369 URLRequestSummary::SummarizeResponse(*request_no_validators, &summary)); 1364 URLRequestSummary::SummarizeResponse(*request_no_validators, &summary));
1370 EXPECT_FALSE(summary.has_validators); 1365 EXPECT_FALSE(summary.has_validators);
1371 1366
1372 response_info.headers = MakeResponseHeaders( 1367 response_info.headers = MakeResponseHeaders(
1373 "HTTP/1.1 200 OK\n" 1368 "HTTP/1.1 200 OK\n"
1374 "ETag: \"Cr66\"\n" 1369 "ETag: \"Cr66\"\n"
1375 "Cache-Control: no-cache\n"); 1370 "Cache-Control: no-cache\n");
1376 url_request_job_factory_.set_response_info(response_info); 1371 url_request_job_factory_.set_response_info(response_info);
1377 std::unique_ptr<net::URLRequest> request_etag = 1372 std::unique_ptr<net::URLRequest> request_etag =
1378 CreateURLRequest(GURL("http://www.google.com/cat.png"), net::MEDIUM, 1373 CreateURLRequest(GURL("http://www.google.com/cat.png"), net::MEDIUM,
1379 content::RESOURCE_TYPE_PREFETCH, 1, 1, true); 1374 content::RESOURCE_TYPE_PREFETCH, true);
1380 EXPECT_TRUE(URLRequestSummary::SummarizeResponse(*request_etag, &summary)); 1375 EXPECT_TRUE(URLRequestSummary::SummarizeResponse(*request_etag, &summary));
1381 EXPECT_TRUE(summary.has_validators); 1376 EXPECT_TRUE(summary.has_validators);
1382 EXPECT_TRUE(summary.always_revalidate); 1377 EXPECT_TRUE(summary.always_revalidate);
1383 } 1378 }
1384 1379
1385 TEST_F(ResourcePrefetchPredictorTest, PopulatePrefetcherRequest) { 1380 TEST_F(ResourcePrefetchPredictorTest, PopulatePrefetcherRequest) {
1386 // The data that will be used in populating. 1381 // The data that will be used in populating.
1387 PrefetchData google = CreatePrefetchData("http://www.google.com/", 1); 1382 PrefetchData google = CreatePrefetchData("http://www.google.com/", 1);
1388 InitializeResourceData(google.add_resources(), "http://google.com/image1.png", 1383 InitializeResourceData(google.add_resources(), "http://google.com/image1.png",
1389 content::RESOURCE_TYPE_IMAGE, 10, 0, 0, 2.2, 1384 content::RESOURCE_TYPE_IMAGE, 10, 0, 0, 2.2,
(...skipping 161 matching lines...) Expand 10 before | Expand all | Expand 10 after
1551 net::MEDIUM, false, false); 1546 net::MEDIUM, false, false);
1552 predictor_->url_table_cache_->insert( 1547 predictor_->url_table_cache_->insert(
1553 std::make_pair(www_google_url.primary_key(), www_google_url)); 1548 std::make_pair(www_google_url.primary_key(), www_google_url));
1554 1549
1555 urls.clear(); 1550 urls.clear();
1556 EXPECT_TRUE(predictor_->GetPrefetchData(main_frame_url, &urls)); 1551 EXPECT_TRUE(predictor_->GetPrefetchData(main_frame_url, &urls));
1557 EXPECT_THAT(urls, UnorderedElementsAre(GURL(font_url))); 1552 EXPECT_THAT(urls, UnorderedElementsAre(GURL(font_url)));
1558 } 1553 }
1559 1554
1560 } // namespace predictors 1555 } // namespace predictors
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698