Chromium Code Reviews| 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() { |