diff options
author | szym@chromium.org <szym@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-04-22 15:44:26 +0000 |
---|---|---|
committer | szym@chromium.org <szym@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-04-22 15:44:26 +0000 |
commit | 79bac42a3f1ac9ea2466c6b99ebf6a58a1e21e64 (patch) | |
tree | d404efceaaee45989c09631e68b4becf45eba18a /chrome/browser/extensions/test_extension_system.cc | |
parent | f637b85dab565e532fc333daf932b9889abea2b5 (diff) | |
download | chromium_src-79bac42a3f1ac9ea2466c6b99ebf6a58a1e21e64.zip chromium_src-79bac42a3f1ac9ea2466c6b99ebf6a58a1e21e64.tar.gz chromium_src-79bac42a3f1ac9ea2466c6b99ebf6a58a1e21e64.tar.bz2 |
Revert 195501 "Make UserManager a non-Lazy singleton"
ASAN found heap-use-after-free:
ObserverListBase<policy::DeviceLocalAccountPolicyService::Observer>::RemoveObserver
chromeos::UserManagerImpl::Shutdown
chromeos::ScopedTestUserManager::~ScopedTestUserManager
...
chromeos::(anonymous namespace)::LoginUtilsTest::~LoginUtilsTest
> Make UserManager a non-Lazy singleton
>
> This CL turns the UserManager from a LazyInstance singleton with an
> unpredictable lifetime into a singleton that is explicity instantiated
> and torn down at well-defined points in the browser's lifetime.
>
> BUG=None
>
> For tests that need to instantiate a UserManager now:
> TBR=oshima,hashimoto,mnissler,benwells,davemoore,pkotwicz,sky
>
> Review URL: https://chromiumcodereview.appspot.com/14362029
TBR=bartfab@chromium.org
Review URL: https://codereview.chromium.org/13842020
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@195509 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/extensions/test_extension_system.cc')
-rw-r--r-- | chrome/browser/extensions/test_extension_system.cc | 15 |
1 files changed, 9 insertions, 6 deletions
diff --git a/chrome/browser/extensions/test_extension_system.cc b/chrome/browser/extensions/test_extension_system.cc index ba32742..9b18015 100644 --- a/chrome/browser/extensions/test_extension_system.cc +++ b/chrome/browser/extensions/test_extension_system.cc @@ -28,7 +28,7 @@ #include "content/public/browser/browser_thread.h" #if defined(OS_CHROMEOS) -#include "chrome/browser/chromeos/login/user_manager.h" +#include "chrome/browser/chromeos/settings/cros_settings.h" #endif using content::BrowserThread; @@ -38,6 +38,13 @@ namespace extensions { TestExtensionSystem::TestExtensionSystem(Profile* profile) : profile_(profile), info_map_(new ExtensionInfoMap()) { +#if defined OS_CHROMEOS + // TestExtensionSystem may or may not be created within + // TestExtensionEnvironment, so only create a ScopedTestCrosSettings instance + // if none has been created. + if (!chromeos::CrosSettings::IsInitialized()) + test_cros_settings_.reset(new chromeos::ScopedTestCrosSettings); +#endif } TestExtensionSystem::~TestExtensionSystem() { @@ -92,11 +99,7 @@ ExtensionService* TestExtensionSystem::CreateExtensionService( management_policy_.reset(new ManagementPolicy()); management_policy_->RegisterProvider( standard_management_policy_provider_.get()); -#if defined(OS_CHROMEOS) - if (!test_user_manager_) - test_user_manager_.reset(new chromeos::ScopedTestUserManager); -#endif - extension_service_.reset(new ExtensionService(profile_, + extension_service_.reset(new ExtensionService(profile_, command_line, install_directory, extension_prefs_.get(), |