| Index: extensions/browser/api/declarative/rules_registry.h
|
| diff --git a/extensions/browser/api/declarative/rules_registry.h b/extensions/browser/api/declarative/rules_registry.h
|
| index 34ad7acfc8191ed0b54d42d50238965c2bc0a7fd..94213622a3937ec6a341165ee8b9203fd3ff3090 100644
|
| --- a/extensions/browser/api/declarative/rules_registry.h
|
| +++ b/extensions/browser/api/declarative/rules_registry.h
|
| @@ -31,6 +31,7 @@ class Value;
|
|
|
| namespace extensions {
|
|
|
| +class Extension;
|
| class RulesCacheDelegate;
|
|
|
| // A base class for RulesRegistries that takes care of storing the
|
| @@ -110,9 +111,9 @@ class RulesRegistry : public base::RefCountedThreadSafe<RulesRegistry> {
|
|
|
| // Called to notify the RulesRegistry that the extension availability has
|
| // changed, so that the registry can update which rules are active.
|
| - void OnExtensionUnloaded(const std::string& extension_id);
|
| - void OnExtensionUninstalled(const std::string& extension_id);
|
| - void OnExtensionLoaded(const std::string& extension_id);
|
| + void OnExtensionUnloaded(const Extension* extension);
|
| + void OnExtensionUninstalled(const Extension* extension);
|
| + void OnExtensionLoaded(const Extension* extension);
|
|
|
| // Returns the number of entries in used_rule_identifiers_ for leak detection.
|
| // Every ExtensionId counts as one entry, even if it contains no rules.
|
| @@ -139,17 +140,6 @@ class RulesRegistry : public base::RefCountedThreadSafe<RulesRegistry> {
|
| protected:
|
| virtual ~RulesRegistry();
|
|
|
| - // The precondition for calling this method is that all rules have unique IDs.
|
| - // AddRules establishes this precondition and calls into this method.
|
| - // Stored rules already meet this precondition and so they avoid calling
|
| - // CheckAndFillInOptionalRules for improved performance.
|
| - //
|
| - // Returns an empty string if the function is successful or an error
|
| - // message otherwise.
|
| - std::string AddRulesNoFill(
|
| - const std::string& extension_id,
|
| - const std::vector<linked_ptr<RulesRegistry::Rule> >& rules);
|
| -
|
| // These functions need to apply the rules to the browser, while the base
|
| // class will handle defaulting empty fields before calling *Impl, and will
|
| // automatically cache the rules and re-call *Impl on browser startup.
|
| @@ -187,6 +177,31 @@ class RulesRegistry : public base::RefCountedThreadSafe<RulesRegistry> {
|
| return weak_ptr_factory_.GetWeakPtr();
|
| }
|
|
|
| + // Internal implementation of the AddRules interface which adds
|
| + // |from_manifest| which is true when the source is the manifest.
|
| + std::string AddRulesInternal(
|
| + const std::string& extension_id,
|
| + const std::vector<linked_ptr<RulesRegistry::Rule>>& rules,
|
| + RulesDictionary* out);
|
| +
|
| + // The precondition for calling this method is that all rules have unique IDs.
|
| + // AddRules establishes this precondition and calls into this method.
|
| + // Stored rules already meet this precondition and so they avoid calling
|
| + // CheckAndFillInOptionalRules for improved performance.
|
| + //
|
| + // Returns an empty string if the function is successful or an error
|
| + // message otherwise.
|
| + std::string AddRulesNoFill(
|
| + const std::string& extension_id,
|
| + const std::vector<linked_ptr<RulesRegistry::Rule>>& rules,
|
| + RulesDictionary* out);
|
| +
|
| + // Same as GetRules but returns all rules owned by |extension_id| for a given
|
| + // |rules| dictionary.
|
| + void GetRules(const std::string& extension_id,
|
| + RulesDictionary& rules,
|
| + std::vector<linked_ptr<RulesRegistry::Rule>>* out);
|
| +
|
| // Common processing after extension's rules have changed.
|
| void ProcessChangedRules(const std::string& extension_id);
|
|
|
| @@ -199,7 +214,10 @@ class RulesRegistry : public base::RefCountedThreadSafe<RulesRegistry> {
|
| // calling MaybeProcessChangedRules. That way updating the rules store and
|
| // extension prefs is avoided. This method is called when an extension is
|
| // uninstalled, that way there is no clash with the preferences being wiped.
|
| - std::string RemoveAllRulesNoStoreUpdate(const std::string& extension_id);
|
| + // Set |remove_manifest_rules| to true if |manifest_rules_| should be cleared
|
| + // along with |rules_|.
|
| + std::string RemoveAllRulesNoStoreUpdate(const std::string& extension_id,
|
| + bool remove_manifest_rules);
|
|
|
| void MarkReady(base::Time storage_init_time);
|
|
|
| @@ -222,6 +240,8 @@ class RulesRegistry : public base::RefCountedThreadSafe<RulesRegistry> {
|
|
|
| RulesDictionary rules_;
|
|
|
| + RulesDictionary manifest_rules_;
|
| +
|
| // Signaled when we have finished reading from storage for all extensions that
|
| // are loaded on startup.
|
| OneShotEvent ready_;
|
|
|