Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2883)

Unified Diff: chrome/browser/extensions/extension_prefs.cc

Issue 5646003: Sanitize PrefStore interface. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fix PrefService mock construction in PrefServiceTest to include command line store. Created 10 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/browser/extensions/extension_prefs.cc
diff --git a/chrome/browser/extensions/extension_prefs.cc b/chrome/browser/extensions/extension_prefs.cc
index cc1beb8c9eaf0b65432c99cdebd5362b97363c3a..1f128ab2f7ce218be0f3f783fd8bbde5b772d424 100644
--- a/chrome/browser/extensions/extension_prefs.cc
+++ b/chrome/browser/extensions/extension_prefs.cc
@@ -7,6 +7,7 @@
#include "base/string_util.h"
#include "base/string_number_conversions.h"
#include "base/utf_string_conversions.h"
+#include "chrome/browser/extensions/extension_pref_store.h"
#include "chrome/browser/prefs/pref_notifier.h"
#include "chrome/common/extensions/extension.h"
#include "chrome/common/extensions/url_pattern.h"
@@ -140,9 +141,12 @@ static void ExtentToStringSet(const ExtensionExtent& host_extent,
} // namespace
-ExtensionPrefs::ExtensionPrefs(PrefService* prefs, const FilePath& root_dir)
+ExtensionPrefs::ExtensionPrefs(PrefService* prefs,
+ const FilePath& root_dir,
+ ExtensionPrefStore* pref_store)
: prefs_(prefs),
- install_directory_(root_dir) {
+ install_directory_(root_dir),
+ pref_store_(pref_store) {
// TODO(asargent) - Remove this in a couple of months. (See comment above
// CleanupBadExtensionKeys).
CleanupBadExtensionKeys(prefs_);
@@ -1190,6 +1194,7 @@ void ExtensionPrefs::InitPrefStore() {
// Store winning preference for each extension controlled preference.
UpdatePrefStore(ext_controlled_prefs);
+ pref_store_->OnInitializationCompleted();
}
const Value* ExtensionPrefs::GetWinningExtensionControlledPrefValue(
@@ -1229,25 +1234,15 @@ void ExtensionPrefs::UpdatePrefStore(
}
void ExtensionPrefs::UpdatePrefStore(const std::string& pref_key) {
- PrefStore* extension_pref_store =
- pref_service()->GetExtensionPrefStore();
- if (extension_pref_store == NULL)
- return; // Profile is being shut down, Pref Service is already gone.
+ if (pref_store_ == NULL)
+ return;
const Value* winning_pref_value =
GetWinningExtensionControlledPrefValue(pref_key);
- Value* old_value = NULL;
- extension_pref_store->prefs()->Get(pref_key, &old_value);
- bool changed = !Value::Equals(winning_pref_value, old_value);
- if (winning_pref_value) {
- extension_pref_store->prefs()->Set(pref_key,
- winning_pref_value->DeepCopy());
- } else {
- extension_pref_store->prefs()->Remove(pref_key, NULL);
- }
-
- if (changed)
- pref_service()->pref_notifier()->OnPreferenceChanged(pref_key.c_str());
+ if (winning_pref_value)
+ pref_store_->SetExtensionPref(pref_key, winning_pref_value->DeepCopy());
+ else
+ pref_store_->RemoveExtensionPref(pref_key);
}
void ExtensionPrefs::SetExtensionControlledPref(const std::string& extension_id,
« no previous file with comments | « chrome/browser/extensions/extension_prefs.h ('k') | chrome/browser/extensions/extensions_service_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698