| 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();
|
| }
|
|
|