| Index: chrome/browser/safe_browsing/safe_browsing_database.cc
|
| diff --git a/chrome/browser/safe_browsing/safe_browsing_database.cc b/chrome/browser/safe_browsing/safe_browsing_database.cc
|
| index d77433c1cb4753687017b148377167fda5005889..2f51dae940d93a0b195800f9cf716552663f0b3f 100644
|
| --- a/chrome/browser/safe_browsing/safe_browsing_database.cc
|
| +++ b/chrome/browser/safe_browsing/safe_browsing_database.cc
|
| @@ -66,9 +66,6 @@ const base::FilePath::CharType kIPBlacklistDBFile[] =
|
| // this.
|
| const base::FilePath::CharType kBrowseDBFile[] = FILE_PATH_LITERAL(" Bloom");
|
|
|
| -// The maximum staleness for a cached entry.
|
| -const int kMaxStalenessMinutes = 45;
|
| -
|
| // Maximum number of entries we allow in any of the whitelists.
|
| // If a whitelist on disk contains more entries then all lookups to
|
| // the whitelist will be considered a match.
|
| @@ -196,10 +193,8 @@ bool MatchAddPrefixes(SafeBrowsingStore* store,
|
| void GetCachedFullHashesForBrowse(
|
| const std::vector<SBPrefix>& prefix_hits,
|
| const std::vector<SBFullHashCached>& full_hashes,
|
| - std::vector<SBFullHashResult>* full_hits,
|
| - base::Time last_update) {
|
| - const base::Time expire_time =
|
| - base::Time::Now() - base::TimeDelta::FromMinutes(kMaxStalenessMinutes);
|
| + std::vector<SBFullHashResult>* full_hits) {
|
| + const base::Time now = base::Time::Now();
|
|
|
| std::vector<SBPrefix>::const_iterator piter = prefix_hits.begin();
|
| std::vector<SBFullHashCached>::const_iterator hiter = full_hashes.begin();
|
| @@ -210,8 +205,7 @@ void GetCachedFullHashesForBrowse(
|
| } else if (hiter->hash.prefix < *piter) {
|
| ++hiter;
|
| } else {
|
| - if (expire_time < last_update ||
|
| - expire_time.ToTimeT() < hiter->received) {
|
| + if (now <= hiter->expire_after) {
|
| SBFullHashResult result;
|
| result.list_id = hiter->list_id;
|
| result.hash = hiter->hash;
|
| @@ -657,8 +651,7 @@ bool SafeBrowsingDatabaseNew::ResetDatabase() {
|
| bool SafeBrowsingDatabaseNew::ContainsBrowseUrl(
|
| const GURL& url,
|
| std::vector<SBPrefix>* prefix_hits,
|
| - std::vector<SBFullHashResult>* cached_hits,
|
| - base::Time last_update) {
|
| + std::vector<SBFullHashResult>* cached_hits) {
|
| // Clear the results first.
|
| prefix_hits->clear();
|
| cached_hits->clear();
|
| @@ -695,7 +688,7 @@ bool SafeBrowsingDatabaseNew::ContainsBrowseUrl(
|
| // Find matching cached gethash responses.
|
| std::sort(prefix_hits->begin(), prefix_hits->end());
|
| GetCachedFullHashesForBrowse(*prefix_hits, cached_browse_hashes_,
|
| - cached_hits, last_update);
|
| + cached_hits);
|
|
|
| return true;
|
| }
|
| @@ -1025,7 +1018,10 @@ void SafeBrowsingDatabaseNew::DeleteChunks(
|
|
|
| void SafeBrowsingDatabaseNew::CacheHashResults(
|
| const std::vector<SBPrefix>& prefixes,
|
| - const std::vector<SBFullHashResult>& full_hits) {
|
| + const std::vector<SBFullHashResult>& full_hits,
|
| + const base::TimeDelta& cache_lifetime) {
|
| + const base::Time expire_after = base::Time::Now() + cache_lifetime;
|
| +
|
| // This is called on the I/O thread, lock against updates.
|
| base::AutoLock locked(lookup_lock_);
|
|
|
| @@ -1034,7 +1030,6 @@ void SafeBrowsingDatabaseNew::CacheHashResults(
|
| return;
|
| }
|
|
|
| - const base::Time now = base::Time::Now();
|
| const size_t orig_size = cached_browse_hashes_.size();
|
| for (std::vector<SBFullHashResult>::const_iterator iter = full_hits.begin();
|
| iter != full_hits.end(); ++iter) {
|
| @@ -1043,7 +1038,7 @@ void SafeBrowsingDatabaseNew::CacheHashResults(
|
| SBFullHashCached cached_hash;
|
| cached_hash.hash = iter->hash;
|
| cached_hash.list_id = iter->list_id;
|
| - cached_hash.received = static_cast<int>(now.ToTimeT());
|
| + cached_hash.expire_after = expire_after;
|
| cached_browse_hashes_.push_back(cached_hash);
|
| }
|
| }
|
|
|