Chromium Code Reviews| 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 |