| Index: chrome/browser/predictors/resource_prefetch_predictor_unittest.cc
|
| diff --git a/chrome/browser/predictors/resource_prefetch_predictor_unittest.cc b/chrome/browser/predictors/resource_prefetch_predictor_unittest.cc
|
| index d9b6f670c51be936a27f2658ed41868c08b207ad..5e15c0f6bd48a03db661fb3035f36b054c8c4f13 100644
|
| --- a/chrome/browser/predictors/resource_prefetch_predictor_unittest.cc
|
| +++ b/chrome/browser/predictors/resource_prefetch_predictor_unittest.cc
|
| @@ -1095,7 +1095,8 @@ TEST_F(ResourcePrefetchPredictorTest, RedirectUrlInDB) {
|
| }
|
|
|
| TEST_F(ResourcePrefetchPredictorTest, ManifestHostNotInDB) {
|
| - precache::PrecacheManifest manifest = CreateManifestData(1);
|
| + precache::PrecacheManifest manifest =
|
| + CreateManifestData(base::Time::Now().ToDoubleT());
|
| InitializePrecacheResource(manifest.add_resource(),
|
| "http://cdn.google.com/script.js", 0.9);
|
| InitializePrecacheResource(manifest.add_resource(),
|
| @@ -1119,7 +1120,8 @@ TEST_F(ResourcePrefetchPredictorTest, ManifestHostInDB) {
|
| InitializePredictor();
|
| EXPECT_EQ(2U, predictor_->manifest_table_cache_->size());
|
|
|
| - precache::PrecacheManifest manifest = CreateManifestData(1);
|
| + precache::PrecacheManifest manifest =
|
| + CreateManifestData(base::Time::Now().ToDoubleT());
|
| InitializePrecacheResource(manifest.add_resource(),
|
| "http://google.com/image.jpg", 0.1);
|
|
|
| @@ -1141,7 +1143,8 @@ TEST_F(ResourcePrefetchPredictorTest, ManifestHostNotInDBAndDBFull) {
|
| InitializePredictor();
|
| EXPECT_EQ(2U, predictor_->manifest_table_cache_->size());
|
|
|
| - precache::PrecacheManifest manifest = CreateManifestData(1);
|
| + precache::PrecacheManifest manifest =
|
| + CreateManifestData(base::Time::Now().ToDoubleT());
|
| InitializePrecacheResource(manifest.add_resource(),
|
| "http://en.wikipedia.org/logo.png", 1.0);
|
|
|
| @@ -1155,7 +1158,8 @@ TEST_F(ResourcePrefetchPredictorTest, ManifestHostNotInDBAndDBFull) {
|
| }
|
|
|
| TEST_F(ResourcePrefetchPredictorTest, ManifestUnknownFieldsRemoved) {
|
| - precache::PrecacheManifest manifest = CreateManifestData(1);
|
| + precache::PrecacheManifest manifest =
|
| + CreateManifestData(base::Time::Now().ToDoubleT());
|
| InitializePrecacheResource(manifest.add_resource(),
|
| "http://cdn.google.com/script.js", 0.9);
|
| InitializePrecacheResource(manifest.add_resource(),
|
| @@ -1181,6 +1185,19 @@ TEST_F(ResourcePrefetchPredictorTest, ManifestUnknownFieldsRemoved) {
|
| predictor_->OnManifestFetched("google.com", manifest_with_unknown_fields);
|
| }
|
|
|
| +TEST_F(ResourcePrefetchPredictorTest, ManifestTooOld) {
|
| + base::Time old_time = base::Time::Now() - base::TimeDelta::FromDays(7);
|
| + precache::PrecacheManifest manifest =
|
| + CreateManifestData(old_time.ToDoubleT());
|
| + InitializePrecacheResource(manifest.add_resource(),
|
| + "http://cdn.google.com/script.js", 0.9);
|
| + InitializePrecacheResource(manifest.add_resource(),
|
| + "http://cdn.google.com/style.css", 0.75);
|
| +
|
| + // No calls to DB should happen.
|
| + predictor_->OnManifestFetched("google.com", manifest);
|
| +}
|
| +
|
| TEST_F(ResourcePrefetchPredictorTest, ManifestUnusedRemoved) {
|
| const std::string& script_url = "http://cdn.google.com/script.js";
|
| const std::string& style_url = "http://cdn.google.com/style.css";
|
| @@ -1193,7 +1210,8 @@ TEST_F(ResourcePrefetchPredictorTest, ManifestUnusedRemoved) {
|
| net::MEDIUM, false, false);
|
| predictor_->host_table_cache_->insert({google.primary_key(), google});
|
|
|
| - precache::PrecacheManifest manifest = CreateManifestData(1);
|
| + precache::PrecacheManifest manifest =
|
| + CreateManifestData(base::Time::Now().ToDoubleT());
|
| InitializePrecacheResource(manifest.add_resource(), script_url, 0.9);
|
| InitializePrecacheResource(manifest.add_resource(), style_url, 0.75);
|
| InitializeExperiment(&manifest, internal::kUnusedRemovedExperiment,
|
| @@ -1774,6 +1792,52 @@ TEST_F(ResourcePrefetchPredictorTest, PopulatePrefetcherRequest) {
|
| EXPECT_TRUE(urls.empty());
|
| }
|
|
|
| +TEST_F(ResourcePrefetchPredictorTest, PopulateFromManifest) {
|
| + // The data that will be used in populating.
|
| + precache::PrecacheManifest google =
|
| + CreateManifestData(base::Time::Now().ToDoubleT());
|
| + InitializePrecacheResource(google.add_resource(),
|
| + "https://static.google.com/good", 0.9);
|
| + InitializePrecacheResource(google.add_resource(),
|
| + "https://static.google.com/low_confidence", 0.6);
|
| + InitializePrecacheResource(google.add_resource(),
|
| + "https://static.google.com/versionned_removed",
|
| + 0.8);
|
| + InitializePrecacheResource(google.add_resource(),
|
| + "https://static.google.com/unused_removed", 0.8);
|
| + InitializePrecacheResource(google.add_resource(),
|
| + "https://static.google.com/no_store", 0.8);
|
| + InitializeExperiment(&google, internal::kVersionedRemovedExperiment,
|
| + {true, true, false, true, true});
|
| + InitializeExperiment(&google, internal::kUnusedRemovedExperiment,
|
| + {true, true, true, false, true});
|
| + InitializeExperiment(&google, internal::kNoStoreRemovedExperiment,
|
| + {true, true, true, true, false});
|
| +
|
| + // The data that's too old.
|
| + base::Time old_time = base::Time::Now() - base::TimeDelta::FromDays(7);
|
| + precache::PrecacheManifest facebook =
|
| + CreateManifestData(old_time.ToDoubleT());
|
| + InitializePrecacheResource(facebook.add_resource(),
|
| + "https://static.facebook.com/good", 0.9);
|
| +
|
| + predictor_->manifest_table_cache_->insert({"google.com", google});
|
| + predictor_->manifest_table_cache_->insert({"facebook.com", facebook});
|
| +
|
| + std::vector<GURL> urls;
|
| + EXPECT_TRUE(predictor_->PopulateFromManifest("google.com", &urls));
|
| + EXPECT_THAT(urls,
|
| + UnorderedElementsAre(GURL("https://static.google.com/good")));
|
| +
|
| + urls.clear();
|
| + EXPECT_FALSE(predictor_->PopulateFromManifest("facebook.com", &urls));
|
| + EXPECT_TRUE(urls.empty());
|
| +
|
| + urls.clear();
|
| + EXPECT_FALSE(predictor_->PopulateFromManifest("404.com", &urls));
|
| + EXPECT_TRUE(urls.empty());
|
| +}
|
| +
|
| TEST_F(ResourcePrefetchPredictorTest, GetRedirectEndpoint) {
|
| // The data to be requested for the confident endpoint.
|
| RedirectData nyt = CreateRedirectData("http://nyt.com", 1);
|
| @@ -1828,8 +1892,19 @@ TEST_F(ResourcePrefetchPredictorTest, GetPrefetchData) {
|
| // No prefetch data.
|
| EXPECT_FALSE(predictor_->GetPrefetchData(main_frame_url, &prediction));
|
|
|
| + // Add a manifest associated with the main frame host.
|
| + const std::string& resource_url = "https://static.google.com/resource";
|
| + precache::PrecacheManifest manifest =
|
| + CreateManifestData(base::Time::Now().ToDoubleT());
|
| + InitializePrecacheResource(manifest.add_resource(), resource_url, 0.9);
|
| + predictor_->manifest_table_cache_->insert({"google.com", manifest});
|
| +
|
| + urls.clear();
|
| + EXPECT_TRUE(predictor_->GetPrefetchData(main_frame_url, &prediction));
|
| + EXPECT_THAT(urls, UnorderedElementsAre(GURL(resource_url)));
|
| +
|
| // Add a resource associated with the main frame host.
|
| - PrefetchData google_host = CreatePrefetchData("google.com", 1);
|
| + PrefetchData google_host = CreatePrefetchData("google.com", 2);
|
| const std::string script_url = "https://cdn.google.com/script.js";
|
| InitializeResourceData(google_host.add_resources(), script_url,
|
| content::RESOURCE_TYPE_SCRIPT, 10, 0, 1, 2.1,
|
| @@ -1844,7 +1919,7 @@ TEST_F(ResourcePrefetchPredictorTest, GetPrefetchData) {
|
| // Add host-based redirect.
|
| RedirectData host_redirect = CreateRedirectData("google.com", 3);
|
| InitializeRedirectStat(host_redirect.add_redirect_endpoints(),
|
| - "www.google.com", 10, 0, 0);
|
| + "www.google.fr", 10, 0, 0);
|
| predictor_->host_redirect_table_cache_->insert(
|
| std::make_pair(host_redirect.primary_key(), host_redirect));
|
|
|
| @@ -1853,7 +1928,7 @@ TEST_F(ResourcePrefetchPredictorTest, GetPrefetchData) {
|
| EXPECT_FALSE(predictor_->GetPrefetchData(main_frame_url, &prediction));
|
|
|
| // Add a resource associated with host redirect endpoint.
|
| - PrefetchData www_google_host = CreatePrefetchData("www.google.com", 4);
|
| + PrefetchData www_google_host = CreatePrefetchData("www.google.fr", 4);
|
| const std::string style_url = "https://cdn.google.com/style.css";
|
| InitializeResourceData(www_google_host.add_resources(), style_url,
|
| content::RESOURCE_TYPE_STYLESHEET, 10, 0, 1, 2.1,
|
| @@ -1867,7 +1942,7 @@ TEST_F(ResourcePrefetchPredictorTest, GetPrefetchData) {
|
|
|
| // Add a resource associated with the main frame url.
|
| PrefetchData google_url =
|
| - CreatePrefetchData("http://google.com/?query=cats", 2);
|
| + CreatePrefetchData("http://google.com/?query=cats", 5);
|
| const std::string image_url = "https://cdn.google.com/image.png";
|
| InitializeResourceData(google_url.add_resources(), image_url,
|
| content::RESOURCE_TYPE_IMAGE, 10, 0, 1, 2.1,
|
| @@ -1881,7 +1956,7 @@ TEST_F(ResourcePrefetchPredictorTest, GetPrefetchData) {
|
|
|
| // Add url-based redirect.
|
| RedirectData url_redirect =
|
| - CreateRedirectData("http://google.com/?query=cats", 5);
|
| + CreateRedirectData("http://google.com/?query=cats", 6);
|
| InitializeRedirectStat(url_redirect.add_redirect_endpoints(),
|
| "https://www.google.com/?query=cats", 10, 0, 0);
|
| predictor_->url_redirect_table_cache_->insert(
|
| @@ -1895,7 +1970,7 @@ TEST_F(ResourcePrefetchPredictorTest, GetPrefetchData) {
|
|
|
| // Add a resource associated with url redirect endpoint.
|
| PrefetchData www_google_url =
|
| - CreatePrefetchData("https://www.google.com/?query=cats", 4);
|
| + CreatePrefetchData("https://www.google.com/?query=cats", 7);
|
| const std::string font_url = "https://cdn.google.com/comic-sans-ms.woff";
|
| InitializeResourceData(www_google_url.add_resources(), font_url,
|
| content::RESOURCE_TYPE_FONT_RESOURCE, 10, 0, 1, 2.1,
|
|
|