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

Unified Diff: chrome/browser/safe_browsing/safe_browsing_database.cc

Issue 790703003: De-dup PrefixSet code in SafeBrowsingDatabaseManager. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@a5_rm_unused_extensionsBL
Patch Set: +TODO Created 6 years 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 side-by-side diff with in-line comments
Download patch
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 5160c654fca8f5618ba01ce208b4ddfee1ea0d8a..d1b403b3cb7ae512a2711f7c53c7827e43db091e 100644
--- a/chrome/browser/safe_browsing/safe_browsing_database.cc
+++ b/chrome/browser/safe_browsing/safe_browsing_database.cc
@@ -603,24 +603,14 @@ void SafeBrowsingDatabaseNew::Init(const base::FilePath& filename_base) {
if (side_effect_free_whitelist_store_.get()) {
const base::FilePath side_effect_free_whitelist_filename =
SideEffectFreeWhitelistDBFilename(filename_base_);
- const base::FilePath side_effect_free_whitelist_prefix_set_filename =
- PrefixSetForFilename(side_effect_free_whitelist_filename);
side_effect_free_whitelist_store_->Init(
side_effect_free_whitelist_filename,
base::Bind(&SafeBrowsingDatabaseNew::HandleCorruptDatabase,
base::Unretained(this)));
- // Only use the prefix set if database is present and non-empty.
- if (GetFileSizeOrZero(side_effect_free_whitelist_filename)) {
- const base::TimeTicks before = base::TimeTicks::Now();
- side_effect_free_whitelist_prefix_set_ =
- safe_browsing::PrefixSet::LoadFile(
- side_effect_free_whitelist_prefix_set_filename);
- UMA_HISTOGRAM_TIMES("SB2.SideEffectFreeWhitelistPrefixSetLoad",
- base::TimeTicks::Now() - before);
- if (!side_effect_free_whitelist_prefix_set_.get())
- RecordFailure(FAILURE_SIDE_EFFECT_FREE_WHITELIST_PREFIX_SET_READ);
- }
+ LoadPrefixSet(side_effect_free_whitelist_filename,
+ &side_effect_free_whitelist_prefix_set_,
+ FAILURE_SIDE_EFFECT_FREE_WHITELIST_PREFIX_SET_READ);
} else {
// Delete any files of the side-effect free sidelist that may be around
// from when it was previously enabled.
@@ -1212,7 +1202,8 @@ void SafeBrowsingDatabaseNew::UpdateFinished(bool update_succeeded) {
browse_store_.get(),
&browse_prefix_set_,
FAILURE_BROWSE_DATABASE_UPDATE_FINISH,
- FAILURE_BROWSE_PREFIX_SET_WRITE);
+ FAILURE_BROWSE_PREFIX_SET_WRITE,
+ true);
UpdateWhitelistStore(CsdWhitelistDBFilename(filename_base_),
csd_whitelist_store_.get(),
@@ -1230,8 +1221,14 @@ void SafeBrowsingDatabaseNew::UpdateFinished(bool update_succeeded) {
static_cast<int>(size_bytes / 1024));
}
- if (side_effect_free_whitelist_store_)
- UpdateSideEffectFreeWhitelistStore();
+ if (side_effect_free_whitelist_store_) {
+ UpdatePrefixSetUrlStore(SideEffectFreeWhitelistDBFilename(filename_base_),
+ side_effect_free_whitelist_store_.get(),
+ &side_effect_free_whitelist_prefix_set_,
+ FAILURE_SIDE_EFFECT_FREE_WHITELIST_UPDATE_FINISH,
+ FAILURE_SIDE_EFFECT_FREE_WHITELIST_PREFIX_SET_WRITE,
+ false);
+ }
if (ip_blacklist_store_)
UpdateIpBlacklistStore();
@@ -1241,7 +1238,8 @@ void SafeBrowsingDatabaseNew::UpdateFinished(bool update_succeeded) {
unwanted_software_store_.get(),
&unwanted_software_prefix_set_,
FAILURE_UNWANTED_SOFTWARE_DATABASE_UPDATE_FINISH,
- FAILURE_UNWANTED_SOFTWARE_PREFIX_SET_WRITE);
+ FAILURE_UNWANTED_SOFTWARE_PREFIX_SET_WRITE,
+ true);
}
}
@@ -1297,8 +1295,11 @@ void SafeBrowsingDatabaseNew::UpdatePrefixSetUrlStore(
SafeBrowsingStore* url_store,
scoped_ptr<const safe_browsing::PrefixSet>* prefix_set,
FailureType finish_failure_type,
- FailureType write_failure_type) {
+ FailureType write_failure_type,
+ bool store_full_hashes_in_prefix_set) {
DCHECK(thread_checker_.CalledOnValidThread());
+ DCHECK(url_store);
+ DCHECK(prefix_set);
// Measure the amount of IO during the filter build.
base::IoCounters io_before, io_after;
@@ -1329,13 +1330,21 @@ void SafeBrowsingDatabaseNew::UpdatePrefixSetUrlStore(
return;
}
- std::vector<SBFullHash> full_hash_results;
- for (size_t i = 0; i < add_full_hashes.size(); ++i) {
- full_hash_results.push_back(add_full_hashes[i].full_hash);
- }
+ scoped_ptr<const safe_browsing::PrefixSet> new_prefix_set;
+ if (store_full_hashes_in_prefix_set) {
+ std::vector<SBFullHash> full_hash_results;
+ for (size_t i = 0; i < add_full_hashes.size(); ++i) {
+ full_hash_results.push_back(add_full_hashes[i].full_hash);
+ }
- scoped_ptr<const safe_browsing::PrefixSet> new_prefix_set(
- builder.GetPrefixSet(full_hash_results));
+ new_prefix_set = builder.GetPrefixSet(full_hash_results);
+ } else {
+ // TODO(gab): Ensure that stores which do not want full hashes just don't
+ // have full hashes in the first place and remove
+ // |store_full_hashes_in_prefix_set| and the code specialization incurred
+ // here.
+ new_prefix_set = builder.GetPrefixSetNoHashes();
+ }
// Swap in the newly built filter.
{
@@ -1366,7 +1375,7 @@ void SafeBrowsingDatabaseNew::UpdatePrefixSetUrlStore(
}
const int64 file_size = GetFileSizeOrZero(db_filename);
- UMA_HISTOGRAM_COUNTS("SB2.BrowseDatabaseKilobytes",
+ UMA_HISTOGRAM_COUNTS("SB2.DatabaseKilobytes",
static_cast<int>(file_size / 1024));
#if defined(OS_MACOSX)
@@ -1374,55 +1383,6 @@ void SafeBrowsingDatabaseNew::UpdatePrefixSetUrlStore(
#endif
}
-void SafeBrowsingDatabaseNew::UpdateSideEffectFreeWhitelistStore() {
- DCHECK(thread_checker_.CalledOnValidThread());
-
- safe_browsing::PrefixSetBuilder builder;
- std::vector<SBAddFullHash> add_full_hashes_result;
-
- if (!side_effect_free_whitelist_store_->FinishUpdate(
- &builder, &add_full_hashes_result)) {
- RecordFailure(FAILURE_SIDE_EFFECT_FREE_WHITELIST_UPDATE_FINISH);
- return;
- }
- scoped_ptr<const safe_browsing::PrefixSet> new_prefix_set(
- builder.GetPrefixSetNoHashes());
-
- // Swap in the newly built prefix set.
- {
- base::AutoLock locked(lookup_lock_);
- side_effect_free_whitelist_prefix_set_.swap(new_prefix_set);
- }
-
- const base::FilePath side_effect_free_whitelist_filename =
- SideEffectFreeWhitelistDBFilename(filename_base_);
- const base::FilePath side_effect_free_whitelist_prefix_set_filename =
- PrefixSetForFilename(side_effect_free_whitelist_filename);
- const base::TimeTicks before = base::TimeTicks::Now();
- const bool write_ok = side_effect_free_whitelist_prefix_set_->WriteFile(
- side_effect_free_whitelist_prefix_set_filename);
- UMA_HISTOGRAM_TIMES("SB2.SideEffectFreePrefixSetWrite",
- base::TimeTicks::Now() - before);
-
- if (!write_ok)
- RecordFailure(FAILURE_SIDE_EFFECT_FREE_WHITELIST_PREFIX_SET_WRITE);
-
- // Gather statistics.
- int64 file_size = GetFileSizeOrZero(
- side_effect_free_whitelist_prefix_set_filename);
- UMA_HISTOGRAM_COUNTS("SB2.SideEffectFreeWhitelistPrefixSetKilobytes",
- static_cast<int>(file_size / 1024));
- file_size = GetFileSizeOrZero(side_effect_free_whitelist_filename);
- UMA_HISTOGRAM_COUNTS("SB2.SideEffectFreeWhitelistDatabaseKilobytes",
- static_cast<int>(file_size / 1024));
-
-#if defined(OS_MACOSX)
- base::mac::SetFileBackupExclusion(side_effect_free_whitelist_filename);
- base::mac::SetFileBackupExclusion(
- side_effect_free_whitelist_prefix_set_filename);
-#endif
-}
-
void SafeBrowsingDatabaseNew::UpdateIpBlacklistStore() {
DCHECK(thread_checker_.CalledOnValidThread());

Powered by Google App Engine
This is Rietveld 408576698