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

Unified Diff: chrome/browser/extensions/api/declarative/rules_registry.h

Issue 53273002: Decouple RulesCacheDelegate from RulesRegistry (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@refactor_rules_registry_with_cache
Patch Set: Updated Created 7 years, 1 month 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/extensions/api/declarative/rules_registry.h
diff --git a/chrome/browser/extensions/api/declarative/rules_registry.h b/chrome/browser/extensions/api/declarative/rules_registry.h
index c8546cc52659f6d5eb7b33b99554e3895f70b90e..f877a656dfb5587cd172fd546f7862ecefd436f9 100644
--- a/chrome/browser/extensions/api/declarative/rules_registry.h
+++ b/chrome/browser/extensions/api/declarative/rules_registry.h
@@ -44,16 +44,13 @@ class RulesRegistry : public base::RefCountedThreadSafe<RulesRegistry> {
enum Defaults { DEFAULT_PRIORITY = 100 };
// After the RulesCacheDelegate object (the part of the registry which runs on
// the UI thread) is created, a pointer to it is passed to |*ui_part|.
- // If |log_storage_init_delay| is set, the delay caused by loading and
- // registering rules on initialization will be logged with UMA.
// In tests, |profile| and |ui_part| can be NULL (at the same time). In that
// case the storage functionality disabled (no RulesCacheDelegate object
- // created) and the |log_storage_init_delay| flag is ignored.
+ // created).
RulesRegistry(Profile* profile,
const std::string& event_name,
content::BrowserThread::ID owner_thread,
- bool log_storage_init_delay,
- scoped_ptr<RulesCacheDelegate>* ui_part);
+ RulesCacheDelegate* cache_delegate);
const OneShotEvent& ready() const {
return ready_;
@@ -123,6 +120,9 @@ class RulesRegistry : public base::RefCountedThreadSafe<RulesRegistry> {
// Every ExtensionId counts as one entry, even if it contains no rules.
size_t GetNumberOfUsedRuleIdentifiersForTesting() const;
+ // Returns the profile where the rules registry lives.
+ Profile* profile() const { return profile_; }
+
// Returns the ID of the thread on which the rules registry lives.
// It is safe to call this function from any thread.
content::BrowserThread::ID owner_thread() const { return owner_thread_; }
@@ -164,6 +164,11 @@ class RulesRegistry : public base::RefCountedThreadSafe<RulesRegistry> {
NOT_SCHEDULED_FOR_PROCESSING
};
+ base::WeakPtr<RulesRegistry> GetWeakPtr() {
+ DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::UI));
+ return weak_ptr_factory_.GetWeakPtr();
+ }
+
// Common processing after extension's rules have changed.
void ProcessChangedRules(const std::string& extension_id);
@@ -171,7 +176,6 @@ class RulesRegistry : public base::RefCountedThreadSafe<RulesRegistry> {
// NOT_SCHEDULED_FOR_PROCESSING.
void MaybeProcessChangedRules(const std::string& extension_id);
- // Process the callbacks once the registry gets ready.
void MarkReady(base::Time storage_init_time);
// Deserialize the rules from the given Value object and add them to the
@@ -179,6 +183,8 @@ class RulesRegistry : public base::RefCountedThreadSafe<RulesRegistry> {
void DeserializeAndAddRules(const std::string& extension_id,
scoped_ptr<base::Value> rules);
+ // The profile to which this rules registry belongs.
+ Profile* profile_;
// The ID of the thread on which the rules registry lives.
const content::BrowserThread::ID owner_thread_;
@@ -203,7 +209,7 @@ class RulesRegistry : public base::RefCountedThreadSafe<RulesRegistry> {
// destroyed on its thread, the use of the |cache_delegate_| would not be
// safe. The registry only ever associates with one RulesCacheDelegate
// instance.
- const base::WeakPtr<RulesCacheDelegate> cache_delegate_;
+ base::WeakPtr<RulesCacheDelegate> cache_delegate_;
ProcessChangedRulesState process_changed_rules_requested_;

Powered by Google App Engine
This is Rietveld 408576698