Index: chrome/browser/extensions/extension_system.cc |
diff --git a/chrome/browser/extensions/extension_system.cc b/chrome/browser/extensions/extension_system.cc |
index e5ca663d8900064eca58ea4fd1c7384c9bc8f080..b451ab02005721d23331f94c8df11fdd302e5d42 100644 |
--- a/chrome/browser/extensions/extension_system.cc |
+++ b/chrome/browser/extensions/extension_system.cc |
@@ -73,8 +73,6 @@ ExtensionSystemImpl::Shared::Shared(Profile* profile) |
} |
ExtensionSystemImpl::Shared::~Shared() { |
- if (rules_registry_service_.get()) |
- rules_registry_service_->Shutdown(); |
} |
void ExtensionSystemImpl::Shared::InitPrefs() { |
@@ -134,9 +132,6 @@ void ExtensionSystemImpl::Shared::Init(bool extensions_enabled) { |
// These services must be registered before the ExtensionService tries to |
// load any extensions. |
{ |
- rules_registry_service_.reset(new RulesRegistryService(profile_)); |
- rules_registry_service_->RegisterDefaultRulesRegistries(); |
- |
management_policy_.reset(new ManagementPolicy); |
RegisterManagementPolicyProviders(); |
} |
@@ -236,10 +231,6 @@ EventRouter* ExtensionSystemImpl::Shared::event_router() { |
return extension_event_router_.get(); |
} |
-RulesRegistryService* ExtensionSystemImpl::Shared::rules_registry_service() { |
- return rules_registry_service_.get(); |
-} |
- |
// |
// ExtensionSystemImpl |
// |
@@ -257,13 +248,15 @@ ExtensionSystemImpl::ExtensionSystemImpl(Profile* profile) |
} |
ExtensionSystemImpl::~ExtensionSystemImpl() { |
+ if (rules_registry_service_.get()) |
+ rules_registry_service_->Shutdown(); |
} |
void ExtensionSystemImpl::Shutdown() { |
extension_process_manager_.reset(); |
} |
-void ExtensionSystemImpl::Init(bool extensions_enabled) { |
+void ExtensionSystemImpl::InitForRegularProfile(bool extensions_enabled) { |
DCHECK(!profile_->IsOffTheRecord()); |
if (user_script_master() || extension_service()) |
return; // Already initialized. |
@@ -285,9 +278,23 @@ void ExtensionSystemImpl::Init(bool extensions_enabled) { |
usb_device_resource_manager_.reset( |
new ApiResourceManager<UsbDeviceResource>(BrowserThread::IO)); |
+ rules_registry_service_.reset(new RulesRegistryService(profile_)); |
+ rules_registry_service_->RegisterDefaultRulesRegistries(); |
+ |
shared_->Init(extensions_enabled); |
} |
+void ExtensionSystemImpl::InitForOTRProfile() { |
+ // Only initialize the RulesRegistryService of the OTR ExtensionSystem if the |
+ // regular ExtensionSystem has been initialized properly, as we depend on it. |
+ // Some ChromeOS browser tests don't initialize the regular ExtensionSystem |
+ // in login-tests. |
+ if (extension_service()) { |
+ rules_registry_service_.reset(new RulesRegistryService(profile_)); |
+ rules_registry_service_->RegisterDefaultRulesRegistries(); |
+ } |
+} |
+ |
ExtensionService* ExtensionSystemImpl::extension_service() { |
return shared_->extension_service(); |
} |
@@ -335,7 +342,7 @@ EventRouter* ExtensionSystemImpl::event_router() { |
} |
RulesRegistryService* ExtensionSystemImpl::rules_registry_service() { |
- return shared_->rules_registry_service(); |
+ return rules_registry_service_.get(); |
} |
ApiResourceManager<SerialConnection>* |
@@ -343,7 +350,7 @@ ExtensionSystemImpl::serial_connection_manager() { |
return serial_connection_manager_.get(); |
} |
-ApiResourceManager<Socket>*ExtensionSystemImpl::socket_manager() { |
+ApiResourceManager<Socket>* ExtensionSystemImpl::socket_manager() { |
return socket_manager_.get(); |
} |