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 #include "chrome/browser/extensions/extension_system.h" | 5 #include "chrome/browser/extensions/extension_system.h" |
6 | 6 |
7 #include "base/bind.h" | 7 #include "base/bind.h" |
8 #include "base/command_line.h" | 8 #include "base/command_line.h" |
9 #include "base/file_path.h" | 9 #include "base/file_path.h" |
10 #include "base/string_tokenizer.h" | 10 #include "base/string_tokenizer.h" |
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
66 | 66 |
67 // | 67 // |
68 // ExtensionSystemImpl::Shared | 68 // ExtensionSystemImpl::Shared |
69 // | 69 // |
70 | 70 |
71 ExtensionSystemImpl::Shared::Shared(Profile* profile) | 71 ExtensionSystemImpl::Shared::Shared(Profile* profile) |
72 : profile_(profile) { | 72 : profile_(profile) { |
73 } | 73 } |
74 | 74 |
75 ExtensionSystemImpl::Shared::~Shared() { | 75 ExtensionSystemImpl::Shared::~Shared() { |
76 if (rules_registry_service_.get()) | |
77 rules_registry_service_->Shutdown(); | |
78 } | 76 } |
79 | 77 |
80 void ExtensionSystemImpl::Shared::InitPrefs() { | 78 void ExtensionSystemImpl::Shared::InitPrefs() { |
81 bool extensions_disabled = | 79 bool extensions_disabled = |
82 profile_->GetPrefs()->GetBoolean(prefs::kDisableExtensions) || | 80 profile_->GetPrefs()->GetBoolean(prefs::kDisableExtensions) || |
83 CommandLine::ForCurrentProcess()->HasSwitch(switches::kDisableExtensions); | 81 CommandLine::ForCurrentProcess()->HasSwitch(switches::kDisableExtensions); |
84 extension_prefs_.reset(new ExtensionPrefs( | 82 extension_prefs_.reset(new ExtensionPrefs( |
85 profile_->GetPrefs(), | 83 profile_->GetPrefs(), |
86 profile_->GetPath().AppendASCII(ExtensionService::kInstallDirectoryName), | 84 profile_->GetPath().AppendASCII(ExtensionService::kInstallDirectoryName), |
87 ExtensionPrefValueMapFactory::GetForProfile(profile_))); | 85 ExtensionPrefValueMapFactory::GetForProfile(profile_))); |
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
128 profile_, | 126 profile_, |
129 CommandLine::ForCurrentProcess(), | 127 CommandLine::ForCurrentProcess(), |
130 profile_->GetPath().AppendASCII(ExtensionService::kInstallDirectoryName), | 128 profile_->GetPath().AppendASCII(ExtensionService::kInstallDirectoryName), |
131 extension_prefs_.get(), | 129 extension_prefs_.get(), |
132 autoupdate_enabled, | 130 autoupdate_enabled, |
133 extensions_enabled)); | 131 extensions_enabled)); |
134 | 132 |
135 // These services must be registered before the ExtensionService tries to | 133 // These services must be registered before the ExtensionService tries to |
136 // load any extensions. | 134 // load any extensions. |
137 { | 135 { |
138 rules_registry_service_.reset(new RulesRegistryService(profile_)); | |
139 rules_registry_service_->RegisterDefaultRulesRegistries(); | |
140 | |
141 management_policy_.reset(new ManagementPolicy); | 136 management_policy_.reset(new ManagementPolicy); |
142 RegisterManagementPolicyProviders(); | 137 RegisterManagementPolicyProviders(); |
143 } | 138 } |
144 | 139 |
145 extension_service_->component_loader()->AddDefaultComponentExtensions(); | 140 extension_service_->component_loader()->AddDefaultComponentExtensions(); |
146 if (command_line->HasSwitch(switches::kLoadComponentExtension)) { | 141 if (command_line->HasSwitch(switches::kLoadComponentExtension)) { |
147 CommandLine::StringType path_list = command_line->GetSwitchValueNative( | 142 CommandLine::StringType path_list = command_line->GetSwitchValueNative( |
148 switches::kLoadComponentExtension); | 143 switches::kLoadComponentExtension); |
149 StringTokenizerT<CommandLine::StringType, | 144 StringTokenizerT<CommandLine::StringType, |
150 CommandLine::StringType::const_iterator> t(path_list, | 145 CommandLine::StringType::const_iterator> t(path_list, |
(...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
230 } | 225 } |
231 | 226 |
232 ExtensionMessageService* ExtensionSystemImpl::Shared::message_service() { | 227 ExtensionMessageService* ExtensionSystemImpl::Shared::message_service() { |
233 return extension_message_service_.get(); | 228 return extension_message_service_.get(); |
234 } | 229 } |
235 | 230 |
236 EventRouter* ExtensionSystemImpl::Shared::event_router() { | 231 EventRouter* ExtensionSystemImpl::Shared::event_router() { |
237 return extension_event_router_.get(); | 232 return extension_event_router_.get(); |
238 } | 233 } |
239 | 234 |
240 RulesRegistryService* ExtensionSystemImpl::Shared::rules_registry_service() { | |
241 return rules_registry_service_.get(); | |
242 } | |
243 | |
244 // | 235 // |
245 // ExtensionSystemImpl | 236 // ExtensionSystemImpl |
246 // | 237 // |
247 | 238 |
248 ExtensionSystemImpl::ExtensionSystemImpl(Profile* profile) | 239 ExtensionSystemImpl::ExtensionSystemImpl(Profile* profile) |
249 : profile_(profile), | 240 : profile_(profile), |
250 extension_devtools_manager_(NULL) { | 241 extension_devtools_manager_(NULL) { |
251 shared_ = ExtensionSystemSharedFactory::GetForProfile(profile); | 242 shared_ = ExtensionSystemSharedFactory::GetForProfile(profile); |
252 | 243 |
253 if (profile->IsOffTheRecord()) { | 244 if (profile->IsOffTheRecord()) { |
254 extension_process_manager_.reset(ExtensionProcessManager::Create(profile)); | 245 extension_process_manager_.reset(ExtensionProcessManager::Create(profile)); |
255 } else { | 246 } else { |
256 shared_->InitPrefs(); | 247 shared_->InitPrefs(); |
257 } | 248 } |
258 } | 249 } |
259 | 250 |
260 ExtensionSystemImpl::~ExtensionSystemImpl() { | 251 ExtensionSystemImpl::~ExtensionSystemImpl() { |
252 if (rules_registry_service_.get()) | |
253 rules_registry_service_->Shutdown(); | |
261 } | 254 } |
262 | 255 |
263 void ExtensionSystemImpl::Shutdown() { | 256 void ExtensionSystemImpl::Shutdown() { |
264 extension_process_manager_.reset(); | 257 extension_process_manager_.reset(); |
265 } | 258 } |
266 | 259 |
267 void ExtensionSystemImpl::Init(bool extensions_enabled) { | 260 void ExtensionSystemImpl::InitForRegularProfile(bool extensions_enabled) { |
268 DCHECK(!profile_->IsOffTheRecord()); | 261 DCHECK(!profile_->IsOffTheRecord()); |
269 if (user_script_master() || extension_service()) | 262 if (user_script_master() || extension_service()) |
270 return; // Already initialized. | 263 return; // Already initialized. |
271 | 264 |
272 const CommandLine* command_line = CommandLine::ForCurrentProcess(); | 265 const CommandLine* command_line = CommandLine::ForCurrentProcess(); |
273 if (command_line->HasSwitch( | 266 if (command_line->HasSwitch( |
274 switches::kEnableExtensionTimelineApi)) { | 267 switches::kEnableExtensionTimelineApi)) { |
275 extension_devtools_manager_ = new ExtensionDevToolsManager(profile_); | 268 extension_devtools_manager_ = new ExtensionDevToolsManager(profile_); |
276 } | 269 } |
277 | 270 |
278 shared_->InitInfoMap(); | 271 shared_->InitInfoMap(); |
279 | 272 |
280 extension_process_manager_.reset(ExtensionProcessManager::Create(profile_)); | 273 extension_process_manager_.reset(ExtensionProcessManager::Create(profile_)); |
281 alarm_manager_.reset(new AlarmManager(profile_, &base::Time::Now)); | 274 alarm_manager_.reset(new AlarmManager(profile_, &base::Time::Now)); |
282 | 275 |
283 serial_connection_manager_.reset(new ApiResourceManager<SerialConnection>( | 276 serial_connection_manager_.reset(new ApiResourceManager<SerialConnection>( |
284 BrowserThread::FILE)); | 277 BrowserThread::FILE)); |
285 socket_manager_.reset(new ApiResourceManager<Socket>(BrowserThread::IO)); | 278 socket_manager_.reset(new ApiResourceManager<Socket>(BrowserThread::IO)); |
286 usb_device_resource_manager_.reset( | 279 usb_device_resource_manager_.reset( |
287 new ApiResourceManager<UsbDeviceResource>(BrowserThread::IO)); | 280 new ApiResourceManager<UsbDeviceResource>(BrowserThread::IO)); |
288 | 281 |
282 rules_registry_service_.reset(new RulesRegistryService(profile_)); | |
283 rules_registry_service_->RegisterDefaultRulesRegistries( | |
284 profile_->IsOffTheRecord()); | |
285 | |
289 shared_->Init(extensions_enabled); | 286 shared_->Init(extensions_enabled); |
290 } | 287 } |
291 | 288 |
289 void ExtensionSystemImpl::InitForOTRProfile() { | |
Matt Perry
2012/07/25 21:27:56
I wonder if this should just be done in the constr
battre
2012/07/26 16:38:43
No, RegisterDefaultRulesRegistries calls extension
| |
290 rules_registry_service_.reset(new RulesRegistryService(profile_)); | |
291 rules_registry_service_->RegisterDefaultRulesRegistries( | |
292 profile_->IsOffTheRecord()); | |
293 } | |
294 | |
292 ExtensionService* ExtensionSystemImpl::extension_service() { | 295 ExtensionService* ExtensionSystemImpl::extension_service() { |
293 return shared_->extension_service(); | 296 return shared_->extension_service(); |
294 } | 297 } |
295 | 298 |
296 ManagementPolicy* ExtensionSystemImpl::management_policy() { | 299 ManagementPolicy* ExtensionSystemImpl::management_policy() { |
297 return shared_->management_policy(); | 300 return shared_->management_policy(); |
298 } | 301 } |
299 | 302 |
300 UserScriptMaster* ExtensionSystemImpl::user_script_master() { | 303 UserScriptMaster* ExtensionSystemImpl::user_script_master() { |
301 return shared_->user_script_master(); | 304 return shared_->user_script_master(); |
(...skipping 27 matching lines...) Expand all Loading... | |
329 | 332 |
330 ExtensionMessageService* ExtensionSystemImpl::message_service() { | 333 ExtensionMessageService* ExtensionSystemImpl::message_service() { |
331 return shared_->message_service(); | 334 return shared_->message_service(); |
332 } | 335 } |
333 | 336 |
334 EventRouter* ExtensionSystemImpl::event_router() { | 337 EventRouter* ExtensionSystemImpl::event_router() { |
335 return shared_->event_router(); | 338 return shared_->event_router(); |
336 } | 339 } |
337 | 340 |
338 RulesRegistryService* ExtensionSystemImpl::rules_registry_service() { | 341 RulesRegistryService* ExtensionSystemImpl::rules_registry_service() { |
339 return shared_->rules_registry_service(); | 342 return rules_registry_service_.get(); |
340 } | 343 } |
341 | 344 |
342 ApiResourceManager<SerialConnection>* | 345 ApiResourceManager<SerialConnection>* |
343 ExtensionSystemImpl::serial_connection_manager() { | 346 ExtensionSystemImpl::serial_connection_manager() { |
344 return serial_connection_manager_.get(); | 347 return serial_connection_manager_.get(); |
345 } | 348 } |
346 | 349 |
347 ApiResourceManager<Socket>*ExtensionSystemImpl::socket_manager() { | 350 ApiResourceManager<Socket>* ExtensionSystemImpl::socket_manager() { |
348 return socket_manager_.get(); | 351 return socket_manager_.get(); |
349 } | 352 } |
350 | 353 |
351 ApiResourceManager<UsbDeviceResource>* | 354 ApiResourceManager<UsbDeviceResource>* |
352 ExtensionSystemImpl::usb_device_resource_manager() { | 355 ExtensionSystemImpl::usb_device_resource_manager() { |
353 return usb_device_resource_manager_.get(); | 356 return usb_device_resource_manager_.get(); |
354 } | 357 } |
355 | 358 |
356 void ExtensionSystemImpl::RegisterExtensionWithRequestContexts( | 359 void ExtensionSystemImpl::RegisterExtensionWithRequestContexts( |
357 const Extension* extension) { | 360 const Extension* extension) { |
(...skipping 14 matching lines...) Expand all Loading... | |
372 void ExtensionSystemImpl::UnregisterExtensionWithRequestContexts( | 375 void ExtensionSystemImpl::UnregisterExtensionWithRequestContexts( |
373 const std::string& extension_id, | 376 const std::string& extension_id, |
374 const extension_misc::UnloadedExtensionReason reason) { | 377 const extension_misc::UnloadedExtensionReason reason) { |
375 BrowserThread::PostTask( | 378 BrowserThread::PostTask( |
376 BrowserThread::IO, FROM_HERE, | 379 BrowserThread::IO, FROM_HERE, |
377 base::Bind(&ExtensionInfoMap::RemoveExtension, info_map(), | 380 base::Bind(&ExtensionInfoMap::RemoveExtension, info_map(), |
378 extension_id, reason)); | 381 extension_id, reason)); |
379 } | 382 } |
380 | 383 |
381 } // namespace extensions | 384 } // namespace extensions |
OLD | NEW |