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

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

Issue 744183002: More explicit thread checking in SafeBrowsingDatabase. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@a3_deadcode
Patch Set: 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_store_file.cc
diff --git a/chrome/browser/safe_browsing/safe_browsing_store_file.cc b/chrome/browser/safe_browsing/safe_browsing_store_file.cc
index 298d42dd5bca5d683ffbbedc9c87635ec3e9f412..48d01474e6f7dd02fdfd96d39a276603cbb5d703 100644
--- a/chrome/browser/safe_browsing/safe_browsing_store_file.cc
+++ b/chrome/browser/safe_browsing/safe_browsing_store_file.cc
@@ -558,10 +558,13 @@ SafeBrowsingStoreFile::SafeBrowsingStoreFile()
: chunks_written_(0), empty_(false), corruption_seen_(false) {}
SafeBrowsingStoreFile::~SafeBrowsingStoreFile() {
+ DCHECK(CalledOnValidThread());
Close();
}
bool SafeBrowsingStoreFile::Delete() {
+ DCHECK(CalledOnValidThread());
+
// The database should not be open at this point. But, just in
// case, close everything before deleting.
if (!Close()) {
@@ -573,6 +576,8 @@ bool SafeBrowsingStoreFile::Delete() {
}
bool SafeBrowsingStoreFile::CheckValidity() {
+ DCHECK(CalledOnValidThread());
+
// The file was either empty or never opened. The empty case is
// presumed not to be invalid. The never-opened case can happen if
// BeginUpdate() fails for any databases, and should already have
@@ -620,20 +625,25 @@ bool SafeBrowsingStoreFile::CheckValidity() {
void SafeBrowsingStoreFile::Init(const base::FilePath& filename,
const base::Closure& corruption_callback) {
+ DCHECK(CalledOnValidThread());
filename_ = filename;
corruption_callback_ = corruption_callback;
}
bool SafeBrowsingStoreFile::BeginChunk() {
+ DCHECK(CalledOnValidThread());
return ClearChunkBuffers();
}
bool SafeBrowsingStoreFile::WriteAddPrefix(int32 chunk_id, SBPrefix prefix) {
+ DCHECK(CalledOnValidThread());
add_prefixes_.push_back(SBAddPrefix(chunk_id, prefix));
return true;
}
bool SafeBrowsingStoreFile::GetAddPrefixes(SBAddPrefixes* add_prefixes) {
+ DCHECK(CalledOnValidThread());
+
add_prefixes->clear();
if (!base::PathExists(filename_))
return true;
@@ -648,6 +658,8 @@ bool SafeBrowsingStoreFile::GetAddPrefixes(SBAddPrefixes* add_prefixes) {
bool SafeBrowsingStoreFile::GetAddFullHashes(
std::vector<SBAddFullHash>* add_full_hashes) {
+ DCHECK(CalledOnValidThread());
+
add_full_hashes->clear();
if (!base::PathExists(filename_))
return true;
@@ -662,6 +674,7 @@ bool SafeBrowsingStoreFile::GetAddFullHashes(
bool SafeBrowsingStoreFile::WriteAddHash(int32 chunk_id,
const SBFullHash& full_hash) {
+ DCHECK(CalledOnValidThread());
add_hashes_.push_back(SBAddFullHash(chunk_id, full_hash));
return true;
}
@@ -669,17 +682,21 @@ bool SafeBrowsingStoreFile::WriteAddHash(int32 chunk_id,
bool SafeBrowsingStoreFile::WriteSubPrefix(int32 chunk_id,
int32 add_chunk_id,
SBPrefix prefix) {
+ DCHECK(CalledOnValidThread());
sub_prefixes_.push_back(SBSubPrefix(chunk_id, add_chunk_id, prefix));
return true;
}
bool SafeBrowsingStoreFile::WriteSubHash(int32 chunk_id, int32 add_chunk_id,
const SBFullHash& full_hash) {
+ DCHECK(CalledOnValidThread());
sub_hashes_.push_back(SBSubFullHash(chunk_id, add_chunk_id, full_hash));
return true;
}
bool SafeBrowsingStoreFile::OnCorruptDatabase() {
+ DCHECK(CalledOnValidThread());
+
if (!corruption_seen_)
RecordFormatEvent(FORMAT_EVENT_FILE_CORRUPT);
corruption_seen_ = true;
@@ -691,6 +708,8 @@ bool SafeBrowsingStoreFile::OnCorruptDatabase() {
}
bool SafeBrowsingStoreFile::Close() {
+ DCHECK(CalledOnValidThread());
+
ClearUpdateBuffers();
// Make sure the files are closed.
@@ -700,6 +719,7 @@ bool SafeBrowsingStoreFile::Close() {
}
bool SafeBrowsingStoreFile::BeginUpdate() {
+ DCHECK(CalledOnValidThread());
DCHECK(!file_.get() && !new_file_.get());
// Structures should all be clear unless something bad happened.
@@ -761,6 +781,8 @@ bool SafeBrowsingStoreFile::BeginUpdate() {
}
bool SafeBrowsingStoreFile::FinishChunk() {
+ DCHECK(CalledOnValidThread());
+
if (!add_prefixes_.size() && !sub_prefixes_.size() &&
!add_hashes_.size() && !sub_hashes_.size())
return true;
@@ -788,6 +810,7 @@ bool SafeBrowsingStoreFile::FinishChunk() {
bool SafeBrowsingStoreFile::DoUpdate(
safe_browsing::PrefixSetBuilder* builder,
std::vector<SBAddFullHash>* add_full_hashes_result) {
+ DCHECK(CalledOnValidThread());
DCHECK(file_.get() || empty_);
DCHECK(new_file_.get());
CHECK(builder);
@@ -1035,6 +1058,7 @@ bool SafeBrowsingStoreFile::DoUpdate(
bool SafeBrowsingStoreFile::FinishUpdate(
safe_browsing::PrefixSetBuilder* builder,
std::vector<SBAddFullHash>* add_full_hashes_result) {
+ DCHECK(CalledOnValidThread());
DCHECK(builder);
DCHECK(add_full_hashes_result);
@@ -1050,6 +1074,7 @@ bool SafeBrowsingStoreFile::FinishUpdate(
}
bool SafeBrowsingStoreFile::CancelUpdate() {
+ DCHECK(CalledOnValidThread());
bool ret = Close();
// Delete stale staging file.
@@ -1060,36 +1085,44 @@ bool SafeBrowsingStoreFile::CancelUpdate() {
}
void SafeBrowsingStoreFile::SetAddChunk(int32 chunk_id) {
+ DCHECK(CalledOnValidThread());
add_chunks_cache_.insert(chunk_id);
}
bool SafeBrowsingStoreFile::CheckAddChunk(int32 chunk_id) {
+ DCHECK(CalledOnValidThread());
return add_chunks_cache_.count(chunk_id) > 0;
}
void SafeBrowsingStoreFile::GetAddChunks(std::vector<int32>* out) {
+ DCHECK(CalledOnValidThread());
out->clear();
out->insert(out->end(), add_chunks_cache_.begin(), add_chunks_cache_.end());
}
void SafeBrowsingStoreFile::SetSubChunk(int32 chunk_id) {
+ DCHECK(CalledOnValidThread());
sub_chunks_cache_.insert(chunk_id);
}
bool SafeBrowsingStoreFile::CheckSubChunk(int32 chunk_id) {
+ DCHECK(CalledOnValidThread());
return sub_chunks_cache_.count(chunk_id) > 0;
}
void SafeBrowsingStoreFile::GetSubChunks(std::vector<int32>* out) {
+ DCHECK(CalledOnValidThread());
out->clear();
out->insert(out->end(), sub_chunks_cache_.begin(), sub_chunks_cache_.end());
}
void SafeBrowsingStoreFile::DeleteAddChunk(int32 chunk_id) {
+ DCHECK(CalledOnValidThread());
add_del_cache_.insert(chunk_id);
}
void SafeBrowsingStoreFile::DeleteSubChunk(int32 chunk_id) {
+ DCHECK(CalledOnValidThread());
sub_del_cache_.insert(chunk_id);
}

Powered by Google App Engine
This is Rietveld 408576698