OLD | NEW |
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_EXTENSION_SYSTEM_H_ | 5 #ifndef CHROME_BROWSER_EXTENSIONS_EXTENSION_SYSTEM_H_ |
6 #define CHROME_BROWSER_EXTENSIONS_EXTENSION_SYSTEM_H_ | 6 #define CHROME_BROWSER_EXTENSIONS_EXTENSION_SYSTEM_H_ |
7 | 7 |
8 #include <string> | 8 #include <string> |
9 | 9 |
10 #include "base/memory/ref_counted.h" | 10 #include "base/memory/ref_counted.h" |
11 #include "base/memory/scoped_ptr.h" | 11 #include "base/memory/scoped_ptr.h" |
12 #include "chrome/browser/extensions/api/api_resource_manager.h" | 12 #include "chrome/browser/extensions/api/api_resource_manager.h" |
13 #include "chrome/browser/extensions/api/serial/serial_connection.h" | 13 #include "chrome/browser/extensions/api/serial/serial_connection.h" |
14 #include "chrome/browser/extensions/api/socket/socket.h" | 14 #include "chrome/browser/extensions/api/socket/socket.h" |
15 #include "chrome/browser/extensions/api/usb/usb_device_resource.h" | 15 #include "chrome/browser/extensions/api/usb/usb_device_resource.h" |
16 #include "chrome/browser/profiles/profile_keyed_service.h" | 16 #include "chrome/browser/profiles/profile_keyed_service.h" |
17 #include "chrome/common/extensions/extension_constants.h" | 17 #include "chrome/common/extensions/extension_constants.h" |
18 | 18 |
19 class ExtensionDevToolsManager; | 19 class ExtensionDevToolsManager; |
20 class ExtensionInfoMap; | 20 class ExtensionInfoMap; |
21 class ExtensionMessageService; | |
22 class ExtensionNavigationObserver; | 21 class ExtensionNavigationObserver; |
23 class ExtensionProcessManager; | 22 class ExtensionProcessManager; |
24 class ExtensionService; | 23 class ExtensionService; |
25 class Profile; | 24 class Profile; |
26 | 25 |
27 namespace extensions { | 26 namespace extensions { |
28 // Unfortunately, for the ApiResourceManager<> template classes, we don't seem | 27 // Unfortunately, for the ApiResourceManager<> template classes, we don't seem |
29 // to be able to forward-declare because of compilation errors on Windows. | 28 // to be able to forward-declare because of compilation errors on Windows. |
30 class AlarmManager; | 29 class AlarmManager; |
31 class EventRouter; | 30 class EventRouter; |
32 class Extension; | 31 class Extension; |
33 class ExtensionPrefs; | 32 class ExtensionPrefs; |
34 class ExtensionSystemSharedFactory; | 33 class ExtensionSystemSharedFactory; |
35 class LazyBackgroundTaskQueue; | 34 class LazyBackgroundTaskQueue; |
36 class ManagementPolicy; | 35 class ManagementPolicy; |
| 36 class MessageService; |
37 class RulesRegistryService; | 37 class RulesRegistryService; |
38 class StateStore; | 38 class StateStore; |
39 class UserScriptMaster; | 39 class UserScriptMaster; |
40 | 40 |
41 // The ExtensionSystem manages the creation and destruction of services | 41 // The ExtensionSystem manages the creation and destruction of services |
42 // related to extensions. Most objects are shared between normal | 42 // related to extensions. Most objects are shared between normal |
43 // and incognito Profiles, except as called out in comments. | 43 // and incognito Profiles, except as called out in comments. |
44 // This interface supports using TestExtensionSystem for TestingProfiles | 44 // This interface supports using TestExtensionSystem for TestingProfiles |
45 // that don't want all of the extensions baggage in their tests. | 45 // that don't want all of the extensions baggage in their tests. |
46 class ExtensionSystem : public ProfileKeyedService { | 46 class ExtensionSystem : public ProfileKeyedService { |
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
82 | 82 |
83 // The StateStore is created at startup. | 83 // The StateStore is created at startup. |
84 virtual StateStore* state_store() = 0; | 84 virtual StateStore* state_store() = 0; |
85 | 85 |
86 // Returns the IO-thread-accessible extension data. | 86 // Returns the IO-thread-accessible extension data. |
87 virtual ExtensionInfoMap* info_map() = 0; | 87 virtual ExtensionInfoMap* info_map() = 0; |
88 | 88 |
89 // The LazyBackgroundTaskQueue is created at startup. | 89 // The LazyBackgroundTaskQueue is created at startup. |
90 virtual LazyBackgroundTaskQueue* lazy_background_task_queue() = 0; | 90 virtual LazyBackgroundTaskQueue* lazy_background_task_queue() = 0; |
91 | 91 |
92 // The ExtensionMessageService is created at startup. | 92 // The MessageService is created at startup. |
93 virtual ExtensionMessageService* message_service() = 0; | 93 virtual MessageService* message_service() = 0; |
94 | 94 |
95 // The EventRouter is created at startup. | 95 // The EventRouter is created at startup. |
96 virtual EventRouter* event_router() = 0; | 96 virtual EventRouter* event_router() = 0; |
97 | 97 |
98 // The RulesRegistryService is created at startup. | 98 // The RulesRegistryService is created at startup. |
99 virtual RulesRegistryService* rules_registry_service() = 0; | 99 virtual RulesRegistryService* rules_registry_service() = 0; |
100 | 100 |
101 // The SerialConnection ResourceManager is created at startup. | 101 // The SerialConnection ResourceManager is created at startup. |
102 virtual ApiResourceManager<SerialConnection>* | 102 virtual ApiResourceManager<SerialConnection>* |
103 serial_connection_manager() = 0; | 103 serial_connection_manager() = 0; |
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
144 virtual ExtensionService* extension_service() OVERRIDE; // shared | 144 virtual ExtensionService* extension_service() OVERRIDE; // shared |
145 virtual ManagementPolicy* management_policy() OVERRIDE; // shared | 145 virtual ManagementPolicy* management_policy() OVERRIDE; // shared |
146 virtual UserScriptMaster* user_script_master() OVERRIDE; // shared | 146 virtual UserScriptMaster* user_script_master() OVERRIDE; // shared |
147 virtual ExtensionDevToolsManager* devtools_manager() OVERRIDE; | 147 virtual ExtensionDevToolsManager* devtools_manager() OVERRIDE; |
148 virtual ExtensionProcessManager* process_manager() OVERRIDE; | 148 virtual ExtensionProcessManager* process_manager() OVERRIDE; |
149 virtual AlarmManager* alarm_manager() OVERRIDE; | 149 virtual AlarmManager* alarm_manager() OVERRIDE; |
150 virtual StateStore* state_store() OVERRIDE; | 150 virtual StateStore* state_store() OVERRIDE; |
151 virtual LazyBackgroundTaskQueue* lazy_background_task_queue() | 151 virtual LazyBackgroundTaskQueue* lazy_background_task_queue() |
152 OVERRIDE; // shared | 152 OVERRIDE; // shared |
153 virtual ExtensionInfoMap* info_map() OVERRIDE; // shared | 153 virtual ExtensionInfoMap* info_map() OVERRIDE; // shared |
154 virtual ExtensionMessageService* message_service() OVERRIDE; // shared | 154 virtual MessageService* message_service() OVERRIDE; // shared |
155 virtual EventRouter* event_router() OVERRIDE; // shared | 155 virtual EventRouter* event_router() OVERRIDE; // shared |
156 virtual RulesRegistryService* rules_registry_service() | 156 virtual RulesRegistryService* rules_registry_service() |
157 OVERRIDE; // shared | 157 OVERRIDE; // shared |
158 virtual ApiResourceManager<SerialConnection>* serial_connection_manager() | 158 virtual ApiResourceManager<SerialConnection>* serial_connection_manager() |
159 OVERRIDE; | 159 OVERRIDE; |
160 virtual ApiResourceManager<Socket>* socket_manager() OVERRIDE; | 160 virtual ApiResourceManager<Socket>* socket_manager() OVERRIDE; |
161 virtual ApiResourceManager<UsbDeviceResource>* usb_device_resource_manager() | 161 virtual ApiResourceManager<UsbDeviceResource>* usb_device_resource_manager() |
162 OVERRIDE; | 162 OVERRIDE; |
163 | 163 |
164 virtual void RegisterExtensionWithRequestContexts( | 164 virtual void RegisterExtensionWithRequestContexts( |
(...skipping 19 matching lines...) Expand all Loading... |
184 void RegisterManagementPolicyProviders(); | 184 void RegisterManagementPolicyProviders(); |
185 void InitInfoMap(); | 185 void InitInfoMap(); |
186 void Init(bool extensions_enabled); | 186 void Init(bool extensions_enabled); |
187 | 187 |
188 StateStore* state_store(); | 188 StateStore* state_store(); |
189 ExtensionService* extension_service(); | 189 ExtensionService* extension_service(); |
190 ManagementPolicy* management_policy(); | 190 ManagementPolicy* management_policy(); |
191 UserScriptMaster* user_script_master(); | 191 UserScriptMaster* user_script_master(); |
192 ExtensionInfoMap* info_map(); | 192 ExtensionInfoMap* info_map(); |
193 LazyBackgroundTaskQueue* lazy_background_task_queue(); | 193 LazyBackgroundTaskQueue* lazy_background_task_queue(); |
194 ExtensionMessageService* message_service(); | 194 MessageService* message_service(); |
195 EventRouter* event_router(); | 195 EventRouter* event_router(); |
196 RulesRegistryService* rules_registry_service(); | 196 RulesRegistryService* rules_registry_service(); |
197 | 197 |
198 private: | 198 private: |
199 Profile* profile_; | 199 Profile* profile_; |
200 | 200 |
201 // The services that are shared between normal and incognito profiles. | 201 // The services that are shared between normal and incognito profiles. |
202 | 202 |
203 scoped_ptr<StateStore> state_store_; | 203 scoped_ptr<StateStore> state_store_; |
204 scoped_ptr<ExtensionPrefs> extension_prefs_; | 204 scoped_ptr<ExtensionPrefs> extension_prefs_; |
205 // ExtensionService depends on the 2 above. | 205 // ExtensionService depends on the 2 above. |
206 scoped_ptr<ExtensionService> extension_service_; | 206 scoped_ptr<ExtensionService> extension_service_; |
207 scoped_ptr<ManagementPolicy> management_policy_; | 207 scoped_ptr<ManagementPolicy> management_policy_; |
208 scoped_refptr<UserScriptMaster> user_script_master_; | 208 scoped_refptr<UserScriptMaster> user_script_master_; |
209 // extension_info_map_ needs to outlive extension_process_manager_. | 209 // extension_info_map_ needs to outlive extension_process_manager_. |
210 scoped_refptr<ExtensionInfoMap> extension_info_map_; | 210 scoped_refptr<ExtensionInfoMap> extension_info_map_; |
211 // This is a dependency of ExtensionMessageService and EventRouter. | 211 // This is a dependency of MessageService and EventRouter. |
212 scoped_ptr<LazyBackgroundTaskQueue> lazy_background_task_queue_; | 212 scoped_ptr<LazyBackgroundTaskQueue> lazy_background_task_queue_; |
213 scoped_ptr<ExtensionMessageService> extension_message_service_; | 213 scoped_ptr<MessageService> message_service_; |
214 scoped_ptr<EventRouter> extension_event_router_; | 214 scoped_ptr<EventRouter> extension_event_router_; |
215 scoped_ptr<ExtensionNavigationObserver> extension_navigation_observer_; | 215 scoped_ptr<ExtensionNavigationObserver> extension_navigation_observer_; |
216 scoped_ptr<RulesRegistryService> rules_registry_service_; | 216 scoped_ptr<RulesRegistryService> rules_registry_service_; |
217 }; | 217 }; |
218 | 218 |
219 Profile* profile_; | 219 Profile* profile_; |
220 | 220 |
221 Shared* shared_; | 221 Shared* shared_; |
222 | 222 |
223 // The services that have their own instances in incognito. | 223 // The services that have their own instances in incognito. |
224 scoped_refptr<ExtensionDevToolsManager> extension_devtools_manager_; | 224 scoped_refptr<ExtensionDevToolsManager> extension_devtools_manager_; |
225 // |extension_process_manager_| must be destroyed before the Profile's | 225 // |extension_process_manager_| must be destroyed before the Profile's |
226 // |io_data_|. While |extension_process_manager_| still lives, we handle | 226 // |io_data_|. While |extension_process_manager_| still lives, we handle |
227 // incoming resource requests from extension processes and those require | 227 // incoming resource requests from extension processes and those require |
228 // access to the ResourceContext owned by |io_data_|. | 228 // access to the ResourceContext owned by |io_data_|. |
229 scoped_ptr<ExtensionProcessManager> extension_process_manager_; | 229 scoped_ptr<ExtensionProcessManager> extension_process_manager_; |
230 scoped_ptr<AlarmManager> alarm_manager_; | 230 scoped_ptr<AlarmManager> alarm_manager_; |
231 scoped_ptr<ApiResourceManager<SerialConnection> > serial_connection_manager_; | 231 scoped_ptr<ApiResourceManager<SerialConnection> > serial_connection_manager_; |
232 scoped_ptr<ApiResourceManager<Socket> > socket_manager_; | 232 scoped_ptr<ApiResourceManager<Socket> > socket_manager_; |
233 scoped_ptr<ApiResourceManager< | 233 scoped_ptr<ApiResourceManager< |
234 UsbDeviceResource> > usb_device_resource_manager_; | 234 UsbDeviceResource> > usb_device_resource_manager_; |
235 | 235 |
236 DISALLOW_COPY_AND_ASSIGN(ExtensionSystemImpl); | 236 DISALLOW_COPY_AND_ASSIGN(ExtensionSystemImpl); |
237 }; | 237 }; |
238 | 238 |
239 } // namespace extensions | 239 } // namespace extensions |
240 | 240 |
241 #endif // CHROME_BROWSER_EXTENSIONS_EXTENSION_SYSTEM_H_ | 241 #endif // CHROME_BROWSER_EXTENSIONS_EXTENSION_SYSTEM_H_ |
OLD | NEW |