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

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

Issue 2831233004: predictors: Add resource type to manifest. (Closed)
Patch Set: Use the same resource type ordering. 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
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 414 matching lines...) Expand 10 before | Expand all | Expand 10 after
425 "www.microsoft.com", 10, 0, 0); 425 "www.microsoft.com", 10, 0, 0);
426 426
427 test_host_redirect_data_.clear(); 427 test_host_redirect_data_.clear();
428 test_host_redirect_data_.insert(std::make_pair(bbc.primary_key(), bbc)); 428 test_host_redirect_data_.insert(std::make_pair(bbc.primary_key(), bbc));
429 test_host_redirect_data_.insert( 429 test_host_redirect_data_.insert(
430 std::make_pair(microsoft.primary_key(), microsoft)); 430 std::make_pair(microsoft.primary_key(), microsoft));
431 } 431 }
432 432
433 { // Manifest data. 433 { // Manifest data.
434 precache::PrecacheManifest google = CreateManifestData(11); 434 precache::PrecacheManifest google = CreateManifestData(11);
435 InitializePrecacheResource(google.add_resource(), 435 InitializePrecacheResource(
436 "http://google.com/script.js", 0.5); 436 google.add_resource(), "http://google.com/script.js", 0.5,
437 InitializePrecacheResource(google.add_resource(), 437 precache::PrecacheResource::RESOURCE_TYPE_SCRIPT);
438 "http://static.google.com/style.css", 0.333); 438 InitializePrecacheResource(
439 google.add_resource(), "http://static.google.com/style.css", 0.333,
440 precache::PrecacheResource::RESOURCE_TYPE_STYLESHEET);
439 441
440 precache::PrecacheManifest facebook = CreateManifestData(12); 442 precache::PrecacheManifest facebook = CreateManifestData(12);
441 InitializePrecacheResource(facebook.add_resource(), 443 InitializePrecacheResource(
442 "http://fb.com/static.css", 0.99); 444 facebook.add_resource(), "http://fb.com/static.css", 0.99,
445 precache::PrecacheResource::RESOURCE_TYPE_STYLESHEET);
443 446
444 test_manifest_data_.insert(std::make_pair("google.com", google)); 447 test_manifest_data_.insert(std::make_pair("google.com", google));
445 test_manifest_data_.insert(std::make_pair("facebook.com", facebook)); 448 test_manifest_data_.insert(std::make_pair("facebook.com", facebook));
446 } 449 }
447 450
448 { // Origin data. 451 { // Origin data.
449 OriginData google = CreateOriginData("google.com", 12); 452 OriginData google = CreateOriginData("google.com", 12);
450 InitializeOriginStat(google.add_origins(), "https://static.google.com", 12, 453 InitializeOriginStat(google.add_origins(), "https://static.google.com", 12,
451 0, 0, 3., false, true); 454 0, 0, 3., false, true);
452 InitializeOriginStat(google.add_origins(), "https://cats.google.com", 12, 0, 455 InitializeOriginStat(google.add_origins(), "https://cats.google.com", 12, 0,
(...skipping 251 matching lines...) Expand 10 before | Expand all | Expand 10 after
704 OnNavigationLearned( 707 OnNavigationLearned(
705 kVisitCount, CreatePageRequestSummary("http://www.google.com", 708 kVisitCount, CreatePageRequestSummary("http://www.google.com",
706 "http://www.google.com", 709 "http://www.google.com",
707 resources))); 710 resources)));
708 711
709 PrefetchData url_data = CreatePrefetchData("http://www.google.com/"); 712 PrefetchData url_data = CreatePrefetchData("http://www.google.com/");
710 InitializeResourceData(url_data.add_resources(), 713 InitializeResourceData(url_data.add_resources(),
711 "http://google.com/style1.css", 714 "http://google.com/style1.css",
712 content::RESOURCE_TYPE_STYLESHEET, 1, 0, 0, 1.0, 715 content::RESOURCE_TYPE_STYLESHEET, 1, 0, 0, 1.0,
713 net::MEDIUM, false, false); 716 net::MEDIUM, false, false);
717 InitializeResourceData(url_data.add_resources(),
718 "http://google.com/style2.css",
719 content::RESOURCE_TYPE_STYLESHEET, 1, 0, 0, 7.0,
720 net::MEDIUM, false, false);
714 InitializeResourceData( 721 InitializeResourceData(
715 url_data.add_resources(), "http://google.com/script1.js", 722 url_data.add_resources(), "http://google.com/script1.js",
716 content::RESOURCE_TYPE_SCRIPT, 1, 0, 0, 2.0, net::MEDIUM, false, false); 723 content::RESOURCE_TYPE_SCRIPT, 1, 0, 0, 2.0, net::MEDIUM, false, false);
717 InitializeResourceData( 724 InitializeResourceData(
718 url_data.add_resources(), "http://google.com/script2.js", 725 url_data.add_resources(), "http://google.com/script2.js",
719 content::RESOURCE_TYPE_SCRIPT, 1, 0, 0, 3.0, net::MEDIUM, false, false); 726 content::RESOURCE_TYPE_SCRIPT, 1, 0, 0, 3.0, net::MEDIUM, false, false);
720 InitializeResourceData(url_data.add_resources(),
721 "http://google.com/style2.css",
722 content::RESOURCE_TYPE_STYLESHEET, 1, 0, 0, 7.0,
723 net::MEDIUM, false, false);
724 EXPECT_CALL(*mock_tables_.get(), 727 EXPECT_CALL(*mock_tables_.get(),
725 UpdateResourceData(url_data, PREFETCH_KEY_TYPE_URL)); 728 UpdateResourceData(url_data, PREFETCH_KEY_TYPE_URL));
726 729
727 OriginData origin_data = CreateOriginData("www.google.com"); 730 OriginData origin_data = CreateOriginData("www.google.com");
728 InitializeOriginStat(origin_data.add_origins(), "http://static.google.com/", 731 InitializeOriginStat(origin_data.add_origins(), "http://static.google.com/",
729 1, 0, 0, 2., true, true); 732 1, 0, 0, 2., true, true);
730 InitializeOriginStat(origin_data.add_origins(), "http://dev.null.google.com/", 733 InitializeOriginStat(origin_data.add_origins(), "http://dev.null.google.com/",
731 1, 0, 0, 4., true, true); 734 1, 0, 0, 4., true, true);
732 InitializeOriginStat(origin_data.add_origins(), "http://google.com/", 1, 0, 0, 735 InitializeOriginStat(origin_data.add_origins(), "http://google.com/", 1, 0, 0,
733 1., false, true); 736 1., false, true);
(...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after
824 OnNavigationLearned( 827 OnNavigationLearned(
825 kVisitCount, CreatePageRequestSummary("http://www.google.com", 828 kVisitCount, CreatePageRequestSummary("http://www.google.com",
826 "http://www.google.com", 829 "http://www.google.com",
827 resources))); 830 resources)));
828 831
829 PrefetchData url_data = CreatePrefetchData("http://www.google.com/"); 832 PrefetchData url_data = CreatePrefetchData("http://www.google.com/");
830 InitializeResourceData(url_data.add_resources(), 833 InitializeResourceData(url_data.add_resources(),
831 "http://google.com/style1.css", 834 "http://google.com/style1.css",
832 content::RESOURCE_TYPE_STYLESHEET, 4, 2, 0, 1.0, 835 content::RESOURCE_TYPE_STYLESHEET, 4, 2, 0, 1.0,
833 net::MEDIUM, false, false); 836 net::MEDIUM, false, false);
837 InitializeResourceData(url_data.add_resources(),
838 "http://google.com/style2.css",
839 content::RESOURCE_TYPE_STYLESHEET, 1, 0, 0, 7.0,
840 net::MEDIUM, false, false);
834 InitializeResourceData( 841 InitializeResourceData(
835 url_data.add_resources(), "http://google.com/script1.js", 842 url_data.add_resources(), "http://google.com/script1.js",
836 content::RESOURCE_TYPE_SCRIPT, 1, 0, 0, 2.0, net::MEDIUM, false, false); 843 content::RESOURCE_TYPE_SCRIPT, 1, 0, 0, 2.0, net::MEDIUM, false, false);
837 InitializeResourceData( 844 InitializeResourceData(
838 url_data.add_resources(), "http://google.com/script4.js", 845 url_data.add_resources(), "http://google.com/script4.js",
839 content::RESOURCE_TYPE_SCRIPT, 11, 1, 1, 2.1, net::MEDIUM, false, false); 846 content::RESOURCE_TYPE_SCRIPT, 11, 1, 1, 2.1, net::MEDIUM, false, false);
840 InitializeResourceData(
841 url_data.add_resources(), "http://google.com/script2.js",
842 content::RESOURCE_TYPE_SCRIPT, 1, 0, 0, 3.0, net::MEDIUM, false, false);
843 EXPECT_CALL(*mock_tables_.get(), 847 EXPECT_CALL(*mock_tables_.get(),
844 UpdateResourceData(url_data, PREFETCH_KEY_TYPE_URL)); 848 UpdateResourceData(url_data, PREFETCH_KEY_TYPE_URL));
845 EXPECT_CALL(*mock_tables_.get(), 849 EXPECT_CALL(*mock_tables_.get(),
846 DeleteSingleResourceDataPoint("www.facebook.com", 850 DeleteSingleResourceDataPoint("www.facebook.com",
847 PREFETCH_KEY_TYPE_HOST)); 851 PREFETCH_KEY_TYPE_HOST));
848 852
849 PrefetchData host_data = CreatePrefetchData("www.google.com"); 853 PrefetchData host_data = CreatePrefetchData("www.google.com");
850 InitializeResourceData(host_data.add_resources(), 854 InitializeResourceData(host_data.add_resources(),
851 "http://google.com/style1.css", 855 "http://google.com/style1.css",
852 content::RESOURCE_TYPE_STYLESHEET, 1, 0, 0, 1.0, 856 content::RESOURCE_TYPE_STYLESHEET, 1, 0, 0, 1.0,
853 net::MEDIUM, false, false); 857 net::MEDIUM, false, false);
858 InitializeResourceData(host_data.add_resources(),
859 "http://google.com/style2.css",
860 content::RESOURCE_TYPE_STYLESHEET, 1, 0, 0, 7.0,
861 net::MEDIUM, false, false);
854 InitializeResourceData( 862 InitializeResourceData(
855 host_data.add_resources(), "http://google.com/script1.js", 863 host_data.add_resources(), "http://google.com/script1.js",
856 content::RESOURCE_TYPE_SCRIPT, 1, 0, 0, 2.0, net::MEDIUM, false, false); 864 content::RESOURCE_TYPE_SCRIPT, 1, 0, 0, 2.0, net::MEDIUM, false, false);
857 InitializeResourceData( 865 InitializeResourceData(
858 host_data.add_resources(), "http://google.com/script2.js", 866 host_data.add_resources(), "http://google.com/script2.js",
859 content::RESOURCE_TYPE_SCRIPT, 1, 0, 0, 3.0, net::MEDIUM, false, false); 867 content::RESOURCE_TYPE_SCRIPT, 1, 0, 0, 3.0, net::MEDIUM, false, false);
860 InitializeResourceData(host_data.add_resources(),
861 "http://google.com/style2.css",
862 content::RESOURCE_TYPE_STYLESHEET, 1, 0, 0, 7.0,
863 net::MEDIUM, false, false);
864 EXPECT_CALL(*mock_tables_.get(), 868 EXPECT_CALL(*mock_tables_.get(),
865 UpdateResourceData(host_data, PREFETCH_KEY_TYPE_HOST)); 869 UpdateResourceData(host_data, PREFETCH_KEY_TYPE_HOST));
866 870
867 RedirectData url_redirect_data = CreateRedirectData("http://www.google.com/"); 871 RedirectData url_redirect_data = CreateRedirectData("http://www.google.com/");
868 InitializeRedirectStat(url_redirect_data.add_redirect_endpoints(), 872 InitializeRedirectStat(url_redirect_data.add_redirect_endpoints(),
869 "http://www.google.com/", 1, 0, 0); 873 "http://www.google.com/", 1, 0, 0);
870 EXPECT_CALL(*mock_tables_.get(), 874 EXPECT_CALL(*mock_tables_.get(),
871 UpdateRedirectData(url_redirect_data, PREFETCH_KEY_TYPE_URL)); 875 UpdateRedirectData(url_redirect_data, PREFETCH_KEY_TYPE_URL));
872 876
873 RedirectData host_redirect_data = CreateRedirectData("www.google.com"); 877 RedirectData host_redirect_data = CreateRedirectData("www.google.com");
(...skipping 216 matching lines...) Expand 10 before | Expand all | Expand 10 after
1090 UpdateRedirectData(host_redirect_data, PREFETCH_KEY_TYPE_HOST)); 1094 UpdateRedirectData(host_redirect_data, PREFETCH_KEY_TYPE_HOST));
1091 1095
1092 predictor_->RecordMainFrameLoadComplete(fb_end); 1096 predictor_->RecordMainFrameLoadComplete(fb_end);
1093 profile_->BlockUntilHistoryProcessesPendingRequests(); 1097 profile_->BlockUntilHistoryProcessesPendingRequests();
1094 } 1098 }
1095 1099
1096 TEST_F(ResourcePrefetchPredictorTest, ManifestHostNotInDB) { 1100 TEST_F(ResourcePrefetchPredictorTest, ManifestHostNotInDB) {
1097 precache::PrecacheManifest manifest = 1101 precache::PrecacheManifest manifest =
1098 CreateManifestData(base::Time::Now().ToDoubleT()); 1102 CreateManifestData(base::Time::Now().ToDoubleT());
1099 InitializePrecacheResource(manifest.add_resource(), 1103 InitializePrecacheResource(manifest.add_resource(),
1100 "http://cdn.google.com/script.js", 0.9); 1104 "http://cdn.google.com/script.js", 0.9,
1101 InitializePrecacheResource(manifest.add_resource(), 1105 precache::PrecacheResource::RESOURCE_TYPE_SCRIPT);
1102 "http://cdn.google.com/style.css", 0.75); 1106 InitializePrecacheResource(
1107 manifest.add_resource(), "http://cdn.google.com/style.css", 0.75,
1108 precache::PrecacheResource::RESOURCE_TYPE_STYLESHEET);
1103 1109
1104 EXPECT_CALL(*mock_tables_.get(), UpdateManifestData("google.com", manifest)); 1110 EXPECT_CALL(*mock_tables_.get(), UpdateManifestData("google.com", manifest));
1105 1111
1106 predictor_->OnManifestFetched("google.com", manifest); 1112 predictor_->OnManifestFetched("google.com", manifest);
1107 } 1113 }
1108 1114
1109 TEST_F(ResourcePrefetchPredictorTest, ManifestHostInDB) { 1115 TEST_F(ResourcePrefetchPredictorTest, ManifestHostInDB) {
1110 EXPECT_CALL(*mock_tables_.get(), 1116 EXPECT_CALL(*mock_tables_.get(),
1111 GetAllData(Pointee(ContainerEq(PrefetchDataMap())), 1117 GetAllData(Pointee(ContainerEq(PrefetchDataMap())),
1112 Pointee(ContainerEq(PrefetchDataMap())), 1118 Pointee(ContainerEq(PrefetchDataMap())),
1113 Pointee(ContainerEq(RedirectDataMap())), 1119 Pointee(ContainerEq(RedirectDataMap())),
1114 Pointee(ContainerEq(RedirectDataMap())), 1120 Pointee(ContainerEq(RedirectDataMap())),
1115 Pointee(ContainerEq(ManifestDataMap())), 1121 Pointee(ContainerEq(ManifestDataMap())),
1116 Pointee(ContainerEq(OriginDataMap())))) 1122 Pointee(ContainerEq(OriginDataMap()))))
1117 .WillOnce(SetArgPointee<4>(test_manifest_data_)); 1123 .WillOnce(SetArgPointee<4>(test_manifest_data_));
1118 ResetPredictor(); 1124 ResetPredictor();
1119 InitializePredictor(); 1125 InitializePredictor();
1120 EXPECT_EQ(2U, predictor_->manifest_table_cache_->size()); 1126 EXPECT_EQ(2U, predictor_->manifest_table_cache_->size());
1121 1127
1122 precache::PrecacheManifest manifest = 1128 precache::PrecacheManifest manifest =
1123 CreateManifestData(base::Time::Now().ToDoubleT()); 1129 CreateManifestData(base::Time::Now().ToDoubleT());
1124 InitializePrecacheResource(manifest.add_resource(), 1130 InitializePrecacheResource(manifest.add_resource(),
1125 "http://google.com/image.jpg", 0.1); 1131 "http://google.com/image.jpg", 0.1,
1132 precache::PrecacheResource::RESOURCE_TYPE_IMAGE);
1126 1133
1127 EXPECT_CALL(*mock_tables_.get(), UpdateManifestData("google.com", manifest)); 1134 EXPECT_CALL(*mock_tables_.get(), UpdateManifestData("google.com", manifest));
1128 1135
1129 predictor_->OnManifestFetched("google.com", manifest); 1136 predictor_->OnManifestFetched("google.com", manifest);
1130 } 1137 }
1131 1138
1132 TEST_F(ResourcePrefetchPredictorTest, ManifestHostNotInDBAndDBFull) { 1139 TEST_F(ResourcePrefetchPredictorTest, ManifestHostNotInDBAndDBFull) {
1133 EXPECT_CALL(*mock_tables_.get(), 1140 EXPECT_CALL(*mock_tables_.get(),
1134 GetAllData(Pointee(ContainerEq(PrefetchDataMap())), 1141 GetAllData(Pointee(ContainerEq(PrefetchDataMap())),
1135 Pointee(ContainerEq(PrefetchDataMap())), 1142 Pointee(ContainerEq(PrefetchDataMap())),
1136 Pointee(ContainerEq(RedirectDataMap())), 1143 Pointee(ContainerEq(RedirectDataMap())),
1137 Pointee(ContainerEq(RedirectDataMap())), 1144 Pointee(ContainerEq(RedirectDataMap())),
1138 Pointee(ContainerEq(ManifestDataMap())), 1145 Pointee(ContainerEq(ManifestDataMap())),
1139 Pointee(ContainerEq(OriginDataMap())))) 1146 Pointee(ContainerEq(OriginDataMap()))))
1140 .WillOnce(SetArgPointee<4>(test_manifest_data_)); 1147 .WillOnce(SetArgPointee<4>(test_manifest_data_));
1141 ResetPredictor(); 1148 ResetPredictor();
1142 InitializePredictor(); 1149 InitializePredictor();
1143 EXPECT_EQ(2U, predictor_->manifest_table_cache_->size()); 1150 EXPECT_EQ(2U, predictor_->manifest_table_cache_->size());
1144 1151
1145 precache::PrecacheManifest manifest = 1152 precache::PrecacheManifest manifest =
1146 CreateManifestData(base::Time::Now().ToDoubleT()); 1153 CreateManifestData(base::Time::Now().ToDoubleT());
1147 InitializePrecacheResource(manifest.add_resource(), 1154 InitializePrecacheResource(manifest.add_resource(),
1148 "http://en.wikipedia.org/logo.png", 1.0); 1155 "http://en.wikipedia.org/logo.png", 1.0,
1156 precache::PrecacheResource::RESOURCE_TYPE_IMAGE);
1149 1157
1150 EXPECT_CALL(*mock_tables_.get(), 1158 EXPECT_CALL(*mock_tables_.get(),
1151 DeleteManifestData(std::vector<std::string>({"google.com"}))); 1159 DeleteManifestData(std::vector<std::string>({"google.com"})));
1152 1160
1153 EXPECT_CALL(*mock_tables_.get(), 1161 EXPECT_CALL(*mock_tables_.get(),
1154 UpdateManifestData("en.wikipedia.org", manifest)); 1162 UpdateManifestData("en.wikipedia.org", manifest));
1155 1163
1156 predictor_->OnManifestFetched("en.wikipedia.org", manifest); 1164 predictor_->OnManifestFetched("en.wikipedia.org", manifest);
1157 } 1165 }
1158 1166
1159 TEST_F(ResourcePrefetchPredictorTest, ManifestUnknownFieldsRemoved) { 1167 TEST_F(ResourcePrefetchPredictorTest, ManifestUnknownFieldsRemoved) {
1160 precache::PrecacheManifest manifest = 1168 precache::PrecacheManifest manifest =
1161 CreateManifestData(base::Time::Now().ToDoubleT()); 1169 CreateManifestData(base::Time::Now().ToDoubleT());
1162 InitializePrecacheResource(manifest.add_resource(), 1170 InitializePrecacheResource(manifest.add_resource(),
1163 "http://cdn.google.com/script.js", 0.9); 1171 "http://cdn.google.com/script.js", 0.9,
1164 InitializePrecacheResource(manifest.add_resource(), 1172 precache::PrecacheResource::RESOURCE_TYPE_SCRIPT);
1165 "http://cdn.google.com/style.css", 0.75); 1173 InitializePrecacheResource(
1174 manifest.add_resource(), "http://cdn.google.com/style.css", 0.75,
1175 precache::PrecacheResource::RESOURCE_TYPE_STYLESHEET);
1166 1176
1167 precache::PrecacheManifest manifest_with_unknown_fields(manifest); 1177 precache::PrecacheManifest manifest_with_unknown_fields(manifest);
1168 manifest_with_unknown_fields.mutable_id()->mutable_unknown_fields()->append( 1178 manifest_with_unknown_fields.mutable_id()->mutable_unknown_fields()->append(
1169 "DATA"); 1179 "DATA");
1170 manifest_with_unknown_fields.mutable_unknown_fields()->append("DATA"); 1180 manifest_with_unknown_fields.mutable_unknown_fields()->append("DATA");
1171 for (auto& resource : *manifest_with_unknown_fields.mutable_resource()) { 1181 for (auto& resource : *manifest_with_unknown_fields.mutable_resource()) {
1172 resource.mutable_unknown_fields()->append("DATA"); 1182 resource.mutable_unknown_fields()->append("DATA");
1173 } 1183 }
1174 1184
1175 int manifest_size = manifest.ByteSize(); 1185 int manifest_size = manifest.ByteSize();
1176 auto match_size = [manifest_size](const precache::PrecacheManifest& m) { 1186 auto match_size = [manifest_size](const precache::PrecacheManifest& m) {
1177 return m.ByteSize() == manifest_size; 1187 return m.ByteSize() == manifest_size;
1178 }; 1188 };
1179 EXPECT_CALL( 1189 EXPECT_CALL(
1180 *mock_tables_.get(), 1190 *mock_tables_.get(),
1181 UpdateManifestData("google.com", 1191 UpdateManifestData("google.com",
1182 testing::AllOf(manifest, testing::Truly(match_size)))); 1192 testing::AllOf(manifest, testing::Truly(match_size))));
1183 1193
1184 predictor_->OnManifestFetched("google.com", manifest_with_unknown_fields); 1194 predictor_->OnManifestFetched("google.com", manifest_with_unknown_fields);
1185 } 1195 }
1186 1196
1187 TEST_F(ResourcePrefetchPredictorTest, ManifestTooOld) { 1197 TEST_F(ResourcePrefetchPredictorTest, ManifestTooOld) {
1188 base::Time old_time = base::Time::Now() - base::TimeDelta::FromDays(7); 1198 base::Time old_time = base::Time::Now() - base::TimeDelta::FromDays(7);
1189 precache::PrecacheManifest manifest = 1199 precache::PrecacheManifest manifest =
1190 CreateManifestData(old_time.ToDoubleT()); 1200 CreateManifestData(old_time.ToDoubleT());
1191 InitializePrecacheResource(manifest.add_resource(), 1201 InitializePrecacheResource(manifest.add_resource(),
1192 "http://cdn.google.com/script.js", 0.9); 1202 "http://cdn.google.com/script.js", 0.9,
1193 InitializePrecacheResource(manifest.add_resource(), 1203 precache::PrecacheResource::RESOURCE_TYPE_SCRIPT);
1194 "http://cdn.google.com/style.css", 0.75); 1204 InitializePrecacheResource(
1205 manifest.add_resource(), "http://cdn.google.com/style.css", 0.75,
1206 precache::PrecacheResource::RESOURCE_TYPE_STYLESHEET);
1195 1207
1196 // No calls to DB should happen. 1208 // No calls to DB should happen.
1197 predictor_->OnManifestFetched("google.com", manifest); 1209 predictor_->OnManifestFetched("google.com", manifest);
1198 } 1210 }
1199 1211
1200 TEST_F(ResourcePrefetchPredictorTest, ManifestUnusedRemoved) { 1212 TEST_F(ResourcePrefetchPredictorTest, ManifestUnusedRemoved) {
1201 const std::string& script_url = "http://cdn.google.com/script.js"; 1213 const std::string& script_url = "http://cdn.google.com/script.js";
1202 const std::string& style_url = "http://cdn.google.com/style.css"; 1214 const std::string& style_url = "http://cdn.google.com/style.css";
1203 PrefetchData google = CreatePrefetchData("www.google.com"); 1215 PrefetchData google = CreatePrefetchData("www.google.com");
1204 InitializeResourceData(google.add_resources(), script_url, 1216 InitializeResourceData(google.add_resources(), script_url,
1205 content::RESOURCE_TYPE_SCRIPT, 10, 0, 1, 2.1, 1217 content::RESOURCE_TYPE_SCRIPT, 10, 0, 1, 2.1,
1206 net::MEDIUM, false, false); 1218 net::MEDIUM, false, false);
1207 InitializeResourceData(google.add_resources(), style_url, 1219 InitializeResourceData(google.add_resources(), style_url,
1208 content::RESOURCE_TYPE_SCRIPT, 10, 0, 1, 2.1, 1220 content::RESOURCE_TYPE_SCRIPT, 10, 0, 1, 2.1,
1209 net::MEDIUM, false, false); 1221 net::MEDIUM, false, false);
1210 predictor_->host_table_cache_->insert({google.primary_key(), google}); 1222 predictor_->host_table_cache_->insert({google.primary_key(), google});
1211 1223
1212 precache::PrecacheManifest manifest = 1224 precache::PrecacheManifest manifest =
1213 CreateManifestData(base::Time::Now().ToDoubleT()); 1225 CreateManifestData(base::Time::Now().ToDoubleT());
1214 InitializePrecacheResource(manifest.add_resource(), script_url, 0.9); 1226 InitializePrecacheResource(manifest.add_resource(), script_url, 0.9,
1215 InitializePrecacheResource(manifest.add_resource(), style_url, 0.75); 1227 precache::PrecacheResource::RESOURCE_TYPE_SCRIPT);
1228 InitializePrecacheResource(
1229 manifest.add_resource(), style_url, 0.75,
1230 precache::PrecacheResource::RESOURCE_TYPE_STYLESHEET);
1216 InitializeExperiment(&manifest, internal::kUnusedRemovedExperiment, 1231 InitializeExperiment(&manifest, internal::kUnusedRemovedExperiment,
1217 {true, false}); 1232 {true, false});
1218 1233
1219 // style_url should be removed. 1234 // style_url should be removed.
1220 google.mutable_resources()->RemoveLast(); 1235 google.mutable_resources()->RemoveLast();
1221 EXPECT_CALL(*mock_tables_.get(), 1236 EXPECT_CALL(*mock_tables_.get(),
1222 UpdateResourceData(google, PREFETCH_KEY_TYPE_HOST)); 1237 UpdateResourceData(google, PREFETCH_KEY_TYPE_HOST));
1223 EXPECT_CALL(*mock_tables_.get(), UpdateManifestData("google.com", manifest)); 1238 EXPECT_CALL(*mock_tables_.get(), UpdateManifestData("google.com", manifest));
1224 1239
1225 predictor_->OnManifestFetched("google.com", manifest); 1240 predictor_->OnManifestFetched("google.com", manifest);
(...skipping 563 matching lines...) Expand 10 before | Expand all | Expand 10 after
1789 EXPECT_FALSE(predictor_->PopulatePrefetcherRequest("http://404.com", 1804 EXPECT_FALSE(predictor_->PopulatePrefetcherRequest("http://404.com",
1790 test_data, &urls)); 1805 test_data, &urls));
1791 EXPECT_TRUE(urls.empty()); 1806 EXPECT_TRUE(urls.empty());
1792 } 1807 }
1793 1808
1794 TEST_F(ResourcePrefetchPredictorTest, PopulateFromManifest) { 1809 TEST_F(ResourcePrefetchPredictorTest, PopulateFromManifest) {
1795 // The data that will be used in populating. 1810 // The data that will be used in populating.
1796 precache::PrecacheManifest google = 1811 precache::PrecacheManifest google =
1797 CreateManifestData(base::Time::Now().ToDoubleT()); 1812 CreateManifestData(base::Time::Now().ToDoubleT());
1798 InitializePrecacheResource(google.add_resource(), 1813 InitializePrecacheResource(google.add_resource(),
1799 "https://static.google.com/good", 0.9); 1814 "https://static.google.com/good.js", 0.9,
1815 precache::PrecacheResource::RESOURCE_TYPE_SCRIPT);
1800 InitializePrecacheResource(google.add_resource(), 1816 InitializePrecacheResource(google.add_resource(),
1801 "https://static.google.com/low_confidence", 0.6); 1817 "https://static.google.com/versioned_removed", 0.8,
1818 precache::PrecacheResource::RESOURCE_TYPE_SCRIPT);
1802 InitializePrecacheResource(google.add_resource(), 1819 InitializePrecacheResource(google.add_resource(),
1803 "https://static.google.com/versionned_removed", 1820 "https://static.google.com/unused_removed", 0.8,
1804 0.8); 1821 precache::PrecacheResource::RESOURCE_TYPE_SCRIPT);
1805 InitializePrecacheResource(google.add_resource(), 1822 InitializePrecacheResource(google.add_resource(),
1806 "https://static.google.com/unused_removed", 0.8); 1823 "https://static.google.com/no_store", 0.8,
1824 precache::PrecacheResource::RESOURCE_TYPE_SCRIPT);
1825 InitializePrecacheResource(
1826 google.add_resource(), "https://static.google.com/good.css", 0.75,
1827 precache::PrecacheResource::RESOURCE_TYPE_STYLESHEET);
1807 InitializePrecacheResource(google.add_resource(), 1828 InitializePrecacheResource(google.add_resource(),
1808 "https://static.google.com/no_store", 0.8); 1829 "https://static.google.com/low_confidence", 0.6,
1830 precache::PrecacheResource::RESOURCE_TYPE_SCRIPT);
1809 InitializeExperiment(&google, internal::kVersionedRemovedExperiment, 1831 InitializeExperiment(&google, internal::kVersionedRemovedExperiment,
1832 {true, false, true, true, true});
1833 InitializeExperiment(&google, internal::kUnusedRemovedExperiment,
1810 {true, true, false, true, true}); 1834 {true, true, false, true, true});
1811 InitializeExperiment(&google, internal::kUnusedRemovedExperiment, 1835 InitializeExperiment(&google, internal::kNoStoreRemovedExperiment,
1812 {true, true, true, false, true}); 1836 {true, true, true, false, true});
1813 InitializeExperiment(&google, internal::kNoStoreRemovedExperiment,
1814 {true, true, true, true, false});
1815 1837
1816 // The data that's too old. 1838 // The data that's too old.
1817 base::Time old_time = base::Time::Now() - base::TimeDelta::FromDays(7); 1839 base::Time old_time = base::Time::Now() - base::TimeDelta::FromDays(7);
1818 precache::PrecacheManifest facebook = 1840 precache::PrecacheManifest facebook =
1819 CreateManifestData(old_time.ToDoubleT()); 1841 CreateManifestData(old_time.ToDoubleT());
1820 InitializePrecacheResource(facebook.add_resource(), 1842 InitializePrecacheResource(facebook.add_resource(),
1821 "https://static.facebook.com/good", 0.9); 1843 "https://static.facebook.com/good", 0.9,
1844 precache::PrecacheResource::RESOURCE_TYPE_SCRIPT);
1822 1845
1823 predictor_->manifest_table_cache_->insert({"google.com", google}); 1846 predictor_->manifest_table_cache_->insert({"google.com", google});
1824 predictor_->manifest_table_cache_->insert({"facebook.com", facebook}); 1847 predictor_->manifest_table_cache_->insert({"facebook.com", facebook});
1825 1848
1826 std::vector<GURL> urls; 1849 std::vector<GURL> urls;
1827 EXPECT_TRUE(predictor_->PopulateFromManifest("google.com", &urls)); 1850 EXPECT_TRUE(predictor_->PopulateFromManifest("google.com", &urls));
1828 EXPECT_THAT(urls, 1851 EXPECT_EQ(urls,
1829 UnorderedElementsAre(GURL("https://static.google.com/good"))); 1852 std::vector<GURL>({GURL("https://static.google.com/good.css"),
1853 GURL("https://static.google.com/good.js")}));
1830 1854
1831 urls.clear(); 1855 urls.clear();
1832 EXPECT_FALSE(predictor_->PopulateFromManifest("facebook.com", &urls)); 1856 EXPECT_FALSE(predictor_->PopulateFromManifest("facebook.com", &urls));
1833 EXPECT_TRUE(urls.empty()); 1857 EXPECT_TRUE(urls.empty());
1834 1858
1835 urls.clear(); 1859 urls.clear();
1836 EXPECT_FALSE(predictor_->PopulateFromManifest("404.com", &urls)); 1860 EXPECT_FALSE(predictor_->PopulateFromManifest("404.com", &urls));
1837 EXPECT_TRUE(urls.empty()); 1861 EXPECT_TRUE(urls.empty());
1838 } 1862 }
1839 1863
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after
1888 const GURL main_frame_url("http://google.com/?query=cats"); 1912 const GURL main_frame_url("http://google.com/?query=cats");
1889 ResourcePrefetchPredictor::Prediction prediction; 1913 ResourcePrefetchPredictor::Prediction prediction;
1890 std::vector<GURL>& urls = prediction.subresource_urls; 1914 std::vector<GURL>& urls = prediction.subresource_urls;
1891 // No prefetch data. 1915 // No prefetch data.
1892 EXPECT_FALSE(predictor_->GetPrefetchData(main_frame_url, &prediction)); 1916 EXPECT_FALSE(predictor_->GetPrefetchData(main_frame_url, &prediction));
1893 1917
1894 // Add a manifest associated with the main frame host. 1918 // Add a manifest associated with the main frame host.
1895 const std::string& resource_url = "https://static.google.com/resource"; 1919 const std::string& resource_url = "https://static.google.com/resource";
1896 precache::PrecacheManifest manifest = 1920 precache::PrecacheManifest manifest =
1897 CreateManifestData(base::Time::Now().ToDoubleT()); 1921 CreateManifestData(base::Time::Now().ToDoubleT());
1898 InitializePrecacheResource(manifest.add_resource(), resource_url, 0.9); 1922 InitializePrecacheResource(manifest.add_resource(), resource_url, 0.9,
1923 precache::PrecacheResource::RESOURCE_TYPE_SCRIPT);
1899 predictor_->manifest_table_cache_->insert({"google.com", manifest}); 1924 predictor_->manifest_table_cache_->insert({"google.com", manifest});
1900 1925
1901 urls.clear(); 1926 urls.clear();
1902 EXPECT_TRUE(predictor_->GetPrefetchData(main_frame_url, &prediction)); 1927 EXPECT_TRUE(predictor_->GetPrefetchData(main_frame_url, &prediction));
1903 EXPECT_THAT(urls, UnorderedElementsAre(GURL(resource_url))); 1928 EXPECT_THAT(urls, UnorderedElementsAre(GURL(resource_url)));
1904 1929
1905 // Add a resource associated with the main frame host. 1930 // Add a resource associated with the main frame host.
1906 PrefetchData google_host = CreatePrefetchData("google.com", 2); 1931 PrefetchData google_host = CreatePrefetchData("google.com", 2);
1907 const std::string script_url = "https://cdn.google.com/script.js"; 1932 const std::string script_url = "https://cdn.google.com/script.js";
1908 InitializeResourceData(google_host.add_resources(), script_url, 1933 InitializeResourceData(google_host.add_resources(), script_url,
(...skipping 177 matching lines...) Expand 10 before | Expand all | Expand 10 after
2086 predictor_->host_table_cache_->insert( 2111 predictor_->host_table_cache_->insert(
2087 std::make_pair(google.primary_key(), google)); 2112 std::make_pair(google.primary_key(), google));
2088 2113
2089 predictor_->StartPrefetching(GURL(main_frame_url), PrefetchOrigin::EXTERNAL); 2114 predictor_->StartPrefetching(GURL(main_frame_url), PrefetchOrigin::EXTERNAL);
2090 predictor_->StopPrefetching(GURL(main_frame_url)); 2115 predictor_->StopPrefetching(GURL(main_frame_url));
2091 histogram_tester_->ExpectTotalCount( 2116 histogram_tester_->ExpectTotalCount(
2092 internal::kResourcePrefetchPredictorPrefetchingDurationHistogram, 1); 2117 internal::kResourcePrefetchPredictorPrefetchingDurationHistogram, 1);
2093 } 2118 }
2094 2119
2095 } // namespace predictors 2120 } // namespace predictors
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698