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

Side by Side Diff: extensions/browser/api/declarative/rules_registry.h

Issue 764643002: Remove WebViewKey in rules registry. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Nits. Created 6 years 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 EXTENSIONS_BROWSER_API_DECLARATIVE_RULES_REGISTRY_H__ 5 #ifndef EXTENSIONS_BROWSER_API_DECLARATIVE_RULES_REGISTRY_H__
6 #define EXTENSIONS_BROWSER_API_DECLARATIVE_RULES_REGISTRY_H__ 6 #define EXTENSIONS_BROWSER_API_DECLARATIVE_RULES_REGISTRY_H__
7 7
8 #include <map> 8 #include <map>
9 #include <set> 9 #include <set>
10 #include <string> 10 #include <string>
(...skipping 22 matching lines...) Expand all
33 33
34 class RulesCacheDelegate; 34 class RulesCacheDelegate;
35 35
36 // A base class for RulesRegistries that takes care of storing the 36 // A base class for RulesRegistries that takes care of storing the
37 // RulesRegistry::Rule objects. It contains all the methods that need to run on 37 // RulesRegistry::Rule objects. It contains all the methods that need to run on
38 // the registry thread; methods that need to run on the UI thread are separated 38 // the registry thread; methods that need to run on the UI thread are separated
39 // in the RulesCacheDelegate object. 39 // in the RulesCacheDelegate object.
40 class RulesRegistry : public base::RefCountedThreadSafe<RulesRegistry> { 40 class RulesRegistry : public base::RefCountedThreadSafe<RulesRegistry> {
41 public: 41 public:
42 typedef extensions::core_api::events::Rule Rule; 42 typedef extensions::core_api::events::Rule Rule;
43 struct WebViewKey {
44 int embedder_process_id;
45 int webview_instance_id;
46 WebViewKey(int embedder_process_id, int webview_instance_id)
47 : embedder_process_id(embedder_process_id),
48 webview_instance_id(webview_instance_id) {}
49 bool operator<(const WebViewKey& other) const {
50 return embedder_process_id < other.embedder_process_id ||
51 ((embedder_process_id == other.embedder_process_id) &&
52 (webview_instance_id < other.webview_instance_id));
53 }
54 };
55 43
56 enum Defaults { DEFAULT_PRIORITY = 100 }; 44 enum Defaults { DEFAULT_PRIORITY = 100 };
57 // After the RulesCacheDelegate object (the part of the registry which runs on 45 // After the RulesCacheDelegate object (the part of the registry which runs on
58 // the UI thread) is created, a pointer to it is passed to |*ui_part|. 46 // the UI thread) is created, a pointer to it is passed to |*ui_part|.
59 // In tests, |browser_context| and |ui_part| can be NULL (at the same time). 47 // In tests, |browser_context| and |ui_part| can be NULL (at the same time).
60 // In that case the storage functionality disabled (no RulesCacheDelegate 48 // In that case the storage functionality disabled (no RulesCacheDelegate
61 // object created). 49 // object created).
62 RulesRegistry(content::BrowserContext* browser_context, 50 RulesRegistry(content::BrowserContext* browser_context,
63 const std::string& event_name, 51 const std::string& event_name,
64 content::BrowserThread::ID owner_thread, 52 content::BrowserThread::ID owner_thread,
65 RulesCacheDelegate* cache_delegate, 53 RulesCacheDelegate* cache_delegate,
66 const WebViewKey& webview_key); 54 int id);
67 55
68 const OneShotEvent& ready() const { 56 const OneShotEvent& ready() const {
69 return ready_; 57 return ready_;
70 } 58 }
71 59
72 // RulesRegistry implementation: 60 // RulesRegistry implementation:
73 61
74 // Registers |rules|, owned by |extension_id| to this RulesRegistry. 62 // Registers |rules|, owned by |extension_id| to this RulesRegistry.
75 // If a concrete RuleRegistry does not support some of the rules, 63 // If a concrete RuleRegistry does not support some of the rules,
76 // it may ignore them. 64 // it may ignore them.
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after
138 // Returns the context where the rules registry lives. 126 // Returns the context where the rules registry lives.
139 content::BrowserContext* browser_context() { return browser_context_; } 127 content::BrowserContext* browser_context() { return browser_context_; }
140 128
141 // Returns the ID of the thread on which the rules registry lives. 129 // Returns the ID of the thread on which the rules registry lives.
142 // It is safe to call this function from any thread. 130 // It is safe to call this function from any thread.
143 content::BrowserThread::ID owner_thread() const { return owner_thread_; } 131 content::BrowserThread::ID owner_thread() const { return owner_thread_; }
144 132
145 // The name of the event with which rules are registered. 133 // The name of the event with which rules are registered.
146 const std::string& event_name() const { return event_name_; } 134 const std::string& event_name() const { return event_name_; }
147 135
148 // The key that identifies the webview (or tabs) in which these rules apply. 136 // The unique identifier for this RulesRegistry object.
149 // If the rules apply to the main browser, then this returns the tuple (0, 0). 137 int id() const { return id_; }
150 const WebViewKey& webview_key() const {
151 return webview_key_;
152 }
153 138
154 protected: 139 protected:
155 virtual ~RulesRegistry(); 140 virtual ~RulesRegistry();
156 141
157 // The precondition for calling this method is that all rules have unique IDs. 142 // The precondition for calling this method is that all rules have unique IDs.
158 // AddRules establishes this precondition and calls into this method. 143 // AddRules establishes this precondition and calls into this method.
159 // Stored rules already meet this precondition and so they avoid calling 144 // Stored rules already meet this precondition and so they avoid calling
160 // CheckAndFillInOptionalRules for improved performance. 145 // CheckAndFillInOptionalRules for improved performance.
161 // 146 //
162 // Returns an empty string if the function is successful or an error 147 // Returns an empty string if the function is successful or an error
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after
226 // The context to which this rules registry belongs. 211 // The context to which this rules registry belongs.
227 content::BrowserContext* browser_context_; 212 content::BrowserContext* browser_context_;
228 213
229 // The ID of the thread on which the rules registry lives. 214 // The ID of the thread on which the rules registry lives.
230 const content::BrowserThread::ID owner_thread_; 215 const content::BrowserThread::ID owner_thread_;
231 216
232 // The name of the event with which rules are registered. 217 // The name of the event with which rules are registered.
233 const std::string event_name_; 218 const std::string event_name_;
234 219
235 // The key that identifies the context in which these rules apply. 220 // The key that identifies the context in which these rules apply.
236 WebViewKey webview_key_; 221 int id_;
237 222
238 RulesDictionary rules_; 223 RulesDictionary rules_;
239 224
240 // Signaled when we have finished reading from storage for all extensions that 225 // Signaled when we have finished reading from storage for all extensions that
241 // are loaded on startup. 226 // are loaded on startup.
242 OneShotEvent ready_; 227 OneShotEvent ready_;
243 228
244 ProcessStateMap process_changed_rules_requested_; 229 ProcessStateMap process_changed_rules_requested_;
245 230
246 // Returns whether any existing rule is registered with identifier |rule_id| 231 // Returns whether any existing rule is registered with identifier |rule_id|
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
287 // safe. The registry only ever associates with one RulesCacheDelegate 272 // safe. The registry only ever associates with one RulesCacheDelegate
288 // instance. 273 // instance.
289 base::WeakPtr<RulesCacheDelegate> cache_delegate_; 274 base::WeakPtr<RulesCacheDelegate> cache_delegate_;
290 275
291 DISALLOW_COPY_AND_ASSIGN(RulesRegistry); 276 DISALLOW_COPY_AND_ASSIGN(RulesRegistry);
292 }; 277 };
293 278
294 } // namespace extensions 279 } // namespace extensions
295 280
296 #endif // EXTENSIONS_BROWSER_API_DECLARATIVE_RULES_REGISTRY_H__ 281 #endif // EXTENSIONS_BROWSER_API_DECLARATIVE_RULES_REGISTRY_H__
OLDNEW
« no previous file with comments | « extensions/browser/api/declarative/declarative_api.cc ('k') | extensions/browser/api/declarative/rules_registry.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698