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

Side by Side Diff: chrome/browser/extensions/api/declarative_content/chrome_content_rules_registry.h

Issue 1871713002: Convert //chrome/browser/extensions from scoped_ptr to std::unique_ptr (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebase and fix header Created 4 years, 8 months 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 unified diff | Download patch
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #ifndef CHROME_BROWSER_EXTENSIONS_API_DECLARATIVE_CONTENT_CHROME_CONTENT_RULES_R EGISTRY_H_ 5 #ifndef CHROME_BROWSER_EXTENSIONS_API_DECLARATIVE_CONTENT_CHROME_CONTENT_RULES_R EGISTRY_H_
6 #define CHROME_BROWSER_EXTENSIONS_API_DECLARATIVE_CONTENT_CHROME_CONTENT_RULES_R EGISTRY_H_ 6 #define CHROME_BROWSER_EXTENSIONS_API_DECLARATIVE_CONTENT_CHROME_CONTENT_RULES_R EGISTRY_H_
7 7
8 #include <stddef.h> 8 #include <stddef.h>
9 9
10 #include <map> 10 #include <map>
11 #include <memory>
11 #include <set> 12 #include <set>
12 #include <string> 13 #include <string>
13 #include <utility> 14 #include <utility>
14 #include <vector> 15 #include <vector>
15 16
16 #include "base/callback.h" 17 #include "base/callback.h"
17 #include "base/macros.h" 18 #include "base/macros.h"
18 #include "base/memory/linked_ptr.h" 19 #include "base/memory/linked_ptr.h"
19 #include "base/memory/scoped_ptr.h"
20 #include "chrome/browser/extensions/api/declarative_content/content_action.h" 20 #include "chrome/browser/extensions/api/declarative_content/content_action.h"
21 #include "chrome/browser/extensions/api/declarative_content/content_condition.h" 21 #include "chrome/browser/extensions/api/declarative_content/content_condition.h"
22 #include "chrome/browser/extensions/api/declarative_content/content_predicate_ev aluator.h" 22 #include "chrome/browser/extensions/api/declarative_content/content_predicate_ev aluator.h"
23 #include "content/public/browser/notification_observer.h" 23 #include "content/public/browser/notification_observer.h"
24 #include "content/public/browser/notification_registrar.h" 24 #include "content/public/browser/notification_registrar.h"
25 #include "extensions/browser/api/declarative_content/content_rules_registry.h" 25 #include "extensions/browser/api/declarative_content/content_rules_registry.h"
26 #include "extensions/common/extension.h" 26 #include "extensions/common/extension.h"
27 27
28 namespace content { 28 namespace content {
29 class BrowserContext; 29 class BrowserContext;
(...skipping 19 matching lines...) Expand all
49 // however, is only responsible for applying rules registered by the incognito 49 // however, is only responsible for applying rules registered by the incognito
50 // side of split-mode extensions to incognito tabs. The non-incognito instance 50 // side of split-mode extensions to incognito tabs. The non-incognito instance
51 // handles incognito tabs for spanning-mode extensions, plus all non-incognito 51 // handles incognito tabs for spanning-mode extensions, plus all non-incognito
52 // tabs. 52 // tabs.
53 class ChromeContentRulesRegistry 53 class ChromeContentRulesRegistry
54 : public ContentRulesRegistry, 54 : public ContentRulesRegistry,
55 public content::NotificationObserver, 55 public content::NotificationObserver,
56 public ContentPredicateEvaluator::Delegate { 56 public ContentPredicateEvaluator::Delegate {
57 public: 57 public:
58 using PredicateEvaluatorsFactory = 58 using PredicateEvaluatorsFactory =
59 base::Callback<std::vector<scoped_ptr<ContentPredicateEvaluator>>( 59 base::Callback<std::vector<std::unique_ptr<ContentPredicateEvaluator>>(
60 ContentPredicateEvaluator::Delegate*)>; 60 ContentPredicateEvaluator::Delegate*)>;
61 61
62 // For testing, |cache_delegate| can be NULL. In that case it constructs the 62 // For testing, |cache_delegate| can be NULL. In that case it constructs the
63 // registry with storage functionality suspended. 63 // registry with storage functionality suspended.
64 ChromeContentRulesRegistry( 64 ChromeContentRulesRegistry(
65 content::BrowserContext* browser_context, 65 content::BrowserContext* browser_context,
66 RulesCacheDelegate* cache_delegate, 66 RulesCacheDelegate* cache_delegate,
67 const PredicateEvaluatorsFactory& evaluators_factory); 67 const PredicateEvaluatorsFactory& evaluators_factory);
68 68
69 // ContentRulesRegistry: 69 // ContentRulesRegistry:
(...skipping 28 matching lines...) Expand all
98 98
99 protected: 99 protected:
100 ~ChromeContentRulesRegistry() override; 100 ~ChromeContentRulesRegistry() override;
101 101
102 private: 102 private:
103 // The internal declarative rule representation. Corresponds to a declarative 103 // The internal declarative rule representation. Corresponds to a declarative
104 // API rule: https://developer.chrome.com/extensions/events.html#declarative. 104 // API rule: https://developer.chrome.com/extensions/events.html#declarative.
105 struct ContentRule { 105 struct ContentRule {
106 public: 106 public:
107 ContentRule(const Extension* extension, 107 ContentRule(const Extension* extension,
108 std::vector<scoped_ptr<const ContentCondition>> conditions, 108 std::vector<std::unique_ptr<const ContentCondition>> conditions,
109 std::vector<scoped_ptr<const ContentAction>> actions, 109 std::vector<std::unique_ptr<const ContentAction>> actions,
110 int priority); 110 int priority);
111 ~ContentRule(); 111 ~ContentRule();
112 112
113 const Extension* extension; 113 const Extension* extension;
114 std::vector<scoped_ptr<const ContentCondition>> conditions; 114 std::vector<std::unique_ptr<const ContentCondition>> conditions;
115 std::vector<scoped_ptr<const ContentAction>> actions; 115 std::vector<std::unique_ptr<const ContentAction>> actions;
116 int priority; 116 int priority;
117 117
118 private: 118 private:
119 DISALLOW_COPY_AND_ASSIGN(ContentRule); 119 DISALLOW_COPY_AND_ASSIGN(ContentRule);
120 }; 120 };
121 121
122 // Specifies what to do with evaluation requests. 122 // Specifies what to do with evaluation requests.
123 // TODO(wittman): Try to eliminate the need for IGNORE after refactoring to 123 // TODO(wittman): Try to eliminate the need for IGNORE after refactoring to
124 // treat all condition evaluation consistently. 124 // treat all condition evaluation consistently.
125 enum EvaluationDisposition { 125 enum EvaluationDisposition {
126 EVALUATE_REQUESTS, // Evaluate immediately. 126 EVALUATE_REQUESTS, // Evaluate immediately.
127 DEFER_REQUESTS, // Defer for later evaluation. 127 DEFER_REQUESTS, // Defer for later evaluation.
128 IGNORE_REQUESTS // Ignore. 128 IGNORE_REQUESTS // Ignore.
129 }; 129 };
130 130
131 class EvaluationScope; 131 class EvaluationScope;
132 132
133 // Creates a ContentRule for |extension| given a json definition. The format 133 // Creates a ContentRule for |extension| given a json definition. The format
134 // of each condition and action's json is up to the specific ContentCondition 134 // of each condition and action's json is up to the specific ContentCondition
135 // and ContentAction. |extension| may be NULL in tests. If |error| is empty, 135 // and ContentAction. |extension| may be NULL in tests. If |error| is empty,
136 // the translation was successful and the returned rule is internally 136 // the translation was successful and the returned rule is internally
137 // consistent. 137 // consistent.
138 scoped_ptr<const ContentRule> CreateRule( 138 std::unique_ptr<const ContentRule> CreateRule(
139 const Extension* extension, 139 const Extension* extension,
140 const std::map<std::string, ContentPredicateFactory*>& 140 const std::map<std::string, ContentPredicateFactory*>&
141 predicate_factories, 141 predicate_factories,
142 const api::events::Rule& api_rule, 142 const api::events::Rule& api_rule,
143 std::string* error); 143 std::string* error);
144 144
145 // True if this object is managing the rules for |context|. 145 // True if this object is managing the rules for |context|.
146 bool ManagingRulesForBrowserContext(content::BrowserContext* context); 146 bool ManagingRulesForBrowserContext(content::BrowserContext* context);
147 147
148 // True if |condition| matches on |tab|. 148 // True if |condition| matches on |tab|.
(...skipping 19 matching lines...) Expand all
168 RulesMap content_rules_; 168 RulesMap content_rules_;
169 169
170 // Maps a WebContents to the set of rules that match on that WebContents. 170 // Maps a WebContents to the set of rules that match on that WebContents.
171 // This lets us call Revert as appropriate. Note that this is expected to have 171 // This lets us call Revert as appropriate. Note that this is expected to have
172 // a key-value pair for every WebContents the registry is tracking, even if 172 // a key-value pair for every WebContents the registry is tracking, even if
173 // the value is the empty set. 173 // the value is the empty set.
174 std::map<content::WebContents*, std::set<const ContentRule*>> active_rules_; 174 std::map<content::WebContents*, std::set<const ContentRule*>> active_rules_;
175 175
176 // The evaluators responsible for creating predicates and tracking 176 // The evaluators responsible for creating predicates and tracking
177 // predicate-related state. 177 // predicate-related state.
178 std::vector<scoped_ptr<ContentPredicateEvaluator>> evaluators_; 178 std::vector<std::unique_ptr<ContentPredicateEvaluator>> evaluators_;
179 179
180 // Specifies what to do with evaluation requests. 180 // Specifies what to do with evaluation requests.
181 EvaluationDisposition evaluation_disposition_; 181 EvaluationDisposition evaluation_disposition_;
182 182
183 // Contains WebContents which require rule evaluation. Only used while 183 // Contains WebContents which require rule evaluation. Only used while
184 // |evaluation_disposition_| is DEFER. 184 // |evaluation_disposition_| is DEFER.
185 std::set<content::WebContents*> evaluation_pending_; 185 std::set<content::WebContents*> evaluation_pending_;
186 186
187 // Manages our notification registrations. 187 // Manages our notification registrations.
188 content::NotificationRegistrar registrar_; 188 content::NotificationRegistrar registrar_;
189 189
190 DISALLOW_COPY_AND_ASSIGN(ChromeContentRulesRegistry); 190 DISALLOW_COPY_AND_ASSIGN(ChromeContentRulesRegistry);
191 }; 191 };
192 192
193 } // namespace extensions 193 } // namespace extensions
194 194
195 #endif // CHROME_BROWSER_EXTENSIONS_API_DECLARATIVE_CONTENT_CHROME_CONTENT_RULE S_REGISTRY_H_ 195 #endif // CHROME_BROWSER_EXTENSIONS_API_DECLARATIVE_CONTENT_CHROME_CONTENT_RULE S_REGISTRY_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698