Index: net/base/sdch_manager.cc |
diff --git a/net/base/sdch_manager.cc b/net/base/sdch_manager.cc |
index aef04f6c31d94a3405d62b74dab324a66d4591db..dd2b9ae087c86dc67f853ed385f58838db941526 100644 |
--- a/net/base/sdch_manager.cc |
+++ b/net/base/sdch_manager.cc |
@@ -206,11 +206,13 @@ bool SdchManager::Dictionary::DomainMatch(const GURL& gurl, |
//------------------------------------------------------------------------------ |
SdchManager::SdchManager() { |
DCHECK(!global_); |
+ DCHECK(CalledOnValidThread()); |
global_ = this; |
} |
SdchManager::~SdchManager() { |
DCHECK_EQ(this, global_); |
+ DCHECK(CalledOnValidThread()); |
while (!dictionaries_.empty()) { |
DictionaryMap::iterator it = dictionaries_.begin(); |
it->second->Release(); |
@@ -224,7 +226,7 @@ void SdchManager::Shutdown() { |
EnableSdchSupport(false); |
if (!global_ ) |
return; |
- global_->fetcher_.reset(NULL); |
+ global_->set_sdch_fetcher(NULL); |
} |
// static |
@@ -237,6 +239,11 @@ void SdchManager::SdchErrorRecovery(ProblemCodes problem) { |
UMA_HISTOGRAM_ENUMERATION("Sdch3.ProblemCodes_4", problem, MAX_PROBLEM_CODE); |
} |
+void SdchManager::set_sdch_fetcher(SdchFetcher* fetcher) { |
+ DCHECK(CalledOnValidThread()); |
+ fetcher_.reset(fetcher); |
+} |
+ |
// static |
void SdchManager::EnableSdchSupport(bool enabled) { |
g_sdch_enabled_ = enabled; |
@@ -301,6 +308,7 @@ int SdchManager::BlacklistDomainExponential(const std::string& domain) { |
} |
bool SdchManager::IsInSupportedDomain(const GURL& url) { |
+ DCHECK(CalledOnValidThread()); |
if (!g_sdch_enabled_ ) |
return false; |
@@ -323,6 +331,7 @@ bool SdchManager::IsInSupportedDomain(const GURL& url) { |
void SdchManager::FetchDictionary(const GURL& request_url, |
const GURL& dictionary_url) { |
+ DCHECK(CalledOnValidThread()); |
if (SdchManager::Global()->CanFetchDictionary(request_url, dictionary_url) && |
fetcher_.get()) |
fetcher_->Schedule(dictionary_url); |
@@ -330,6 +339,7 @@ void SdchManager::FetchDictionary(const GURL& request_url, |
bool SdchManager::CanFetchDictionary(const GURL& referring_url, |
const GURL& dictionary_url) const { |
+ DCHECK(CalledOnValidThread()); |
/* The user agent may retrieve a dictionary from the dictionary URL if all of |
the following are true: |
1 The dictionary URL host name matches the referrer URL host name |
@@ -362,6 +372,7 @@ bool SdchManager::CanFetchDictionary(const GURL& referring_url, |
bool SdchManager::AddSdchDictionary(const std::string& dictionary_text, |
const GURL& dictionary_url) { |
+ DCHECK(CalledOnValidThread()); |
std::string client_hash; |
std::string server_hash; |
GenerateHash(dictionary_text, &client_hash, &server_hash); |
@@ -460,6 +471,7 @@ bool SdchManager::AddSdchDictionary(const std::string& dictionary_text, |
void SdchManager::GetVcdiffDictionary(const std::string& server_hash, |
const GURL& referring_url, Dictionary** dictionary) { |
+ DCHECK(CalledOnValidThread()); |
*dictionary = NULL; |
DictionaryMap::iterator it = dictionaries_.find(server_hash); |
if (it == dictionaries_.end()) { |
@@ -476,6 +488,7 @@ void SdchManager::GetVcdiffDictionary(const std::string& server_hash, |
// instances that can be used if/when a server specifies one. |
void SdchManager::GetAvailDictionaryList(const GURL& target_url, |
std::string* list) { |
+ DCHECK(CalledOnValidThread()); |
int count = 0; |
for (DictionaryMap::iterator it = dictionaries_.begin(); |
it != dictionaries_.end(); ++it) { |
@@ -510,11 +523,13 @@ void SdchManager::GenerateHash(const std::string& dictionary_text, |
// Methods for supporting latency experiments. |
bool SdchManager::AllowLatencyExperiment(const GURL& url) const { |
+ DCHECK(CalledOnValidThread()); |
return allow_latency_experiment_.end() != |
allow_latency_experiment_.find(url.host()); |
} |
void SdchManager::SetAllowLatencyExperiment(const GURL& url, bool enable) { |
+ DCHECK(CalledOnValidThread()); |
if (enable) { |
allow_latency_experiment_.insert(url.host()); |
return; |