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

Unified Diff: extensions/browser/extension_prefs.cc

Issue 217053003: Remove PreferenceAPI dependency from ExtensionPrefs. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: woops Created 6 years, 9 months 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
« no previous file with comments | « extensions/browser/DEPS ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: extensions/browser/extension_prefs.cc
diff --git a/extensions/browser/extension_prefs.cc b/extensions/browser/extension_prefs.cc
index ae265d4af7cf90251a3b0525596150f90ee3a7f9..24f7e5831ba809aba5fac2d5fb2aea243ecfef5e 100644
--- a/extensions/browser/extension_prefs.cc
+++ b/extensions/browser/extension_prefs.cc
@@ -13,7 +13,6 @@
#include "base/strings/string_util.h"
#include "base/value_conversions.h"
#include "chrome/browser/extensions/api/content_settings/content_settings_store.h"
-#include "chrome/browser/extensions/api/preference/preference_api.h"
#include "components/user_prefs/pref_registry_syncable.h"
#include "extensions/browser/admin_policy.h"
#include "extensions/browser/app_sorting.h"
@@ -237,6 +236,75 @@ bool IsEvictedEphemeralApp(const base::DictionaryValue* ext) {
return ext->GetBoolean(kPrefEvictedEphemeralApp, &bool_value) && bool_value;
}
+void LoadExtensionControlledPrefs(ExtensionPrefs* prefs,
+ ExtensionPrefValueMap* value_map,
+ const std::string& extension_id,
+ ExtensionPrefsScope scope) {
+ std::string scope_string;
+ if (!pref_names::ScopeToPrefName(scope, &scope_string))
+ return;
+ std::string key = extension_id + "." + scope_string;
+
+ const base::DictionaryValue* source_dict =
+ prefs->pref_service()->GetDictionary(pref_names::kExtensions);
+ const base::DictionaryValue* preferences = NULL;
+ if (!source_dict->GetDictionary(key, &preferences))
+ return;
+
+ for (base::DictionaryValue::Iterator iter(*preferences); !iter.IsAtEnd();
+ iter.Advance()) {
+ value_map->SetExtensionPref(
+ extension_id, iter.key(), scope, iter.value().DeepCopy());
+ }
+}
+
+void InitExtensionControlledPrefs(ExtensionPrefs* prefs,
+ ExtensionPrefValueMap* value_map) {
+ ExtensionIdList extension_ids;
+ prefs->GetExtensions(&extension_ids);
+
+ for (ExtensionIdList::iterator extension_id = extension_ids.begin();
+ extension_id != extension_ids.end();
+ ++extension_id) {
+ base::Time install_time = prefs->GetInstallTime(*extension_id);
+ bool is_enabled = !prefs->IsExtensionDisabled(*extension_id);
+ bool is_incognito_enabled = prefs->IsIncognitoEnabled(*extension_id);
+ value_map->RegisterExtension(
+ *extension_id, install_time, is_enabled, is_incognito_enabled);
+ prefs->content_settings_store()->RegisterExtension(
+ *extension_id, install_time, is_enabled);
+
+ // Set regular extension controlled prefs.
+ LoadExtensionControlledPrefs(
+ prefs, value_map, *extension_id, kExtensionPrefsScopeRegular);
+ // Set incognito extension controlled prefs.
+ LoadExtensionControlledPrefs(prefs,
+ value_map,
+ *extension_id,
+ kExtensionPrefsScopeIncognitoPersistent);
+ // Set regular-only extension controlled prefs.
+ LoadExtensionControlledPrefs(
+ prefs, value_map, *extension_id, kExtensionPrefsScopeRegularOnly);
+
+ // Set content settings.
+ const base::ListValue* content_settings = NULL;
+ if (prefs->ReadPrefAsList(*extension_id,
+ pref_names::kPrefContentSettings,
+ &content_settings)) {
+ prefs->content_settings_store()->SetExtensionContentSettingFromList(
+ *extension_id, content_settings, kExtensionPrefsScopeRegular);
+ }
+ if (prefs->ReadPrefAsList(*extension_id,
+ pref_names::kPrefIncognitoContentSettings,
+ &content_settings)) {
+ prefs->content_settings_store()->SetExtensionContentSettingFromList(
+ *extension_id,
+ content_settings,
+ kExtensionPrefsScopeIncognitoPersistent);
+ }
+ }
+}
+
} // namespace
//
@@ -1758,7 +1826,7 @@ void ExtensionPrefs::InitPrefStore() {
MigrateDisableReasons(extension_ids);
app_sorting_->Initialize(extension_ids);
- PreferenceAPI::InitExtensionControlledPrefs(this, extension_pref_value_map_);
+ InitExtensionControlledPrefs(this, extension_pref_value_map_);
extension_pref_value_map_->NotifyInitializationCompleted();
}
« no previous file with comments | « extensions/browser/DEPS ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698