summaryrefslogtreecommitdiffstats
path: root/chrome/browser/extensions/test_extension_system.cc
diff options
context:
space:
mode:
authorszym@chromium.org <szym@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-04-22 15:44:26 +0000
committerszym@chromium.org <szym@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-04-22 15:44:26 +0000
commit79bac42a3f1ac9ea2466c6b99ebf6a58a1e21e64 (patch)
treed404efceaaee45989c09631e68b4becf45eba18a /chrome/browser/extensions/test_extension_system.cc
parentf637b85dab565e532fc333daf932b9889abea2b5 (diff)
downloadchromium_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.cc15
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(),