| Index: chrome/browser/content_settings/content_settings_pref_provider.cc
|
| diff --git a/chrome/browser/content_settings/content_settings_pref_provider.cc b/chrome/browser/content_settings/content_settings_pref_provider.cc
|
| index d185dcddf73b178e5a3a794706c5a39e125fff24..d19fdb3d9489071bc18d2994ef27d89ba87643a4 100644
|
| --- a/chrome/browser/content_settings/content_settings_pref_provider.cc
|
| +++ b/chrome/browser/content_settings/content_settings_pref_provider.cc
|
| @@ -14,6 +14,7 @@
|
| #include "base/metrics/histogram.h"
|
| #include "chrome/browser/content_settings/content_settings_rule.h"
|
| #include "chrome/browser/content_settings/content_settings_utils.h"
|
| +#include "chrome/browser/content_settings/host_content_settings_map.h"
|
| #include "chrome/browser/prefs/pref_service.h"
|
| #include "chrome/browser/prefs/scoped_user_pref_update.h"
|
| #include "chrome/common/chrome_notification_types.h"
|
| @@ -361,17 +362,33 @@ void PrefProvider::ReadContentSettingsFromPref(bool overwrite) {
|
| }
|
| }
|
| }
|
| - int setting = CONTENT_SETTING_DEFAULT;
|
| - if (settings_dictionary->GetIntegerWithoutPathExpansion(
|
| - GetTypeName(ContentSettingsType(i)), &setting)) {
|
| - DCHECK_NE(CONTENT_SETTING_DEFAULT, setting);
|
| - setting = FixObsoleteCookiePromptMode(content_type,
|
| - ContentSetting(setting));
|
| + Value* value = NULL;
|
| + if (HostContentSettingsMap::ContentTypeHasCompoundValue(content_type)) {
|
| + DictionaryValue* setting = NULL;
|
| + // TODO(xians): Handle the non-dictionary types.
|
| + if (settings_dictionary->GetDictionaryWithoutPathExpansion(
|
| + GetTypeName(ContentSettingsType(i)), &setting)) {
|
| + DCHECK(!setting->empty());
|
| + value = setting->DeepCopy();
|
| + }
|
| + } else {
|
| + int setting = CONTENT_SETTING_DEFAULT;
|
| + if (settings_dictionary->GetIntegerWithoutPathExpansion(
|
| + GetTypeName(ContentSettingsType(i)), &setting)) {
|
| + DCHECK_NE(CONTENT_SETTING_DEFAULT, setting);
|
| + setting = FixObsoleteCookiePromptMode(content_type,
|
| + ContentSetting(setting));
|
| + value = Value::CreateIntegerValue(setting);
|
| + }
|
| + }
|
| +
|
| + // |value_map_| will take the ownership of |value|.
|
| + if (value != NULL) {
|
| value_map_.SetValue(pattern_pair.first,
|
| pattern_pair.second,
|
| content_type,
|
| ResourceIdentifier(""),
|
| - Value::CreateIntegerValue(setting));
|
| + value);
|
| }
|
| }
|
| }
|
|
|