Index: chrome/browser/extensions/api/declarative/rules_registry.cc |
diff --git a/chrome/browser/extensions/api/declarative/rules_registry.cc b/chrome/browser/extensions/api/declarative/rules_registry.cc |
index 306266e3e219e97f5f7759bd1ff264cd12f51161..ca4a440a32b682691ac6deffd95a926142c888f0 100644 |
--- a/chrome/browser/extensions/api/declarative/rules_registry.cc |
+++ b/chrome/browser/extensions/api/declarative/rules_registry.cc |
@@ -86,14 +86,13 @@ RulesRegistry::RulesRegistry( |
weak_ptr_factory_(profile ? this : NULL), |
last_generated_rule_identifier_id_(0) { |
if (cache_delegate) { |
+ ready_.reset(new OneShotEvent); |
cache_delegate_ = cache_delegate->GetWeakPtr(); |
cache_delegate->Init(this); |
- } else { |
- content::BrowserThread::PostTask( |
- owner_thread, |
- FROM_HERE, |
- base::Bind(&RulesRegistry::MarkReady, this, base::Time::Now())); |
Jeffrey Yasskin
2013/12/17 22:55:05
Would this CL be simpler if you just called ready_
vabr (Chromium)
2013/12/18 12:01:51
I'm afraid calling ready_.Signal() here would lead
|
} |
+ // Note that if |cache_delegate| is NULL, the Rulesregistry never signals its |
Jeffrey Yasskin
2013/12/17 22:55:05
capitalization: RulesRegistry
vabr (Chromium)
2013/12/18 12:01:51
Done.
|
+ // |ready_| event. That's OK, because that event is only ever needed by the |
+ // cache delegate. |
} |
std::string RulesRegistry::AddRulesNoFill( |
@@ -272,7 +271,7 @@ void RulesRegistry::MarkReady(base::Time storage_init_time) { |
base::Time::Now() - storage_init_time); |
} |
- ready_.Signal(); |
+ ready_->Signal(); |
} |
void RulesRegistry::ProcessChangedRules(const std::string& extension_id) { |
@@ -296,18 +295,19 @@ void RulesRegistry::MaybeProcessChangedRules(const std::string& extension_id) { |
// Read and initialize |process_changed_rules_requested_[extension_id]| if |
// necessary. (Note that the insertion below will not overwrite |
// |process_changed_rules_requested_[extension_id]| if that already exists. |
+ bool processing_needed = profile_ && ready_; |
std::pair<ProcessStateMap::iterator, bool> insertion = |
process_changed_rules_requested_.insert(std::make_pair( |
extension_id, |
- profile_ ? NOT_SCHEDULED_FOR_PROCESSING : NEVER_PROCESS)); |
+ processing_needed ? NOT_SCHEDULED_FOR_PROCESSING : NEVER_PROCESS)); |
if (insertion.first->second != NOT_SCHEDULED_FOR_PROCESSING) |
return; |
process_changed_rules_requested_[extension_id] = SCHEDULED_FOR_PROCESSING; |
- ready_.Post(FROM_HERE, |
- base::Bind(&RulesRegistry::ProcessChangedRules, |
- weak_ptr_factory_.GetWeakPtr(), |
- extension_id)); |
+ ready_->Post(FROM_HERE, |
+ base::Bind(&RulesRegistry::ProcessChangedRules, |
+ weak_ptr_factory_.GetWeakPtr(), |
+ extension_id)); |
} |
bool RulesRegistry::IsUniqueId(const std::string& extension_id, |