Index: components/precache/core/precache_database_unittest.cc |
diff --git a/components/precache/core/precache_database_unittest.cc b/components/precache/core/precache_database_unittest.cc |
index c0408d39ee94f57c1453ed726f4e6dd4bbeb560b..6080b6b5faa9994441c30b3840a7c1ba7c4b6a8a 100644 |
--- a/components/precache/core/precache_database_unittest.cc |
+++ b/components/precache/core/precache_database_unittest.cc |
@@ -38,6 +38,8 @@ const base::Time kFetchTime = base::Time() + base::TimeDelta::FromHours(1000); |
const base::Time kOldFetchTime = kFetchTime - base::TimeDelta::FromDays(1); |
const base::Time kNewFetchTime = |
base::Time() + base::TimeDelta::FromHours(2000); |
+const base::Time kPrecacheTime = |
+ base::Time() + base::TimeDelta::FromHours(3000); |
const int64_t kSize = 5000; |
const int64_t kFreshnessBucket10K = 9089; |
// One of the possible CacheEntryStatus for when the fetch was served from the |
@@ -525,6 +527,7 @@ TEST_F(PrecacheDatabaseTest, GetURLListForReferrerHost) { |
struct test_resource_info { |
std::string url; |
+ bool is_user_browsed; |
bool is_network_fetched; |
bool is_cellular_fetched; |
bool expected_in_used; |
@@ -537,23 +540,27 @@ TEST_F(PrecacheDatabaseTest, GetURLListForReferrerHost) { |
{ |
"foo.com", |
{ |
- {"http://foo.com/from-cache.js", false, false, true}, |
- {"http://some-cdn.com/from-network.js", true, false, false}, |
- {"http://foo.com/from-cache-cellular.js", false, true, true}, |
- {"http://foo.com/from-network-cellular.js", true, true, false}, |
+ {"http://foo.com/from-cache.js", true, false, false, true}, |
+ {"http://some-cdn.com/from-network.js", true, true, false, false}, |
+ {"http://foo.com/from-cache-cellular.js", true, false, true, |
+ true}, |
+ {"http://foo.com/from-network-cellular.js", true, true, true, |
+ false}, |
+ {"http://foo.com/not-browsed.js", false, false, false, false}, |
}, |
}, |
{ |
"bar.com", |
{ |
- {"http://bar.com/a.js", false, false, true}, |
- {"http://some-cdn.com/b.js", false, true, true}, |
+ {"http://bar.com/a.js", true, false, false, true}, |
+ {"http://some-cdn.com/b.js", true, false, true, true}, |
+ {"http://bar.com/not-browsed.js", false, false, false, false}, |
}, |
}, |
{ |
"foobar.com", |
{ |
- {"http://some-cdn.com/not-used.js", true, true, false}, |
+ {"http://some-cdn.com/not-used.js", true, true, true, false}, |
}, |
}, |
{ |
@@ -564,12 +571,14 @@ TEST_F(PrecacheDatabaseTest, GetURLListForReferrerHost) { |
for (const auto& test : tests) { |
for (const auto& resource : test.resource_info) { |
precache_database_->RecordURLPrefetch(GURL(resource.url), test.hostname, |
- base::Time(), false, kSize); |
+ kPrecacheTime, false, kSize); |
} |
} |
// Update some resources as used due to user browsing. |
for (const auto& test : tests) { |
for (const auto& resource : test.resource_info) { |
+ if (!resource.is_user_browsed) |
+ continue; |
if (!resource.is_network_fetched && !resource.is_cellular_fetched) { |
RecordFetchFromCache(GURL(resource.url), kFetchTime, kSize); |
} else if (!resource.is_network_fetched && resource.is_cellular_fetched) { |
@@ -614,6 +623,16 @@ TEST_F(PrecacheDatabaseTest, GetURLListForReferrerHost) { |
referrer_id, &actual_used_urls, &actual_unused_urls); |
EXPECT_TRUE(actual_used_urls.empty()); |
} |
+ // Resources that were precached previously and not seen in user browsing |
+ // should be still marked as precached. |
+ std::map<GURL, base::Time> expected_url_table_map; |
+ for (const auto& test : tests) { |
+ for (const auto& resource : test.resource_info) { |
+ if (!resource.is_user_browsed) |
+ expected_url_table_map[GURL(resource.url)] = kPrecacheTime; |
+ } |
+ } |
+ EXPECT_EQ(expected_url_table_map, GetActualURLTableMap()); |
} |
} // namespace |