Index: chrome/browser/extensions/test_extension_system.cc |
diff --git a/chrome/browser/extensions/test_extension_system.cc b/chrome/browser/extensions/test_extension_system.cc |
index a9e4b3231050d3a127718438b1f6f88ef7dd9c36..060d337ba21d311d29fed2639d8d1e7b23cee545 100644 |
--- a/chrome/browser/extensions/test_extension_system.cc |
+++ b/chrome/browser/extensions/test_extension_system.cc |
@@ -41,9 +41,13 @@ TestExtensionSystem::TestExtensionSystem(Profile* profile) |
value_store_(NULL), |
info_map_(new InfoMap()), |
error_console_(new ErrorConsole(profile)), |
- quota_service_(new QuotaService()) {} |
+ quota_service_(new QuotaService()), |
+ extension_service_(NULL), |
+ extension_service_owned_(true) {} |
TestExtensionSystem::~TestExtensionSystem() { |
+ if (extension_service_owned_) |
Yoyo Zhou
2014/09/05 16:21:33
&& extension_service_?
Lei Zhang
2014/09/05 19:35:08
Nope. http://www.parashift.com/c++-faq/delete-hand
|
+ delete extension_service_; |
} |
void TestExtensionSystem::Shutdown() { |
@@ -103,20 +107,23 @@ ExtensionService* TestExtensionSystem::CreateExtensionService( |
management_policy_->RegisterProvider( |
standard_management_policy_provider_.get()); |
runtime_data_.reset(new RuntimeData(ExtensionRegistry::Get(profile_))); |
- extension_service_.reset(new ExtensionService(profile_, |
- command_line, |
- install_directory, |
- ExtensionPrefs::Get(profile_), |
- blacklist_.get(), |
- autoupdate_enabled, |
- true, |
- &ready_)); |
+ if (extension_service_owned_) |
+ delete extension_service_; |
+ extension_service_ = new ExtensionService(profile_, |
+ command_line, |
+ install_directory, |
+ ExtensionPrefs::Get(profile_), |
+ blacklist_.get(), |
+ autoupdate_enabled, |
+ true, |
+ &ready_); |
+ extension_service_owned_ = true; |
extension_service_->ClearProvidersForTesting(); |
- return extension_service_.get(); |
+ return extension_service_; |
} |
ExtensionService* TestExtensionSystem::extension_service() { |
- return extension_service_.get(); |
+ return extension_service_; |
} |
RuntimeData* TestExtensionSystem::runtime_data() { |
@@ -127,8 +134,12 @@ ManagementPolicy* TestExtensionSystem::management_policy() { |
return management_policy_.get(); |
} |
-void TestExtensionSystem::SetExtensionService(ExtensionService* service) { |
- extension_service_.reset(service); |
+void TestExtensionSystem::SetExtensionService(ExtensionService* service, |
+ bool owned) { |
+ if (extension_service_owned_) |
+ delete extension_service_; |
+ extension_service_ = service; |
+ extension_service_owned_ = owned; |
} |
SharedUserScriptMaster* TestExtensionSystem::shared_user_script_master() { |