diff options
Diffstat (limited to 'chrome/browser/extensions/extension_prefs.cc')
-rw-r--r-- | chrome/browser/extensions/extension_prefs.cc | 41 |
1 files changed, 26 insertions, 15 deletions
diff --git a/chrome/browser/extensions/extension_prefs.cc b/chrome/browser/extensions/extension_prefs.cc index a200bfc..64ef63c 100644 --- a/chrome/browser/extensions/extension_prefs.cc +++ b/chrome/browser/extensions/extension_prefs.cc @@ -14,7 +14,9 @@ #include "base/version.h" #include "chrome/browser/extensions/admin_policy.h" #include "chrome/browser/extensions/extension_pref_store.h" +#include "chrome/browser/extensions/extension_prefs_factory.h" #include "chrome/browser/extensions/extension_sorting.h" +#include "chrome/browser/profiles/profile.h" #include "chrome/browser/ui/host_desktop.h" #include "chrome/common/chrome_notification_types.h" #include "chrome/common/chrome_switches.h" @@ -379,7 +381,7 @@ template class ExtensionPrefs::ScopedUpdate<ListValue, Value::TYPE_LIST>; // // static -scoped_ptr<ExtensionPrefs> ExtensionPrefs::Create( +ExtensionPrefs* ExtensionPrefs::Create( PrefService* prefs, const base::FilePath& root_dir, ExtensionPrefValueMap* extension_pref_value_map, @@ -392,7 +394,7 @@ scoped_ptr<ExtensionPrefs> ExtensionPrefs::Create( } // static -scoped_ptr<ExtensionPrefs> ExtensionPrefs::Create( +ExtensionPrefs* ExtensionPrefs::Create( PrefService* pref_service, const base::FilePath& root_dir, ExtensionPrefValueMap* extension_pref_value_map, @@ -402,14 +404,26 @@ scoped_ptr<ExtensionPrefs> ExtensionPrefs::Create( new ExtensionPrefs(pref_service, root_dir, extension_pref_value_map, - time_provider.Pass())); - prefs->Init(extensions_disabled); - return prefs.Pass(); + time_provider.Pass(), + extensions_disabled)); + return prefs.release(); } ExtensionPrefs::~ExtensionPrefs() { } +void ExtensionPrefs::Shutdown() { + // It's safe to do this for any profile because the regular profile going away + // implies its incognito profile going away. + if (!extensions_disabled_) + ClearIncognitoSessionOnlyContentSettings(); +} + +// static +ExtensionPrefs* ExtensionPrefs::Get(Profile* profile) { + return ExtensionPrefsFactory::GetInstance()->GetForProfile(profile); +} + // static const char ExtensionPrefs::kExtensionsPref[] = "extensions.settings"; @@ -1756,8 +1770,8 @@ void ExtensionPrefs::LoadExtensionControlledPrefs( } } -void ExtensionPrefs::InitPrefStore(bool extensions_disabled) { - if (extensions_disabled) { +void ExtensionPrefs::InitPrefStore() { + if (extensions_disabled_) { extension_pref_value_map_->NotifyInitializationCompleted(); return; } @@ -1978,20 +1992,17 @@ ExtensionPrefs::ExtensionPrefs( PrefService* prefs, const base::FilePath& root_dir, ExtensionPrefValueMap* extension_pref_value_map, - scoped_ptr<TimeProvider> time_provider) + scoped_ptr<TimeProvider> time_provider, + bool extensions_disabled) : prefs_(prefs), install_directory_(root_dir), extension_pref_value_map_(extension_pref_value_map), extension_sorting_(new ExtensionSorting(this, prefs)), content_settings_store_(new ContentSettingsStore()), - time_provider_(time_provider.Pass()) { -} - -void ExtensionPrefs::Init(bool extensions_disabled) { + time_provider_(time_provider.Pass()), + extensions_disabled_(extensions_disabled) { MakePathsRelative(); - - InitPrefStore(extensions_disabled); - + InitPrefStore(); content_settings_store_->AddObserver(this); } |