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

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

Issue 2804283002: predictors: Refactor UpdateData() function. (Closed)
Patch Set: Oops fix. Created 3 years, 8 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
« no previous file with comments | « chrome/browser/predictors/resource_prefetch_predictor_tables_unittest.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 119 matching lines...) Expand 10 before | Expand all | Expand 10 after
130 public: 130 public:
131 MockResourcePrefetchPredictorTables() { } 131 MockResourcePrefetchPredictorTables() { }
132 132
133 MOCK_METHOD6(GetAllData, 133 MOCK_METHOD6(GetAllData,
134 void(PrefetchDataMap* url_data_map, 134 void(PrefetchDataMap* url_data_map,
135 PrefetchDataMap* host_data_map, 135 PrefetchDataMap* host_data_map,
136 RedirectDataMap* url_redirect_data_map, 136 RedirectDataMap* url_redirect_data_map,
137 RedirectDataMap* host_redirect_data_map, 137 RedirectDataMap* host_redirect_data_map,
138 ManifestDataMap* manifest_data_map, 138 ManifestDataMap* manifest_data_map,
139 OriginDataMap* origin_data_map)); 139 OriginDataMap* origin_data_map));
140 MOCK_METHOD4(UpdateData, 140 MOCK_METHOD2(UpdateResourceData,
141 void(const PrefetchData& url_data, 141 void(const PrefetchData& data, PrefetchKeyType key_type));
142 const PrefetchData& host_data, 142 MOCK_METHOD2(UpdateRedirectData,
143 const RedirectData& url_redirect_data, 143 void(const RedirectData& data, PrefetchKeyType key_type));
144 const RedirectData& host_redirect_data));
145 MOCK_METHOD2(UpdateManifestData, 144 MOCK_METHOD2(UpdateManifestData,
146 void(const std::string& host, 145 void(const std::string& host,
147 const precache::PrecacheManifest& manifest_data)); 146 const precache::PrecacheManifest& manifest_data));
148 MOCK_METHOD1(UpdateOriginData, void(const OriginData& origin_data)); 147 MOCK_METHOD1(UpdateOriginData, void(const OriginData& origin_data));
149 MOCK_METHOD2(DeleteResourceData, 148 MOCK_METHOD2(DeleteResourceData,
150 void(const std::vector<std::string>& urls, 149 void(const std::vector<std::string>& urls,
151 const std::vector<std::string>& hosts)); 150 const std::vector<std::string>& hosts));
152 MOCK_METHOD1(DeleteOriginData, void(const std::vector<std::string>& hosts)); 151 MOCK_METHOD1(DeleteOriginData, void(const std::vector<std::string>& hosts));
153 MOCK_METHOD2(DeleteSingleResourceDataPoint, 152 MOCK_METHOD2(DeleteSingleResourceDataPoint,
154 void(const std::string& key, PrefetchKeyType key_type)); 153 void(const std::string& key, PrefetchKeyType key_type));
(...skipping 108 matching lines...) Expand 10 before | Expand all | Expand 10 after
263 262
264 std::unique_ptr<ResourcePrefetchPredictor> predictor_; 263 std::unique_ptr<ResourcePrefetchPredictor> predictor_;
265 scoped_refptr<StrictMock<MockResourcePrefetchPredictorTables>> mock_tables_; 264 scoped_refptr<StrictMock<MockResourcePrefetchPredictorTables>> mock_tables_;
266 265
267 PrefetchDataMap test_url_data_; 266 PrefetchDataMap test_url_data_;
268 PrefetchDataMap test_host_data_; 267 PrefetchDataMap test_host_data_;
269 RedirectDataMap test_url_redirect_data_; 268 RedirectDataMap test_url_redirect_data_;
270 RedirectDataMap test_host_redirect_data_; 269 RedirectDataMap test_host_redirect_data_;
271 ManifestDataMap test_manifest_data_; 270 ManifestDataMap test_manifest_data_;
272 OriginDataMap test_origin_data_; 271 OriginDataMap test_origin_data_;
273 PrefetchData empty_resource_data_;
274 RedirectData empty_redirect_data_;
275 272
276 MockURLRequestJobFactory url_request_job_factory_; 273 MockURLRequestJobFactory url_request_job_factory_;
277 EmptyURLRequestDelegate url_request_delegate_; 274 EmptyURLRequestDelegate url_request_delegate_;
278 275
279 std::unique_ptr<base::HistogramTester> histogram_tester_; 276 std::unique_ptr<base::HistogramTester> histogram_tester_;
280 }; 277 };
281 278
282 ResourcePrefetchPredictorTest::ResourcePrefetchPredictorTest() 279 ResourcePrefetchPredictorTest::ResourcePrefetchPredictorTest()
283 : thread_bundle_(), 280 : thread_bundle_(),
284 profile_(new TestingProfile()), 281 profile_(new TestingProfile()),
285 mock_tables_(new StrictMock<MockResourcePrefetchPredictorTables>()), 282 mock_tables_(new StrictMock<MockResourcePrefetchPredictorTables>()) {}
286 empty_resource_data_(),
287 empty_redirect_data_() {}
288 283
289 ResourcePrefetchPredictorTest::~ResourcePrefetchPredictorTest() { 284 ResourcePrefetchPredictorTest::~ResourcePrefetchPredictorTest() {
290 profile_.reset(NULL); 285 profile_.reset(NULL);
291 base::RunLoop().RunUntilIdle(); 286 base::RunLoop().RunUntilIdle();
292 } 287 }
293 288
294 void ResourcePrefetchPredictorTest::SetUp() { 289 void ResourcePrefetchPredictorTest::SetUp() {
295 InitializeSampleData(); 290 InitializeSampleData();
296 291
297 ASSERT_TRUE(profile_->CreateHistoryService(true, false)); 292 ASSERT_TRUE(profile_->CreateHistoryService(true, false));
(...skipping 189 matching lines...) Expand 10 before | Expand all | Expand 10 after
487 if (predictor_initial_key != predictor_key) { 482 if (predictor_initial_key != predictor_key) {
488 RedirectData redirect = CreateRedirectData(predictor_initial_key, 1); 483 RedirectData redirect = CreateRedirectData(predictor_initial_key, 1);
489 InitializeRedirectStat(redirect.add_redirect_endpoints(), predictor_key, 10, 484 InitializeRedirectStat(redirect.add_redirect_endpoints(), predictor_key, 10,
490 0, 0); 485 0, 0);
491 predictor_->host_redirect_table_cache_->insert( 486 predictor_->host_redirect_table_cache_->insert(
492 std::make_pair(redirect.primary_key(), redirect)); 487 std::make_pair(redirect.primary_key(), redirect));
493 } 488 }
494 489
495 // Navigation simulation. 490 // Navigation simulation.
496 using testing::_; 491 using testing::_;
497 EXPECT_CALL(*mock_tables_.get(), UpdateData(_, _, _, _)) 492 EXPECT_CALL(*mock_tables_.get(), UpdateResourceData(_, _));
498 .Times(testing::AtLeast(1)); 493 EXPECT_CALL(*mock_tables_.get(), UpdateRedirectData(_, _));
499 EXPECT_CALL(*mock_tables_.get(), UpdateOriginData(_)); 494 EXPECT_CALL(*mock_tables_.get(), UpdateOriginData(_));
500
501 URLRequestSummary initial = 495 URLRequestSummary initial =
502 CreateURLRequestSummary(1, navigation_initial_url); 496 CreateURLRequestSummary(1, navigation_initial_url);
503 predictor_->RecordURLRequest(initial); 497 predictor_->RecordURLRequest(initial);
504 498
505 if (navigation_initial_url != navigation_url) { 499 if (navigation_initial_url != navigation_url) {
506 URLRequestSummary redirect = 500 URLRequestSummary redirect =
507 CreateRedirectRequestSummary(1, navigation_initial_url, navigation_url); 501 CreateRedirectRequestSummary(1, navigation_initial_url, navigation_url);
508 predictor_->RecordURLRedirect(redirect); 502 predictor_->RecordURLRedirect(redirect);
509 } 503 }
510 NavigationID navigation_id = CreateNavigationID(1, navigation_url); 504 NavigationID navigation_id = CreateNavigationID(1, navigation_url);
(...skipping 110 matching lines...) Expand 10 before | Expand all | Expand 10 after
621 "https://google.com/style1.css", 615 "https://google.com/style1.css",
622 content::RESOURCE_TYPE_STYLESHEET, 1, 0, 0, 1.0, 616 content::RESOURCE_TYPE_STYLESHEET, 1, 0, 0, 1.0,
623 net::MEDIUM, false, false); 617 net::MEDIUM, false, false);
624 InitializeResourceData( 618 InitializeResourceData(
625 host_data.add_resources(), "https://google.com/script1.js", 619 host_data.add_resources(), "https://google.com/script1.js",
626 content::RESOURCE_TYPE_SCRIPT, 1, 0, 0, 2.0, net::MEDIUM, false, false); 620 content::RESOURCE_TYPE_SCRIPT, 1, 0, 0, 2.0, net::MEDIUM, false, false);
627 InitializeResourceData( 621 InitializeResourceData(
628 host_data.add_resources(), "https://google.com/script2.js", 622 host_data.add_resources(), "https://google.com/script2.js",
629 content::RESOURCE_TYPE_SCRIPT, 1, 0, 0, 3.0, net::MEDIUM, false, false); 623 content::RESOURCE_TYPE_SCRIPT, 1, 0, 0, 3.0, net::MEDIUM, false, false);
630 EXPECT_CALL(*mock_tables_.get(), 624 EXPECT_CALL(*mock_tables_.get(),
631 UpdateData(empty_resource_data_, host_data, empty_redirect_data_, 625 UpdateResourceData(host_data, PREFETCH_KEY_TYPE_HOST));
632 empty_redirect_data_)); 626
633 OriginData origin_data = CreateOriginData("www.google.com"); 627 OriginData origin_data = CreateOriginData("www.google.com");
634 InitializeOriginStat(origin_data.add_origins(), "https://google.com/", 1, 0, 628 InitializeOriginStat(origin_data.add_origins(), "https://google.com/", 1, 0,
635 0, 1., false, true); 629 0, 1., false, true);
636 EXPECT_CALL(*mock_tables_.get(), UpdateOriginData(origin_data)); 630 EXPECT_CALL(*mock_tables_.get(), UpdateOriginData(origin_data));
637 631
638 RedirectData host_redirect_data = CreateRedirectData("www.google.com"); 632 RedirectData host_redirect_data = CreateRedirectData("www.google.com");
639 InitializeRedirectStat(host_redirect_data.add_redirect_endpoints(), 633 InitializeRedirectStat(host_redirect_data.add_redirect_endpoints(),
640 "www.google.com", 1, 0, 0); 634 "www.google.com", 1, 0, 0);
641 EXPECT_CALL(*mock_tables_.get(), 635 EXPECT_CALL(*mock_tables_.get(),
642 UpdateData(empty_resource_data_, empty_resource_data_, 636 UpdateRedirectData(host_redirect_data, PREFETCH_KEY_TYPE_HOST));
643 empty_redirect_data_, host_redirect_data));
644 637
645 predictor_->RecordMainFrameLoadComplete(main_frame.navigation_id); 638 predictor_->RecordMainFrameLoadComplete(main_frame.navigation_id);
646 profile_->BlockUntilHistoryProcessesPendingRequests(); 639 profile_->BlockUntilHistoryProcessesPendingRequests();
647 } 640 }
648 641
649 // Single navigation that will be recorded. Will check for duplicate 642 // Single navigation that will be recorded. Will check for duplicate
650 // resources and also for number of resources saved. 643 // resources and also for number of resources saved.
651 TEST_F(ResourcePrefetchPredictorTest, NavigationUrlNotInDB) { 644 TEST_F(ResourcePrefetchPredictorTest, NavigationUrlNotInDB) {
652 const int kVisitCount = 4; 645 const int kVisitCount = 4;
653 AddUrlToHistory("http://www.google.com", kVisitCount); 646 AddUrlToHistory("http://www.google.com", kVisitCount);
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after
723 url_data.add_resources(), "http://google.com/script1.js", 716 url_data.add_resources(), "http://google.com/script1.js",
724 content::RESOURCE_TYPE_SCRIPT, 1, 0, 0, 2.0, net::MEDIUM, false, false); 717 content::RESOURCE_TYPE_SCRIPT, 1, 0, 0, 2.0, net::MEDIUM, false, false);
725 InitializeResourceData( 718 InitializeResourceData(
726 url_data.add_resources(), "http://google.com/script2.js", 719 url_data.add_resources(), "http://google.com/script2.js",
727 content::RESOURCE_TYPE_SCRIPT, 1, 0, 0, 3.0, net::MEDIUM, false, false); 720 content::RESOURCE_TYPE_SCRIPT, 1, 0, 0, 3.0, net::MEDIUM, false, false);
728 InitializeResourceData(url_data.add_resources(), 721 InitializeResourceData(url_data.add_resources(),
729 "http://google.com/style2.css", 722 "http://google.com/style2.css",
730 content::RESOURCE_TYPE_STYLESHEET, 1, 0, 0, 7.0, 723 content::RESOURCE_TYPE_STYLESHEET, 1, 0, 0, 7.0,
731 net::MEDIUM, false, false); 724 net::MEDIUM, false, false);
732 EXPECT_CALL(*mock_tables_.get(), 725 EXPECT_CALL(*mock_tables_.get(),
733 UpdateData(url_data, empty_resource_data_, empty_redirect_data_, 726 UpdateResourceData(url_data, PREFETCH_KEY_TYPE_URL));
734 empty_redirect_data_));
735 727
736 OriginData origin_data = CreateOriginData("www.google.com"); 728 OriginData origin_data = CreateOriginData("www.google.com");
737 InitializeOriginStat(origin_data.add_origins(), "http://static.google.com/", 729 InitializeOriginStat(origin_data.add_origins(), "http://static.google.com/",
738 1, 0, 0, 2., true, true); 730 1, 0, 0, 2., true, true);
739 InitializeOriginStat(origin_data.add_origins(), "http://dev.null.google.com/", 731 InitializeOriginStat(origin_data.add_origins(), "http://dev.null.google.com/",
740 1, 0, 0, 4., true, true); 732 1, 0, 0, 4., true, true);
741 InitializeOriginStat(origin_data.add_origins(), "http://google.com/", 1, 0, 0, 733 InitializeOriginStat(origin_data.add_origins(), "http://google.com/", 1, 0, 0,
742 1., false, true); 734 1., false, true);
743 InitializeOriginStat(origin_data.add_origins(), "http://reader.google.com/", 735 InitializeOriginStat(origin_data.add_origins(), "http://reader.google.com/",
744 1, 0, 0, 3., false, true); 736 1, 0, 0, 3., false, true);
745 EXPECT_CALL(*mock_tables_.get(), UpdateOriginData(origin_data)); 737 EXPECT_CALL(*mock_tables_.get(), UpdateOriginData(origin_data));
746 738
747 PrefetchData host_data = CreatePrefetchData("www.google.com"); 739 PrefetchData host_data = CreatePrefetchData("www.google.com");
748 host_data.mutable_resources()->CopyFrom(url_data.resources()); 740 host_data.mutable_resources()->CopyFrom(url_data.resources());
749 EXPECT_CALL(*mock_tables_.get(), 741 EXPECT_CALL(*mock_tables_.get(),
750 UpdateData(empty_resource_data_, host_data, empty_redirect_data_, 742 UpdateResourceData(host_data, PREFETCH_KEY_TYPE_HOST));
751 empty_redirect_data_));
752 743
753 RedirectData url_redirect_data = CreateRedirectData("http://www.google.com/"); 744 RedirectData url_redirect_data = CreateRedirectData("http://www.google.com/");
754 InitializeRedirectStat(url_redirect_data.add_redirect_endpoints(), 745 InitializeRedirectStat(url_redirect_data.add_redirect_endpoints(),
755 "http://www.google.com/", 1, 0, 0); 746 "http://www.google.com/", 1, 0, 0);
756 EXPECT_CALL(*mock_tables_.get(), 747 EXPECT_CALL(*mock_tables_.get(),
757 UpdateData(empty_resource_data_, empty_resource_data_, 748 UpdateRedirectData(url_redirect_data, PREFETCH_KEY_TYPE_URL));
758 url_redirect_data, empty_redirect_data_));
759 749
760 RedirectData host_redirect_data = CreateRedirectData("www.google.com"); 750 RedirectData host_redirect_data = CreateRedirectData("www.google.com");
761 InitializeRedirectStat(host_redirect_data.add_redirect_endpoints(), 751 InitializeRedirectStat(host_redirect_data.add_redirect_endpoints(),
762 "www.google.com", 1, 0, 0); 752 "www.google.com", 1, 0, 0);
763 EXPECT_CALL(*mock_tables_.get(), 753 EXPECT_CALL(*mock_tables_.get(),
764 UpdateData(empty_resource_data_, empty_resource_data_, 754 UpdateRedirectData(host_redirect_data, PREFETCH_KEY_TYPE_HOST));
765 empty_redirect_data_, host_redirect_data));
766 755
767 predictor_->RecordMainFrameLoadComplete(main_frame.navigation_id); 756 predictor_->RecordMainFrameLoadComplete(main_frame.navigation_id);
768 profile_->BlockUntilHistoryProcessesPendingRequests(); 757 profile_->BlockUntilHistoryProcessesPendingRequests();
769 } 758 }
770 759
771 // Tests that navigation is recorded correctly for URL already present in 760 // Tests that navigation is recorded correctly for URL already present in
772 // the database cache. 761 // the database cache.
773 TEST_F(ResourcePrefetchPredictorTest, NavigationUrlInDB) { 762 TEST_F(ResourcePrefetchPredictorTest, NavigationUrlInDB) {
774 const int kVisitCount = 4; 763 const int kVisitCount = 4;
775 AddUrlToHistory("http://www.google.com", kVisitCount); 764 AddUrlToHistory("http://www.google.com", kVisitCount);
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after
846 InitializeResourceData( 835 InitializeResourceData(
847 url_data.add_resources(), "http://google.com/script1.js", 836 url_data.add_resources(), "http://google.com/script1.js",
848 content::RESOURCE_TYPE_SCRIPT, 1, 0, 0, 2.0, net::MEDIUM, false, false); 837 content::RESOURCE_TYPE_SCRIPT, 1, 0, 0, 2.0, net::MEDIUM, false, false);
849 InitializeResourceData( 838 InitializeResourceData(
850 url_data.add_resources(), "http://google.com/script4.js", 839 url_data.add_resources(), "http://google.com/script4.js",
851 content::RESOURCE_TYPE_SCRIPT, 11, 1, 1, 2.1, net::MEDIUM, false, false); 840 content::RESOURCE_TYPE_SCRIPT, 11, 1, 1, 2.1, net::MEDIUM, false, false);
852 InitializeResourceData( 841 InitializeResourceData(
853 url_data.add_resources(), "http://google.com/script2.js", 842 url_data.add_resources(), "http://google.com/script2.js",
854 content::RESOURCE_TYPE_SCRIPT, 1, 0, 0, 3.0, net::MEDIUM, false, false); 843 content::RESOURCE_TYPE_SCRIPT, 1, 0, 0, 3.0, net::MEDIUM, false, false);
855 EXPECT_CALL(*mock_tables_.get(), 844 EXPECT_CALL(*mock_tables_.get(),
856 UpdateData(url_data, empty_resource_data_, empty_redirect_data_, 845 UpdateResourceData(url_data, PREFETCH_KEY_TYPE_URL));
857 empty_redirect_data_));
858 EXPECT_CALL(*mock_tables_.get(), 846 EXPECT_CALL(*mock_tables_.get(),
859 DeleteSingleResourceDataPoint("www.facebook.com", 847 DeleteSingleResourceDataPoint("www.facebook.com",
860 PREFETCH_KEY_TYPE_HOST)); 848 PREFETCH_KEY_TYPE_HOST));
861 849
862 PrefetchData host_data = CreatePrefetchData("www.google.com"); 850 PrefetchData host_data = CreatePrefetchData("www.google.com");
863 InitializeResourceData(host_data.add_resources(), 851 InitializeResourceData(host_data.add_resources(),
864 "http://google.com/style1.css", 852 "http://google.com/style1.css",
865 content::RESOURCE_TYPE_STYLESHEET, 1, 0, 0, 1.0, 853 content::RESOURCE_TYPE_STYLESHEET, 1, 0, 0, 1.0,
866 net::MEDIUM, false, false); 854 net::MEDIUM, false, false);
867 InitializeResourceData( 855 InitializeResourceData(
868 host_data.add_resources(), "http://google.com/script1.js", 856 host_data.add_resources(), "http://google.com/script1.js",
869 content::RESOURCE_TYPE_SCRIPT, 1, 0, 0, 2.0, net::MEDIUM, false, false); 857 content::RESOURCE_TYPE_SCRIPT, 1, 0, 0, 2.0, net::MEDIUM, false, false);
870 InitializeResourceData( 858 InitializeResourceData(
871 host_data.add_resources(), "http://google.com/script2.js", 859 host_data.add_resources(), "http://google.com/script2.js",
872 content::RESOURCE_TYPE_SCRIPT, 1, 0, 0, 3.0, net::MEDIUM, false, false); 860 content::RESOURCE_TYPE_SCRIPT, 1, 0, 0, 3.0, net::MEDIUM, false, false);
873 InitializeResourceData(host_data.add_resources(), 861 InitializeResourceData(host_data.add_resources(),
874 "http://google.com/style2.css", 862 "http://google.com/style2.css",
875 content::RESOURCE_TYPE_STYLESHEET, 1, 0, 0, 7.0, 863 content::RESOURCE_TYPE_STYLESHEET, 1, 0, 0, 7.0,
876 net::MEDIUM, false, false); 864 net::MEDIUM, false, false);
877 EXPECT_CALL(*mock_tables_.get(), 865 EXPECT_CALL(*mock_tables_.get(),
878 UpdateData(empty_resource_data_, host_data, empty_redirect_data_, 866 UpdateResourceData(host_data, PREFETCH_KEY_TYPE_HOST));
879 empty_redirect_data_));
880 867
881 RedirectData url_redirect_data = CreateRedirectData("http://www.google.com/"); 868 RedirectData url_redirect_data = CreateRedirectData("http://www.google.com/");
882 InitializeRedirectStat(url_redirect_data.add_redirect_endpoints(), 869 InitializeRedirectStat(url_redirect_data.add_redirect_endpoints(),
883 "http://www.google.com/", 1, 0, 0); 870 "http://www.google.com/", 1, 0, 0);
884 EXPECT_CALL(*mock_tables_.get(), 871 EXPECT_CALL(*mock_tables_.get(),
885 UpdateData(empty_resource_data_, empty_resource_data_, 872 UpdateRedirectData(url_redirect_data, PREFETCH_KEY_TYPE_URL));
886 url_redirect_data, empty_redirect_data_));
887 873
888 RedirectData host_redirect_data = CreateRedirectData("www.google.com"); 874 RedirectData host_redirect_data = CreateRedirectData("www.google.com");
889 InitializeRedirectStat(host_redirect_data.add_redirect_endpoints(), 875 InitializeRedirectStat(host_redirect_data.add_redirect_endpoints(),
890 "www.google.com", 1, 0, 0); 876 "www.google.com", 1, 0, 0);
891 EXPECT_CALL(*mock_tables_.get(), 877 EXPECT_CALL(*mock_tables_.get(),
892 UpdateData(empty_resource_data_, empty_resource_data_, 878 UpdateRedirectData(host_redirect_data, PREFETCH_KEY_TYPE_HOST));
893 empty_redirect_data_, host_redirect_data));
894 879
895 OriginData origin_data = CreateOriginData("www.google.com"); 880 OriginData origin_data = CreateOriginData("www.google.com");
896 InitializeOriginStat(origin_data.add_origins(), "http://static.google.com/", 881 InitializeOriginStat(origin_data.add_origins(), "http://static.google.com/",
897 1, 0, 0, 2., true, true); 882 1, 0, 0, 2., true, true);
898 InitializeOriginStat(origin_data.add_origins(), "http://google.com/", 1, 0, 0, 883 InitializeOriginStat(origin_data.add_origins(), "http://google.com/", 1, 0, 0,
899 1., false, true); 884 1., false, true);
900 EXPECT_CALL(*mock_tables_.get(), UpdateOriginData(origin_data)); 885 EXPECT_CALL(*mock_tables_.get(), UpdateOriginData(origin_data));
901 886
902 predictor_->RecordMainFrameLoadComplete(main_frame.navigation_id); 887 predictor_->RecordMainFrameLoadComplete(main_frame.navigation_id);
903 profile_->BlockUntilHistoryProcessesPendingRequests(); 888 profile_->BlockUntilHistoryProcessesPendingRequests();
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after
957 DeleteOriginData(std::vector<std::string>({"google.com"}))); 942 DeleteOriginData(std::vector<std::string>({"google.com"})));
958 943
959 PrefetchData url_data = CreatePrefetchData("http://www.nike.com/"); 944 PrefetchData url_data = CreatePrefetchData("http://www.nike.com/");
960 InitializeResourceData(url_data.add_resources(), "http://nike.com/style1.css", 945 InitializeResourceData(url_data.add_resources(), "http://nike.com/style1.css",
961 content::RESOURCE_TYPE_STYLESHEET, 1, 0, 0, 1.0, 946 content::RESOURCE_TYPE_STYLESHEET, 1, 0, 0, 1.0,
962 net::MEDIUM, false, false); 947 net::MEDIUM, false, false);
963 InitializeResourceData(url_data.add_resources(), "http://nike.com/image2.png", 948 InitializeResourceData(url_data.add_resources(), "http://nike.com/image2.png",
964 content::RESOURCE_TYPE_IMAGE, 1, 0, 0, 2.0, 949 content::RESOURCE_TYPE_IMAGE, 1, 0, 0, 2.0,
965 net::MEDIUM, false, false); 950 net::MEDIUM, false, false);
966 EXPECT_CALL(*mock_tables_.get(), 951 EXPECT_CALL(*mock_tables_.get(),
967 UpdateData(url_data, empty_resource_data_, empty_redirect_data_, 952 UpdateResourceData(url_data, PREFETCH_KEY_TYPE_URL));
968 empty_redirect_data_));
969 953
970 PrefetchData host_data = CreatePrefetchData("www.nike.com"); 954 PrefetchData host_data = CreatePrefetchData("www.nike.com");
971 host_data.mutable_resources()->CopyFrom(url_data.resources()); 955 host_data.mutable_resources()->CopyFrom(url_data.resources());
972 EXPECT_CALL(*mock_tables_.get(), 956 EXPECT_CALL(*mock_tables_.get(),
973 UpdateData(empty_resource_data_, host_data, empty_redirect_data_, 957 UpdateResourceData(host_data, PREFETCH_KEY_TYPE_HOST));
974 empty_redirect_data_));
975 958
976 RedirectData url_redirect_data = CreateRedirectData("http://www.nike.com/"); 959 RedirectData url_redirect_data = CreateRedirectData("http://www.nike.com/");
977 InitializeRedirectStat(url_redirect_data.add_redirect_endpoints(), 960 InitializeRedirectStat(url_redirect_data.add_redirect_endpoints(),
978 "http://www.nike.com/", 1, 0, 0); 961 "http://www.nike.com/", 1, 0, 0);
979 EXPECT_CALL(*mock_tables_.get(), 962 EXPECT_CALL(*mock_tables_.get(),
980 UpdateData(empty_resource_data_, empty_resource_data_, 963 UpdateRedirectData(url_redirect_data, PREFETCH_KEY_TYPE_URL));
981 url_redirect_data, empty_redirect_data_));
982 964
983 RedirectData host_redirect_data = CreateRedirectData("www.nike.com"); 965 RedirectData host_redirect_data = CreateRedirectData("www.nike.com");
984 InitializeRedirectStat(host_redirect_data.add_redirect_endpoints(), 966 InitializeRedirectStat(host_redirect_data.add_redirect_endpoints(),
985 "www.nike.com", 1, 0, 0); 967 "www.nike.com", 1, 0, 0);
986 EXPECT_CALL(*mock_tables_.get(), 968 EXPECT_CALL(*mock_tables_.get(),
987 UpdateData(empty_resource_data_, empty_resource_data_, 969 UpdateRedirectData(host_redirect_data, PREFETCH_KEY_TYPE_HOST));
988 empty_redirect_data_, host_redirect_data));
989 970
990 EXPECT_CALL(*mock_tables_.get(), UpdateOriginData(testing::_)); 971 EXPECT_CALL(*mock_tables_.get(), UpdateOriginData(testing::_));
991 972
992 predictor_->RecordMainFrameLoadComplete(main_frame.navigation_id); 973 predictor_->RecordMainFrameLoadComplete(main_frame.navigation_id);
993 profile_->BlockUntilHistoryProcessesPendingRequests(); 974 profile_->BlockUntilHistoryProcessesPendingRequests();
994 } 975 }
995 976
996 TEST_F(ResourcePrefetchPredictorTest, RedirectUrlNotInDB) { 977 TEST_F(ResourcePrefetchPredictorTest, RedirectUrlNotInDB) {
997 const int kVisitCount = 4; 978 const int kVisitCount = 4;
998 AddUrlToHistory("https://facebook.com/google", kVisitCount); 979 AddUrlToHistory("https://facebook.com/google", kVisitCount);
(...skipping 24 matching lines...) Expand all
1023 EXPECT_CALL(*mock_tables_.get(), 1004 EXPECT_CALL(*mock_tables_.get(),
1024 DeleteSingleResourceDataPoint("https://facebook.com/google", 1005 DeleteSingleResourceDataPoint("https://facebook.com/google",
1025 PREFETCH_KEY_TYPE_URL)); 1006 PREFETCH_KEY_TYPE_URL));
1026 EXPECT_CALL(*mock_tables_.get(), DeleteSingleResourceDataPoint( 1007 EXPECT_CALL(*mock_tables_.get(), DeleteSingleResourceDataPoint(
1027 "facebook.com", PREFETCH_KEY_TYPE_HOST)); 1008 "facebook.com", PREFETCH_KEY_TYPE_HOST));
1028 1009
1029 RedirectData url_redirect_data = CreateRedirectData("http://fb.com/google"); 1010 RedirectData url_redirect_data = CreateRedirectData("http://fb.com/google");
1030 InitializeRedirectStat(url_redirect_data.add_redirect_endpoints(), 1011 InitializeRedirectStat(url_redirect_data.add_redirect_endpoints(),
1031 "https://facebook.com/google", 1, 0, 0); 1012 "https://facebook.com/google", 1, 0, 0);
1032 EXPECT_CALL(*mock_tables_.get(), 1013 EXPECT_CALL(*mock_tables_.get(),
1033 UpdateData(empty_resource_data_, empty_resource_data_, 1014 UpdateRedirectData(url_redirect_data, PREFETCH_KEY_TYPE_URL));
1034 url_redirect_data, empty_redirect_data_));
1035 1015
1036 RedirectData host_redirect_data = CreateRedirectData("fb.com"); 1016 RedirectData host_redirect_data = CreateRedirectData("fb.com");
1037 InitializeRedirectStat(host_redirect_data.add_redirect_endpoints(), 1017 InitializeRedirectStat(host_redirect_data.add_redirect_endpoints(),
1038 "facebook.com", 1, 0, 0); 1018 "facebook.com", 1, 0, 0);
1039 EXPECT_CALL(*mock_tables_.get(), 1019 EXPECT_CALL(*mock_tables_.get(),
1040 UpdateData(empty_resource_data_, empty_resource_data_, 1020 UpdateRedirectData(host_redirect_data, PREFETCH_KEY_TYPE_HOST));
1041 empty_redirect_data_, host_redirect_data));
1042 1021
1043 predictor_->RecordMainFrameLoadComplete(fb_end); 1022 predictor_->RecordMainFrameLoadComplete(fb_end);
1044 profile_->BlockUntilHistoryProcessesPendingRequests(); 1023 profile_->BlockUntilHistoryProcessesPendingRequests();
1045 } 1024 }
1046 1025
1047 // Tests that redirect is recorded correctly for URL already present in 1026 // Tests that redirect is recorded correctly for URL already present in
1048 // the database cache. 1027 // the database cache.
1049 TEST_F(ResourcePrefetchPredictorTest, RedirectUrlInDB) { 1028 TEST_F(ResourcePrefetchPredictorTest, RedirectUrlInDB) {
1050 const int kVisitCount = 7; 1029 const int kVisitCount = 7;
1051 AddUrlToHistory("https://facebook.com/google", kVisitCount); 1030 AddUrlToHistory("https://facebook.com/google", kVisitCount);
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
1096 PREFETCH_KEY_TYPE_URL)); 1075 PREFETCH_KEY_TYPE_URL));
1097 EXPECT_CALL(*mock_tables_.get(), DeleteSingleResourceDataPoint( 1076 EXPECT_CALL(*mock_tables_.get(), DeleteSingleResourceDataPoint(
1098 "facebook.com", PREFETCH_KEY_TYPE_HOST)); 1077 "facebook.com", PREFETCH_KEY_TYPE_HOST));
1099 1078
1100 RedirectData url_redirect_data = CreateRedirectData("http://fb.com/google"); 1079 RedirectData url_redirect_data = CreateRedirectData("http://fb.com/google");
1101 InitializeRedirectStat(url_redirect_data.add_redirect_endpoints(), 1080 InitializeRedirectStat(url_redirect_data.add_redirect_endpoints(),
1102 "https://facebook.com/google", 6, 1, 0); 1081 "https://facebook.com/google", 6, 1, 0);
1103 // Existing redirect to https://facebook.com/login will be deleted because of 1082 // Existing redirect to https://facebook.com/login will be deleted because of
1104 // too many consecutive misses. 1083 // too many consecutive misses.
1105 EXPECT_CALL(*mock_tables_.get(), 1084 EXPECT_CALL(*mock_tables_.get(),
1106 UpdateData(empty_resource_data_, empty_resource_data_, 1085 UpdateRedirectData(url_redirect_data, PREFETCH_KEY_TYPE_URL));
1107 url_redirect_data, empty_redirect_data_));
1108 1086
1109 RedirectData host_redirect_data = CreateRedirectData("fb.com"); 1087 RedirectData host_redirect_data = CreateRedirectData("fb.com");
1110 InitializeRedirectStat(host_redirect_data.add_redirect_endpoints(), 1088 InitializeRedirectStat(host_redirect_data.add_redirect_endpoints(),
1111 "facebook.com", 1, 0, 0); 1089 "facebook.com", 1, 0, 0);
1112 EXPECT_CALL(*mock_tables_.get(), 1090 EXPECT_CALL(*mock_tables_.get(),
1113 UpdateData(empty_resource_data_, empty_resource_data_, 1091 UpdateRedirectData(host_redirect_data, PREFETCH_KEY_TYPE_HOST));
1114 empty_redirect_data_, host_redirect_data));
1115 1092
1116 predictor_->RecordMainFrameLoadComplete(fb_end); 1093 predictor_->RecordMainFrameLoadComplete(fb_end);
1117 profile_->BlockUntilHistoryProcessesPendingRequests(); 1094 profile_->BlockUntilHistoryProcessesPendingRequests();
1118 } 1095 }
1119 1096
1120 TEST_F(ResourcePrefetchPredictorTest, ManifestHostNotInDB) { 1097 TEST_F(ResourcePrefetchPredictorTest, ManifestHostNotInDB) {
1121 precache::PrecacheManifest manifest = CreateManifestData(1); 1098 precache::PrecacheManifest manifest = CreateManifestData(1);
1122 InitializePrecacheResource(manifest.add_resource(), 1099 InitializePrecacheResource(manifest.add_resource(),
1123 "http://cdn.google.com/script.js", 0.9); 1100 "http://cdn.google.com/script.js", 0.9);
1124 InitializePrecacheResource(manifest.add_resource(), 1101 InitializePrecacheResource(manifest.add_resource(),
(...skipping 774 matching lines...) Expand 10 before | Expand all | Expand 10 after
1899 predictor_->url_table_cache_->insert( 1876 predictor_->url_table_cache_->insert(
1900 std::make_pair(www_google_url.primary_key(), www_google_url)); 1877 std::make_pair(www_google_url.primary_key(), www_google_url));
1901 1878
1902 urls.clear(); 1879 urls.clear();
1903 EXPECT_TRUE(predictor_->GetPrefetchData(main_frame_url, &prediction)); 1880 EXPECT_TRUE(predictor_->GetPrefetchData(main_frame_url, &prediction));
1904 EXPECT_THAT(urls, UnorderedElementsAre(GURL(font_url))); 1881 EXPECT_THAT(urls, UnorderedElementsAre(GURL(font_url)));
1905 } 1882 }
1906 1883
1907 TEST_F(ResourcePrefetchPredictorTest, TestPrecisionRecallHistograms) { 1884 TEST_F(ResourcePrefetchPredictorTest, TestPrecisionRecallHistograms) {
1908 using testing::_; 1885 using testing::_;
1909 EXPECT_CALL(*mock_tables_.get(), UpdateData(_, _, _, _)).Times(2); 1886 EXPECT_CALL(*mock_tables_.get(), UpdateResourceData(_, _));
1887 EXPECT_CALL(*mock_tables_.get(), UpdateRedirectData(_, _));
1910 EXPECT_CALL(*mock_tables_.get(), UpdateOriginData(_)); 1888 EXPECT_CALL(*mock_tables_.get(), UpdateOriginData(_));
1911 1889
1912 // Fill the database with 3 resources: 1 useful, 2 useless. 1890 // Fill the database with 3 resources: 1 useful, 2 useless.
1913 const std::string main_frame_url = "http://google.com/?query=cats"; 1891 const std::string main_frame_url = "http://google.com/?query=cats";
1914 PrefetchData google = CreatePrefetchData("google.com", 1); 1892 PrefetchData google = CreatePrefetchData("google.com", 1);
1915 1893
1916 const std::string script_url = "https://cdn.google.com/script.js"; 1894 const std::string script_url = "https://cdn.google.com/script.js";
1917 InitializeResourceData(google.add_resources(), script_url, 1895 InitializeResourceData(google.add_resources(), script_url,
1918 content::RESOURCE_TYPE_SCRIPT, 10, 0, 1, 2.1, 1896 content::RESOURCE_TYPE_SCRIPT, 10, 0, 1, 2.1,
1919 net::MEDIUM, false, false); 1897 net::MEDIUM, false, false);
(...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after
2007 predictor_->host_table_cache_->insert( 1985 predictor_->host_table_cache_->insert(
2008 std::make_pair(google.primary_key(), google)); 1986 std::make_pair(google.primary_key(), google));
2009 1987
2010 predictor_->StartPrefetching(GURL(main_frame_url), PrefetchOrigin::EXTERNAL); 1988 predictor_->StartPrefetching(GURL(main_frame_url), PrefetchOrigin::EXTERNAL);
2011 predictor_->StopPrefetching(GURL(main_frame_url)); 1989 predictor_->StopPrefetching(GURL(main_frame_url));
2012 histogram_tester_->ExpectTotalCount( 1990 histogram_tester_->ExpectTotalCount(
2013 internal::kResourcePrefetchPredictorPrefetchingDurationHistogram, 1); 1991 internal::kResourcePrefetchPredictorPrefetchingDurationHistogram, 1);
2014 } 1992 }
2015 1993
2016 } // namespace predictors 1994 } // namespace predictors
OLDNEW
« no previous file with comments | « chrome/browser/predictors/resource_prefetch_predictor_tables_unittest.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698