Commit d005dbd7 authored by rockot@chromium.org's avatar rockot@chromium.org

Remove PreferenceAPI dependency from ExtensionPrefs.

The only dependency here is on some static methods that
are only used by ExtensionPrefs. These should live inside
the ExtensionPrefs module.

(clang_format also applied, pardon the dust)

BUG=357634,162530
R=scheib@chromium.org

Review URL: https://codereview.chromium.org/217053003

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@260272 0039d316-1c4b-4281-b951-d872f2087c98
parent 9c497bff
...@@ -447,82 +447,6 @@ void PreferenceAPI::OnListenerAdded(const EventListenerInfo& details) { ...@@ -447,82 +447,6 @@ void PreferenceAPI::OnListenerAdded(const EventListenerInfo& details) {
ExtensionSystem::Get(profile_)->event_router()->UnregisterObserver(this); ExtensionSystem::Get(profile_)->event_router()->UnregisterObserver(this);
} }
// static
void PreferenceAPI::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());
}
}
// static
void PreferenceAPI::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);
}
}
}
void PreferenceAPI::OnContentSettingChanged(const std::string& extension_id, void PreferenceAPI::OnContentSettingChanged(const std::string& extension_id,
bool incognito) { bool incognito) {
if (incognito) { if (incognito) {
......
...@@ -108,19 +108,6 @@ class PreferenceAPI : public PreferenceAPIBase, ...@@ -108,19 +108,6 @@ class PreferenceAPI : public PreferenceAPIBase,
// EventRouter::Observer implementation. // EventRouter::Observer implementation.
virtual void OnListenerAdded(const EventListenerInfo& details) OVERRIDE; virtual void OnListenerAdded(const EventListenerInfo& details) OVERRIDE;
// Loads the preferences controlled by the specified extension from their
// dictionary and sets them in the |value_map|.
static void LoadExtensionControlledPrefs(ExtensionPrefs* prefs,
ExtensionPrefValueMap* value_map,
const std::string& extension_id,
ExtensionPrefsScope scope);
// Store extension controlled preference values in the |value_map|,
// which then informs the subscribers (ExtensionPrefStores) about the winning
// values.
static void InitExtensionControlledPrefs(ExtensionPrefs* prefs,
ExtensionPrefValueMap* value_map);
private: private:
friend class BrowserContextKeyedAPIFactory<PreferenceAPI>; friend class BrowserContextKeyedAPIFactory<PreferenceAPI>;
......
...@@ -14,7 +14,6 @@ include_rules = [ ...@@ -14,7 +14,6 @@ include_rules = [
# TODO(jamescook): Remove these. http://crbug.com/162530 # TODO(jamescook): Remove these. http://crbug.com/162530
"+chrome/browser/chrome_notification_types.h", "+chrome/browser/chrome_notification_types.h",
"+chrome/browser/extensions/api/content_settings/content_settings_store.h", "+chrome/browser/extensions/api/content_settings/content_settings_store.h",
"+chrome/browser/extensions/api/preference/preference_api.h",
"+chrome/browser/extensions/api/runtime/runtime_api.h", "+chrome/browser/extensions/api/runtime/runtime_api.h",
"+chrome/browser/renderer_host/chrome_render_message_filter.h", "+chrome/browser/renderer_host/chrome_render_message_filter.h",
"+chrome/common/extensions/api/sockets/sockets_manifest_data.h", "+chrome/common/extensions/api/sockets/sockets_manifest_data.h",
......
...@@ -13,7 +13,6 @@ ...@@ -13,7 +13,6 @@
#include "base/strings/string_util.h" #include "base/strings/string_util.h"
#include "base/value_conversions.h" #include "base/value_conversions.h"
#include "chrome/browser/extensions/api/content_settings/content_settings_store.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 "components/user_prefs/pref_registry_syncable.h"
#include "extensions/browser/admin_policy.h" #include "extensions/browser/admin_policy.h"
#include "extensions/browser/app_sorting.h" #include "extensions/browser/app_sorting.h"
...@@ -237,6 +236,75 @@ bool IsEvictedEphemeralApp(const base::DictionaryValue* ext) { ...@@ -237,6 +236,75 @@ bool IsEvictedEphemeralApp(const base::DictionaryValue* ext) {
return ext->GetBoolean(kPrefEvictedEphemeralApp, &bool_value) && bool_value; 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 } // namespace
// //
...@@ -1758,7 +1826,7 @@ void ExtensionPrefs::InitPrefStore() { ...@@ -1758,7 +1826,7 @@ void ExtensionPrefs::InitPrefStore() {
MigrateDisableReasons(extension_ids); MigrateDisableReasons(extension_ids);
app_sorting_->Initialize(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(); extension_pref_value_map_->NotifyInitializationCompleted();
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment