summaryrefslogtreecommitdiffstats
path: root/chrome/browser/extensions/extension_prefs.cc
diff options
context:
space:
mode:
Diffstat (limited to 'chrome/browser/extensions/extension_prefs.cc')
-rw-r--r--chrome/browser/extensions/extension_prefs.cc41
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);
}