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

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

Issue 2825693002: predictors: Prefetch resources from manifest. (Closed)
Patch Set: Add comment. 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_test_util.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 1077 matching lines...) Expand 10 before | Expand all | Expand 10 after
1088 InitializeRedirectStat(host_redirect_data.add_redirect_endpoints(), 1088 InitializeRedirectStat(host_redirect_data.add_redirect_endpoints(),
1089 "facebook.com", 1, 0, 0); 1089 "facebook.com", 1, 0, 0);
1090 EXPECT_CALL(*mock_tables_.get(), 1090 EXPECT_CALL(*mock_tables_.get(),
1091 UpdateRedirectData(host_redirect_data, PREFETCH_KEY_TYPE_HOST)); 1091 UpdateRedirectData(host_redirect_data, PREFETCH_KEY_TYPE_HOST));
1092 1092
1093 predictor_->RecordMainFrameLoadComplete(fb_end); 1093 predictor_->RecordMainFrameLoadComplete(fb_end);
1094 profile_->BlockUntilHistoryProcessesPendingRequests(); 1094 profile_->BlockUntilHistoryProcessesPendingRequests();
1095 } 1095 }
1096 1096
1097 TEST_F(ResourcePrefetchPredictorTest, ManifestHostNotInDB) { 1097 TEST_F(ResourcePrefetchPredictorTest, ManifestHostNotInDB) {
1098 precache::PrecacheManifest manifest = CreateManifestData(1); 1098 precache::PrecacheManifest manifest =
1099 CreateManifestData(base::Time::Now().ToDoubleT());
1099 InitializePrecacheResource(manifest.add_resource(), 1100 InitializePrecacheResource(manifest.add_resource(),
1100 "http://cdn.google.com/script.js", 0.9); 1101 "http://cdn.google.com/script.js", 0.9);
1101 InitializePrecacheResource(manifest.add_resource(), 1102 InitializePrecacheResource(manifest.add_resource(),
1102 "http://cdn.google.com/style.css", 0.75); 1103 "http://cdn.google.com/style.css", 0.75);
1103 1104
1104 EXPECT_CALL(*mock_tables_.get(), UpdateManifestData("google.com", manifest)); 1105 EXPECT_CALL(*mock_tables_.get(), UpdateManifestData("google.com", manifest));
1105 1106
1106 predictor_->OnManifestFetched("google.com", manifest); 1107 predictor_->OnManifestFetched("google.com", manifest);
1107 } 1108 }
1108 1109
1109 TEST_F(ResourcePrefetchPredictorTest, ManifestHostInDB) { 1110 TEST_F(ResourcePrefetchPredictorTest, ManifestHostInDB) {
1110 EXPECT_CALL(*mock_tables_.get(), 1111 EXPECT_CALL(*mock_tables_.get(),
1111 GetAllData(Pointee(ContainerEq(PrefetchDataMap())), 1112 GetAllData(Pointee(ContainerEq(PrefetchDataMap())),
1112 Pointee(ContainerEq(PrefetchDataMap())), 1113 Pointee(ContainerEq(PrefetchDataMap())),
1113 Pointee(ContainerEq(RedirectDataMap())), 1114 Pointee(ContainerEq(RedirectDataMap())),
1114 Pointee(ContainerEq(RedirectDataMap())), 1115 Pointee(ContainerEq(RedirectDataMap())),
1115 Pointee(ContainerEq(ManifestDataMap())), 1116 Pointee(ContainerEq(ManifestDataMap())),
1116 Pointee(ContainerEq(OriginDataMap())))) 1117 Pointee(ContainerEq(OriginDataMap()))))
1117 .WillOnce(SetArgPointee<4>(test_manifest_data_)); 1118 .WillOnce(SetArgPointee<4>(test_manifest_data_));
1118 ResetPredictor(); 1119 ResetPredictor();
1119 InitializePredictor(); 1120 InitializePredictor();
1120 EXPECT_EQ(2U, predictor_->manifest_table_cache_->size()); 1121 EXPECT_EQ(2U, predictor_->manifest_table_cache_->size());
1121 1122
1122 precache::PrecacheManifest manifest = CreateManifestData(1); 1123 precache::PrecacheManifest manifest =
1124 CreateManifestData(base::Time::Now().ToDoubleT());
1123 InitializePrecacheResource(manifest.add_resource(), 1125 InitializePrecacheResource(manifest.add_resource(),
1124 "http://google.com/image.jpg", 0.1); 1126 "http://google.com/image.jpg", 0.1);
1125 1127
1126 EXPECT_CALL(*mock_tables_.get(), UpdateManifestData("google.com", manifest)); 1128 EXPECT_CALL(*mock_tables_.get(), UpdateManifestData("google.com", manifest));
1127 1129
1128 predictor_->OnManifestFetched("google.com", manifest); 1130 predictor_->OnManifestFetched("google.com", manifest);
1129 } 1131 }
1130 1132
1131 TEST_F(ResourcePrefetchPredictorTest, ManifestHostNotInDBAndDBFull) { 1133 TEST_F(ResourcePrefetchPredictorTest, ManifestHostNotInDBAndDBFull) {
1132 EXPECT_CALL(*mock_tables_.get(), 1134 EXPECT_CALL(*mock_tables_.get(),
1133 GetAllData(Pointee(ContainerEq(PrefetchDataMap())), 1135 GetAllData(Pointee(ContainerEq(PrefetchDataMap())),
1134 Pointee(ContainerEq(PrefetchDataMap())), 1136 Pointee(ContainerEq(PrefetchDataMap())),
1135 Pointee(ContainerEq(RedirectDataMap())), 1137 Pointee(ContainerEq(RedirectDataMap())),
1136 Pointee(ContainerEq(RedirectDataMap())), 1138 Pointee(ContainerEq(RedirectDataMap())),
1137 Pointee(ContainerEq(ManifestDataMap())), 1139 Pointee(ContainerEq(ManifestDataMap())),
1138 Pointee(ContainerEq(OriginDataMap())))) 1140 Pointee(ContainerEq(OriginDataMap()))))
1139 .WillOnce(SetArgPointee<4>(test_manifest_data_)); 1141 .WillOnce(SetArgPointee<4>(test_manifest_data_));
1140 ResetPredictor(); 1142 ResetPredictor();
1141 InitializePredictor(); 1143 InitializePredictor();
1142 EXPECT_EQ(2U, predictor_->manifest_table_cache_->size()); 1144 EXPECT_EQ(2U, predictor_->manifest_table_cache_->size());
1143 1145
1144 precache::PrecacheManifest manifest = CreateManifestData(1); 1146 precache::PrecacheManifest manifest =
1147 CreateManifestData(base::Time::Now().ToDoubleT());
1145 InitializePrecacheResource(manifest.add_resource(), 1148 InitializePrecacheResource(manifest.add_resource(),
1146 "http://en.wikipedia.org/logo.png", 1.0); 1149 "http://en.wikipedia.org/logo.png", 1.0);
1147 1150
1148 EXPECT_CALL(*mock_tables_.get(), 1151 EXPECT_CALL(*mock_tables_.get(),
1149 DeleteManifestData(std::vector<std::string>({"google.com"}))); 1152 DeleteManifestData(std::vector<std::string>({"google.com"})));
1150 1153
1151 EXPECT_CALL(*mock_tables_.get(), 1154 EXPECT_CALL(*mock_tables_.get(),
1152 UpdateManifestData("en.wikipedia.org", manifest)); 1155 UpdateManifestData("en.wikipedia.org", manifest));
1153 1156
1154 predictor_->OnManifestFetched("en.wikipedia.org", manifest); 1157 predictor_->OnManifestFetched("en.wikipedia.org", manifest);
1155 } 1158 }
1156 1159
1157 TEST_F(ResourcePrefetchPredictorTest, ManifestUnknownFieldsRemoved) { 1160 TEST_F(ResourcePrefetchPredictorTest, ManifestUnknownFieldsRemoved) {
1158 precache::PrecacheManifest manifest = CreateManifestData(1); 1161 precache::PrecacheManifest manifest =
1162 CreateManifestData(base::Time::Now().ToDoubleT());
1159 InitializePrecacheResource(manifest.add_resource(), 1163 InitializePrecacheResource(manifest.add_resource(),
1160 "http://cdn.google.com/script.js", 0.9); 1164 "http://cdn.google.com/script.js", 0.9);
1161 InitializePrecacheResource(manifest.add_resource(), 1165 InitializePrecacheResource(manifest.add_resource(),
1162 "http://cdn.google.com/style.css", 0.75); 1166 "http://cdn.google.com/style.css", 0.75);
1163 1167
1164 precache::PrecacheManifest manifest_with_unknown_fields(manifest); 1168 precache::PrecacheManifest manifest_with_unknown_fields(manifest);
1165 manifest_with_unknown_fields.mutable_id()->mutable_unknown_fields()->append( 1169 manifest_with_unknown_fields.mutable_id()->mutable_unknown_fields()->append(
1166 "DATA"); 1170 "DATA");
1167 manifest_with_unknown_fields.mutable_unknown_fields()->append("DATA"); 1171 manifest_with_unknown_fields.mutable_unknown_fields()->append("DATA");
1168 for (auto& resource : *manifest_with_unknown_fields.mutable_resource()) { 1172 for (auto& resource : *manifest_with_unknown_fields.mutable_resource()) {
1169 resource.mutable_unknown_fields()->append("DATA"); 1173 resource.mutable_unknown_fields()->append("DATA");
1170 } 1174 }
1171 1175
1172 int manifest_size = manifest.ByteSize(); 1176 int manifest_size = manifest.ByteSize();
1173 auto match_size = [manifest_size](const precache::PrecacheManifest& m) { 1177 auto match_size = [manifest_size](const precache::PrecacheManifest& m) {
1174 return m.ByteSize() == manifest_size; 1178 return m.ByteSize() == manifest_size;
1175 }; 1179 };
1176 EXPECT_CALL( 1180 EXPECT_CALL(
1177 *mock_tables_.get(), 1181 *mock_tables_.get(),
1178 UpdateManifestData("google.com", 1182 UpdateManifestData("google.com",
1179 testing::AllOf(manifest, testing::Truly(match_size)))); 1183 testing::AllOf(manifest, testing::Truly(match_size))));
1180 1184
1181 predictor_->OnManifestFetched("google.com", manifest_with_unknown_fields); 1185 predictor_->OnManifestFetched("google.com", manifest_with_unknown_fields);
1182 } 1186 }
1183 1187
1188 TEST_F(ResourcePrefetchPredictorTest, ManifestTooOld) {
1189 base::Time old_time = base::Time::Now() - base::TimeDelta::FromDays(7);
1190 precache::PrecacheManifest manifest =
1191 CreateManifestData(old_time.ToDoubleT());
1192 InitializePrecacheResource(manifest.add_resource(),
1193 "http://cdn.google.com/script.js", 0.9);
1194 InitializePrecacheResource(manifest.add_resource(),
1195 "http://cdn.google.com/style.css", 0.75);
1196
1197 // No calls to DB should happen.
1198 predictor_->OnManifestFetched("google.com", manifest);
1199 }
1200
1184 TEST_F(ResourcePrefetchPredictorTest, ManifestUnusedRemoved) { 1201 TEST_F(ResourcePrefetchPredictorTest, ManifestUnusedRemoved) {
1185 const std::string& script_url = "http://cdn.google.com/script.js"; 1202 const std::string& script_url = "http://cdn.google.com/script.js";
1186 const std::string& style_url = "http://cdn.google.com/style.css"; 1203 const std::string& style_url = "http://cdn.google.com/style.css";
1187 PrefetchData google = CreatePrefetchData("www.google.com"); 1204 PrefetchData google = CreatePrefetchData("www.google.com");
1188 InitializeResourceData(google.add_resources(), script_url, 1205 InitializeResourceData(google.add_resources(), script_url,
1189 content::RESOURCE_TYPE_SCRIPT, 10, 0, 1, 2.1, 1206 content::RESOURCE_TYPE_SCRIPT, 10, 0, 1, 2.1,
1190 net::MEDIUM, false, false); 1207 net::MEDIUM, false, false);
1191 InitializeResourceData(google.add_resources(), style_url, 1208 InitializeResourceData(google.add_resources(), style_url,
1192 content::RESOURCE_TYPE_SCRIPT, 10, 0, 1, 2.1, 1209 content::RESOURCE_TYPE_SCRIPT, 10, 0, 1, 2.1,
1193 net::MEDIUM, false, false); 1210 net::MEDIUM, false, false);
1194 predictor_->host_table_cache_->insert({google.primary_key(), google}); 1211 predictor_->host_table_cache_->insert({google.primary_key(), google});
1195 1212
1196 precache::PrecacheManifest manifest = CreateManifestData(1); 1213 precache::PrecacheManifest manifest =
1214 CreateManifestData(base::Time::Now().ToDoubleT());
1197 InitializePrecacheResource(manifest.add_resource(), script_url, 0.9); 1215 InitializePrecacheResource(manifest.add_resource(), script_url, 0.9);
1198 InitializePrecacheResource(manifest.add_resource(), style_url, 0.75); 1216 InitializePrecacheResource(manifest.add_resource(), style_url, 0.75);
1199 InitializeExperiment(&manifest, internal::kUnusedRemovedExperiment, 1217 InitializeExperiment(&manifest, internal::kUnusedRemovedExperiment,
1200 {true, false}); 1218 {true, false});
1201 1219
1202 // style_url should be removed. 1220 // style_url should be removed.
1203 google.mutable_resources()->RemoveLast(); 1221 google.mutable_resources()->RemoveLast();
1204 EXPECT_CALL(*mock_tables_.get(), 1222 EXPECT_CALL(*mock_tables_.get(),
1205 UpdateResourceData(google, PREFETCH_KEY_TYPE_HOST)); 1223 UpdateResourceData(google, PREFETCH_KEY_TYPE_HOST));
1206 EXPECT_CALL(*mock_tables_.get(), UpdateManifestData("google.com", manifest)); 1224 EXPECT_CALL(*mock_tables_.get(), UpdateManifestData("google.com", manifest));
(...skipping 560 matching lines...) Expand 10 before | Expand all | Expand 10 after
1767 EXPECT_FALSE(predictor_->PopulatePrefetcherRequest(nyt.primary_key(), 1785 EXPECT_FALSE(predictor_->PopulatePrefetcherRequest(nyt.primary_key(),
1768 test_data, &urls)); 1786 test_data, &urls));
1769 EXPECT_TRUE(urls.empty()); 1787 EXPECT_TRUE(urls.empty());
1770 1788
1771 urls.clear(); 1789 urls.clear();
1772 EXPECT_FALSE(predictor_->PopulatePrefetcherRequest("http://404.com", 1790 EXPECT_FALSE(predictor_->PopulatePrefetcherRequest("http://404.com",
1773 test_data, &urls)); 1791 test_data, &urls));
1774 EXPECT_TRUE(urls.empty()); 1792 EXPECT_TRUE(urls.empty());
1775 } 1793 }
1776 1794
1795 TEST_F(ResourcePrefetchPredictorTest, PopulateFromManifest) {
1796 // The data that will be used in populating.
1797 precache::PrecacheManifest google =
1798 CreateManifestData(base::Time::Now().ToDoubleT());
1799 InitializePrecacheResource(google.add_resource(),
1800 "https://static.google.com/good", 0.9);
1801 InitializePrecacheResource(google.add_resource(),
1802 "https://static.google.com/low_confidence", 0.6);
1803 InitializePrecacheResource(google.add_resource(),
1804 "https://static.google.com/versionned_removed",
1805 0.8);
1806 InitializePrecacheResource(google.add_resource(),
1807 "https://static.google.com/unused_removed", 0.8);
1808 InitializePrecacheResource(google.add_resource(),
1809 "https://static.google.com/no_store", 0.8);
1810 InitializeExperiment(&google, internal::kVersionedRemovedExperiment,
1811 {true, true, false, true, true});
1812 InitializeExperiment(&google, internal::kUnusedRemovedExperiment,
1813 {true, true, true, false, true});
1814 InitializeExperiment(&google, internal::kNoStoreRemovedExperiment,
1815 {true, true, true, true, false});
1816
1817 // The data that's too old.
1818 base::Time old_time = base::Time::Now() - base::TimeDelta::FromDays(7);
1819 precache::PrecacheManifest facebook =
1820 CreateManifestData(old_time.ToDoubleT());
1821 InitializePrecacheResource(facebook.add_resource(),
1822 "https://static.facebook.com/good", 0.9);
1823
1824 predictor_->manifest_table_cache_->insert({"google.com", google});
1825 predictor_->manifest_table_cache_->insert({"facebook.com", facebook});
1826
1827 std::vector<GURL> urls;
1828 EXPECT_TRUE(predictor_->PopulateFromManifest("google.com", &urls));
1829 EXPECT_THAT(urls,
1830 UnorderedElementsAre(GURL("https://static.google.com/good")));
1831
1832 urls.clear();
1833 EXPECT_FALSE(predictor_->PopulateFromManifest("facebook.com", &urls));
1834 EXPECT_TRUE(urls.empty());
1835
1836 urls.clear();
1837 EXPECT_FALSE(predictor_->PopulateFromManifest("404.com", &urls));
1838 EXPECT_TRUE(urls.empty());
1839 }
1840
1777 TEST_F(ResourcePrefetchPredictorTest, GetRedirectEndpoint) { 1841 TEST_F(ResourcePrefetchPredictorTest, GetRedirectEndpoint) {
1778 // The data to be requested for the confident endpoint. 1842 // The data to be requested for the confident endpoint.
1779 RedirectData nyt = CreateRedirectData("http://nyt.com", 1); 1843 RedirectData nyt = CreateRedirectData("http://nyt.com", 1);
1780 InitializeRedirectStat(nyt.add_redirect_endpoints(), 1844 InitializeRedirectStat(nyt.add_redirect_endpoints(),
1781 "https://mobile.nytimes.com", 10, 0, 0); 1845 "https://mobile.nytimes.com", 10, 0, 0);
1782 1846
1783 // The data to be sure that other RedirectData won't be affected. 1847 // The data to be sure that other RedirectData won't be affected.
1784 RedirectData gogle = CreateRedirectData("http://gogle.com", 2); 1848 RedirectData gogle = CreateRedirectData("http://gogle.com", 2);
1785 InitializeRedirectStat(gogle.add_redirect_endpoints(), "https://google.com", 1849 InitializeRedirectStat(gogle.add_redirect_endpoints(), "https://google.com",
1786 100, 0, 0); 1850 100, 0, 0);
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
1821 &redirect_endpoint)); 1885 &redirect_endpoint));
1822 } 1886 }
1823 1887
1824 TEST_F(ResourcePrefetchPredictorTest, GetPrefetchData) { 1888 TEST_F(ResourcePrefetchPredictorTest, GetPrefetchData) {
1825 const GURL main_frame_url("http://google.com/?query=cats"); 1889 const GURL main_frame_url("http://google.com/?query=cats");
1826 ResourcePrefetchPredictor::Prediction prediction; 1890 ResourcePrefetchPredictor::Prediction prediction;
1827 std::vector<GURL>& urls = prediction.subresource_urls; 1891 std::vector<GURL>& urls = prediction.subresource_urls;
1828 // No prefetch data. 1892 // No prefetch data.
1829 EXPECT_FALSE(predictor_->GetPrefetchData(main_frame_url, &prediction)); 1893 EXPECT_FALSE(predictor_->GetPrefetchData(main_frame_url, &prediction));
1830 1894
1895 // Add a manifest associated with the main frame host.
1896 const std::string& resource_url = "https://static.google.com/resource";
1897 precache::PrecacheManifest manifest =
1898 CreateManifestData(base::Time::Now().ToDoubleT());
1899 InitializePrecacheResource(manifest.add_resource(), resource_url, 0.9);
1900 predictor_->manifest_table_cache_->insert({"google.com", manifest});
1901
1902 urls.clear();
1903 EXPECT_TRUE(predictor_->GetPrefetchData(main_frame_url, &prediction));
1904 EXPECT_THAT(urls, UnorderedElementsAre(GURL(resource_url)));
1905
1831 // Add a resource associated with the main frame host. 1906 // Add a resource associated with the main frame host.
1832 PrefetchData google_host = CreatePrefetchData("google.com", 1); 1907 PrefetchData google_host = CreatePrefetchData("google.com", 2);
1833 const std::string script_url = "https://cdn.google.com/script.js"; 1908 const std::string script_url = "https://cdn.google.com/script.js";
1834 InitializeResourceData(google_host.add_resources(), script_url, 1909 InitializeResourceData(google_host.add_resources(), script_url,
1835 content::RESOURCE_TYPE_SCRIPT, 10, 0, 1, 2.1, 1910 content::RESOURCE_TYPE_SCRIPT, 10, 0, 1, 2.1,
1836 net::MEDIUM, false, false); 1911 net::MEDIUM, false, false);
1837 predictor_->host_table_cache_->insert( 1912 predictor_->host_table_cache_->insert(
1838 std::make_pair(google_host.primary_key(), google_host)); 1913 std::make_pair(google_host.primary_key(), google_host));
1839 1914
1840 urls.clear(); 1915 urls.clear();
1841 EXPECT_TRUE(predictor_->GetPrefetchData(main_frame_url, &prediction)); 1916 EXPECT_TRUE(predictor_->GetPrefetchData(main_frame_url, &prediction));
1842 EXPECT_THAT(urls, UnorderedElementsAre(GURL(script_url))); 1917 EXPECT_THAT(urls, UnorderedElementsAre(GURL(script_url)));
1843 1918
1844 // Add host-based redirect. 1919 // Add host-based redirect.
1845 RedirectData host_redirect = CreateRedirectData("google.com", 3); 1920 RedirectData host_redirect = CreateRedirectData("google.com", 3);
1846 InitializeRedirectStat(host_redirect.add_redirect_endpoints(), 1921 InitializeRedirectStat(host_redirect.add_redirect_endpoints(),
1847 "www.google.com", 10, 0, 0); 1922 "www.google.fr", 10, 0, 0);
1848 predictor_->host_redirect_table_cache_->insert( 1923 predictor_->host_redirect_table_cache_->insert(
1849 std::make_pair(host_redirect.primary_key(), host_redirect)); 1924 std::make_pair(host_redirect.primary_key(), host_redirect));
1850 1925
1851 // Prediction failed: no data associated with the host redirect endpoint. 1926 // Prediction failed: no data associated with the host redirect endpoint.
1852 urls.clear(); 1927 urls.clear();
1853 EXPECT_FALSE(predictor_->GetPrefetchData(main_frame_url, &prediction)); 1928 EXPECT_FALSE(predictor_->GetPrefetchData(main_frame_url, &prediction));
1854 1929
1855 // Add a resource associated with host redirect endpoint. 1930 // Add a resource associated with host redirect endpoint.
1856 PrefetchData www_google_host = CreatePrefetchData("www.google.com", 4); 1931 PrefetchData www_google_host = CreatePrefetchData("www.google.fr", 4);
1857 const std::string style_url = "https://cdn.google.com/style.css"; 1932 const std::string style_url = "https://cdn.google.com/style.css";
1858 InitializeResourceData(www_google_host.add_resources(), style_url, 1933 InitializeResourceData(www_google_host.add_resources(), style_url,
1859 content::RESOURCE_TYPE_STYLESHEET, 10, 0, 1, 2.1, 1934 content::RESOURCE_TYPE_STYLESHEET, 10, 0, 1, 2.1,
1860 net::MEDIUM, false, false); 1935 net::MEDIUM, false, false);
1861 predictor_->host_table_cache_->insert( 1936 predictor_->host_table_cache_->insert(
1862 std::make_pair(www_google_host.primary_key(), www_google_host)); 1937 std::make_pair(www_google_host.primary_key(), www_google_host));
1863 1938
1864 urls.clear(); 1939 urls.clear();
1865 EXPECT_TRUE(predictor_->GetPrefetchData(main_frame_url, &prediction)); 1940 EXPECT_TRUE(predictor_->GetPrefetchData(main_frame_url, &prediction));
1866 EXPECT_THAT(urls, UnorderedElementsAre(GURL(style_url))); 1941 EXPECT_THAT(urls, UnorderedElementsAre(GURL(style_url)));
1867 1942
1868 // Add a resource associated with the main frame url. 1943 // Add a resource associated with the main frame url.
1869 PrefetchData google_url = 1944 PrefetchData google_url =
1870 CreatePrefetchData("http://google.com/?query=cats", 2); 1945 CreatePrefetchData("http://google.com/?query=cats", 5);
1871 const std::string image_url = "https://cdn.google.com/image.png"; 1946 const std::string image_url = "https://cdn.google.com/image.png";
1872 InitializeResourceData(google_url.add_resources(), image_url, 1947 InitializeResourceData(google_url.add_resources(), image_url,
1873 content::RESOURCE_TYPE_IMAGE, 10, 0, 1, 2.1, 1948 content::RESOURCE_TYPE_IMAGE, 10, 0, 1, 2.1,
1874 net::MEDIUM, false, false); 1949 net::MEDIUM, false, false);
1875 predictor_->url_table_cache_->insert( 1950 predictor_->url_table_cache_->insert(
1876 std::make_pair(google_url.primary_key(), google_url)); 1951 std::make_pair(google_url.primary_key(), google_url));
1877 1952
1878 urls.clear(); 1953 urls.clear();
1879 EXPECT_TRUE(predictor_->GetPrefetchData(main_frame_url, &prediction)); 1954 EXPECT_TRUE(predictor_->GetPrefetchData(main_frame_url, &prediction));
1880 EXPECT_THAT(urls, UnorderedElementsAre(GURL(image_url))); 1955 EXPECT_THAT(urls, UnorderedElementsAre(GURL(image_url)));
1881 1956
1882 // Add url-based redirect. 1957 // Add url-based redirect.
1883 RedirectData url_redirect = 1958 RedirectData url_redirect =
1884 CreateRedirectData("http://google.com/?query=cats", 5); 1959 CreateRedirectData("http://google.com/?query=cats", 6);
1885 InitializeRedirectStat(url_redirect.add_redirect_endpoints(), 1960 InitializeRedirectStat(url_redirect.add_redirect_endpoints(),
1886 "https://www.google.com/?query=cats", 10, 0, 0); 1961 "https://www.google.com/?query=cats", 10, 0, 0);
1887 predictor_->url_redirect_table_cache_->insert( 1962 predictor_->url_redirect_table_cache_->insert(
1888 std::make_pair(url_redirect.primary_key(), url_redirect)); 1963 std::make_pair(url_redirect.primary_key(), url_redirect));
1889 1964
1890 // Url redirect endpoint doesn't have associated resources so we get 1965 // Url redirect endpoint doesn't have associated resources so we get
1891 // host-based data. 1966 // host-based data.
1892 urls.clear(); 1967 urls.clear();
1893 EXPECT_TRUE(predictor_->GetPrefetchData(main_frame_url, &prediction)); 1968 EXPECT_TRUE(predictor_->GetPrefetchData(main_frame_url, &prediction));
1894 EXPECT_THAT(urls, UnorderedElementsAre(GURL(style_url))); 1969 EXPECT_THAT(urls, UnorderedElementsAre(GURL(style_url)));
1895 1970
1896 // Add a resource associated with url redirect endpoint. 1971 // Add a resource associated with url redirect endpoint.
1897 PrefetchData www_google_url = 1972 PrefetchData www_google_url =
1898 CreatePrefetchData("https://www.google.com/?query=cats", 4); 1973 CreatePrefetchData("https://www.google.com/?query=cats", 7);
1899 const std::string font_url = "https://cdn.google.com/comic-sans-ms.woff"; 1974 const std::string font_url = "https://cdn.google.com/comic-sans-ms.woff";
1900 InitializeResourceData(www_google_url.add_resources(), font_url, 1975 InitializeResourceData(www_google_url.add_resources(), font_url,
1901 content::RESOURCE_TYPE_FONT_RESOURCE, 10, 0, 1, 2.1, 1976 content::RESOURCE_TYPE_FONT_RESOURCE, 10, 0, 1, 2.1,
1902 net::MEDIUM, false, false); 1977 net::MEDIUM, false, false);
1903 predictor_->url_table_cache_->insert( 1978 predictor_->url_table_cache_->insert(
1904 std::make_pair(www_google_url.primary_key(), www_google_url)); 1979 std::make_pair(www_google_url.primary_key(), www_google_url));
1905 1980
1906 urls.clear(); 1981 urls.clear();
1907 EXPECT_TRUE(predictor_->GetPrefetchData(main_frame_url, &prediction)); 1982 EXPECT_TRUE(predictor_->GetPrefetchData(main_frame_url, &prediction));
1908 EXPECT_THAT(urls, UnorderedElementsAre(GURL(font_url))); 1983 EXPECT_THAT(urls, UnorderedElementsAre(GURL(font_url)));
(...skipping 103 matching lines...) Expand 10 before | Expand all | Expand 10 after
2012 predictor_->host_table_cache_->insert( 2087 predictor_->host_table_cache_->insert(
2013 std::make_pair(google.primary_key(), google)); 2088 std::make_pair(google.primary_key(), google));
2014 2089
2015 predictor_->StartPrefetching(GURL(main_frame_url), PrefetchOrigin::EXTERNAL); 2090 predictor_->StartPrefetching(GURL(main_frame_url), PrefetchOrigin::EXTERNAL);
2016 predictor_->StopPrefetching(GURL(main_frame_url)); 2091 predictor_->StopPrefetching(GURL(main_frame_url));
2017 histogram_tester_->ExpectTotalCount( 2092 histogram_tester_->ExpectTotalCount(
2018 internal::kResourcePrefetchPredictorPrefetchingDurationHistogram, 1); 2093 internal::kResourcePrefetchPredictorPrefetchingDurationHistogram, 1);
2019 } 2094 }
2020 2095
2021 } // namespace predictors 2096 } // namespace predictors
OLDNEW
« no previous file with comments | « chrome/browser/predictors/resource_prefetch_predictor_test_util.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698