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

Unified Diff: chrome/browser/content_settings/content_settings_pref_provider.cc

Issue 7810017: Revert 98938 - Migrate Obsolete NotificationsSettings and remove content_settings::NotificationsP... (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: Created 9 years, 4 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
Index: chrome/browser/content_settings/content_settings_pref_provider.cc
===================================================================
--- chrome/browser/content_settings/content_settings_pref_provider.cc (revision 98940)
+++ chrome/browser/content_settings/content_settings_pref_provider.cc (working copy)
@@ -43,9 +43,9 @@
"per_plugin",
NULL,
NULL,
+ NULL, // Not used for Notifications
+ NULL, // Not used for Intents.
NULL,
- NULL,
- NULL,
};
COMPILE_ASSERT(arraysize(kResourceTypeNames) == CONTENT_SETTINGS_NUM_TYPES,
resource_type_names_incorrect_size);
@@ -73,7 +73,9 @@
"plugins",
"popups",
"geolocation",
- "notifications",
+ // TODO(markusheintz): Refactoring in progress. Content settings exceptions
+ // for notifications added next.
+ "notifications", // Only used for default Notifications settings.
"intents",
"auto-select-certificate"
};
@@ -121,24 +123,6 @@
return setting;
}
-// Clears all settings for the given |type| in the given |pattern_pairs|
-// dictionary.
-void ClearSettings(ContentSettingsType type,
- DictionaryValue* pattern_pairs) {
- std::string type_name(kTypeNames[type]);
- for (DictionaryValue::key_iterator i = pattern_pairs->begin_keys();
- i != pattern_pairs->end_keys();
- ++i) {
- const std::string& pattern_pair(*i);
-
- DictionaryValue* settings = NULL;
- pattern_pairs->GetDictionaryWithoutPathExpansion(
- pattern_pair, &settings);
-
- settings->RemoveWithoutPathExpansion(type_name, NULL);
- }
-}
-
} // namespace
namespace content_settings {
@@ -387,10 +371,6 @@
PrefService::SYNCABLE_PREF);
prefs->RegisterDictionaryPref(prefs::kContentSettingsPatterns,
PrefService::SYNCABLE_PREF);
- prefs->RegisterListPref(prefs::kDesktopNotificationAllowedOrigins,
- PrefService::SYNCABLE_PREF);
- prefs->RegisterListPref(prefs::kDesktopNotificationDeniedOrigins,
- PrefService::SYNCABLE_PREF);
prefs->RegisterListPref(prefs::kPopupWhitelistedHosts,
PrefService::UNSYNCABLE_PREF);
prefs->RegisterDictionaryPref(prefs::kPerHostContentSettings,
@@ -409,7 +389,6 @@
MigrateObsoletePopupsPref();
MigrateObsoleteContentSettingsPatternPref();
MigrateObsoleteGeolocationPref();
- MigrateObsoleteNotificationsPrefs();
}
// Verify preferences version.
@@ -434,8 +413,6 @@
pref_change_registrar_.Add(prefs::kContentSettingsPatterns, this);
pref_change_registrar_.Add(prefs::kContentSettingsPatternPairs, this);
pref_change_registrar_.Add(prefs::kGeolocationContentSettings, this);
- pref_change_registrar_.Add(prefs::kDesktopNotificationAllowedOrigins, this);
- pref_change_registrar_.Add(prefs::kDesktopNotificationDeniedOrigins, this);
}
ContentSetting PrefProvider::GetContentSetting(
@@ -534,7 +511,6 @@
content_type,
resource_identifier,
setting);
- prefs_->ScheduleSavePersistentPrefs();
}
NotifyObservers(
@@ -569,7 +545,7 @@
}
}
}
- prefs_->ScheduleSavePersistentPrefs();
+
NotifyObservers(ContentSettingsPattern(),
ContentSettingsPattern(),
content_type,
@@ -592,20 +568,16 @@
std::string* name = Details<std::string>(details).ptr();
if (*name == prefs::kContentSettingsPatternPairs) {
SyncObsoletePatternPref();
- SyncObsoletePrefs();
+ SyncObsoleteGeolocationPref();
} else if (*name == prefs::kContentSettingsPatterns) {
MigrateObsoleteContentSettingsPatternPref();
} else if (*name == prefs::kGeolocationContentSettings) {
MigrateObsoleteGeolocationPref();
- } else if (*name == prefs::kDesktopNotificationAllowedOrigins ||
- *name == prefs::kDesktopNotificationDeniedOrigins) {
- MigrateObsoleteNotificationsPrefs();
} else {
NOTREACHED() << "Unexpected preference observed";
return;
}
}
- prefs_->ScheduleSavePersistentPrefs();
ReadContentSettingsFromPref(true);
NotifyObservers(ContentSettingsPattern(),
@@ -631,17 +603,11 @@
const ResourceIdentifier& resource_identifier,
ContentSetting setting) {
AutoReset<bool> auto_reset(&updating_preferences_, true);
- {
- DictionaryPrefUpdate update(prefs_,
- prefs::kContentSettingsPatternPairs);
- DictionaryValue* pattern_pairs_settings = update.Get();
- UpdatePatternPairsSettings(primary_pattern,
- secondary_pattern,
- content_type,
- resource_identifier,
- setting,
- pattern_pairs_settings);
- }
+ UpdatePatternPairsPref(primary_pattern,
+ secondary_pattern,
+ content_type,
+ resource_identifier,
+ setting);
if (content_type != CONTENT_SETTINGS_TYPE_GEOLOCATION &&
content_type != CONTENT_SETTINGS_TYPE_NOTIFICATIONS) {
UpdateObsoletePatternsPref(primary_pattern,
@@ -649,18 +615,9 @@
content_type,
resource_identifier,
setting);
- } else if (content_type == CONTENT_SETTINGS_TYPE_GEOLOCATION) {
+ }
+ if (content_type == CONTENT_SETTINGS_TYPE_GEOLOCATION) {
UpdateObsoleteGeolocationPref(primary_pattern, secondary_pattern, setting);
- } else if (content_type == CONTENT_SETTINGS_TYPE_NOTIFICATIONS) {
- ListPrefUpdate update_allowed_sites(
- prefs_, prefs::kDesktopNotificationAllowedOrigins);
- ListPrefUpdate update_denied_sites(
- prefs_, prefs::kDesktopNotificationDeniedOrigins);
- UpdateObsoleteNotificationsSettings(primary_pattern,
- secondary_pattern,
- setting,
- update_allowed_sites.Get(),
- update_denied_sites.Get());
}
}
@@ -822,23 +779,26 @@
}
}
-void PrefProvider::UpdatePatternPairsSettings(
+void PrefProvider::UpdatePatternPairsPref(
const ContentSettingsPattern& primary_pattern,
const ContentSettingsPattern& secondary_pattern,
ContentSettingsType content_type,
const ResourceIdentifier& resource_identifier,
- ContentSetting setting,
- DictionaryValue* pattern_pairs_settings) {
+ ContentSetting setting) {
+ DictionaryPrefUpdate update(prefs_,
+ prefs::kContentSettingsPatternPairs);
+ DictionaryValue* all_settings_dictionary = update.Get();
+
// Get settings dictionary for the given patterns.
std::string pattern_str(CreatePatternString(primary_pattern,
secondary_pattern));
DictionaryValue* settings_dictionary = NULL;
- bool found = pattern_pairs_settings->GetDictionaryWithoutPathExpansion(
+ bool found = all_settings_dictionary->GetDictionaryWithoutPathExpansion(
pattern_str, &settings_dictionary);
if (!found && (setting != CONTENT_SETTING_DEFAULT)) {
settings_dictionary = new DictionaryValue;
- pattern_pairs_settings->SetWithoutPathExpansion(
+ all_settings_dictionary->SetWithoutPathExpansion(
pattern_str, settings_dictionary);
}
@@ -880,7 +840,7 @@
}
// Remove the settings dictionary if it is empty.
if (settings_dictionary->empty()) {
- pattern_pairs_settings->RemoveWithoutPathExpansion(
+ all_settings_dictionary->RemoveWithoutPathExpansion(
pattern_str, NULL);
}
}
@@ -923,31 +883,6 @@
}
}
-void PrefProvider::UpdateObsoleteNotificationsSettings(
- const ContentSettingsPattern& primary_pattern,
- const ContentSettingsPattern& secondary_pattern,
- ContentSetting setting,
- ListValue* allowed_sites,
- ListValue* denied_sites) {
- DCHECK_EQ(secondary_pattern, ContentSettingsPattern::Wildcard());
- GURL origin(primary_pattern.ToString());
- DCHECK(origin.is_valid());
- scoped_ptr<StringValue> value(new StringValue(origin.spec()));
- if (setting == CONTENT_SETTING_ALLOW) {
- denied_sites->Remove(*value, NULL);
- allowed_sites->AppendIfNotPresent(value.release());
- } else if (setting == CONTENT_SETTING_BLOCK) {
- allowed_sites->Remove(*value, NULL);
- denied_sites->AppendIfNotPresent(value.release());
- } else if (setting == CONTENT_SETTING_DEFAULT) {
- denied_sites->Remove(*value, NULL);
- allowed_sites->Remove(*value, NULL);
- } else {
- NOTREACHED() << "Setting value: " << setting
- << " is not supported for notifications";
- }
-}
-
// static
void PrefProvider::CanonicalizeContentSettingsExceptions(
DictionaryValue* all_settings_dictionary) {
@@ -1225,10 +1160,6 @@
if (!prefs_->HasPrefPath(prefs::kGeolocationContentSettings))
return;
- DictionaryPrefUpdate update(prefs_,
- prefs::kContentSettingsPatternPairs);
- DictionaryValue* pattern_pairs_settings = update.Get();
-
const DictionaryValue* geolocation_settings =
prefs_->GetDictionary(prefs::kGeolocationContentSettings);
for (DictionaryValue::key_iterator i =
@@ -1263,78 +1194,22 @@
ContentSettingsPattern::FromURLNoWildcard(secondary_url);
DCHECK(primary_pattern.IsValid() && secondary_pattern.IsValid());
- UpdatePatternPairsSettings(primary_pattern,
- secondary_pattern,
- CONTENT_SETTINGS_TYPE_GEOLOCATION,
- std::string(),
- IntToContentSetting(setting_value),
- pattern_pairs_settings);
+ UpdatePatternPairsPref(primary_pattern,
+ secondary_pattern,
+ CONTENT_SETTINGS_TYPE_GEOLOCATION,
+ std::string(),
+ IntToContentSetting(setting_value));
}
}
}
-void PrefProvider::MigrateObsoleteNotificationsPrefs() {
- // The notifications settings in the preferences
- // prefs::kContentSettingsPatternPairs do not contain the latest
- // notifications settings. So all notification settings are cleared and
- // migrated from the obsolete preferences for notifications settings that
- // contain the latest settings.
- DictionaryPrefUpdate update(prefs_, prefs::kContentSettingsPatternPairs);
- DictionaryValue* pattern_pairs_settings = update.Get();
- ClearSettings(CONTENT_SETTINGS_TYPE_NOTIFICATIONS, pattern_pairs_settings);
-
- const ListValue* allowed_origins =
- prefs_->GetList(prefs::kDesktopNotificationAllowedOrigins);
- for (size_t i = 0; i < allowed_origins->GetSize(); ++i) {
- std::string url_string;
- bool status = allowed_origins->GetString(i, &url_string);
- DCHECK(status);
- ContentSettingsPattern primary_pattern =
- ContentSettingsPattern::FromURLNoWildcard(GURL(url_string));
- DCHECK(primary_pattern.IsValid());
- UpdatePatternPairsSettings(primary_pattern,
- ContentSettingsPattern::Wildcard(),
- CONTENT_SETTINGS_TYPE_NOTIFICATIONS,
- std::string(),
- CONTENT_SETTING_ALLOW,
- pattern_pairs_settings);
- }
-
- const ListValue* denied_origins =
- prefs_->GetList(prefs::kDesktopNotificationDeniedOrigins);
- for (size_t i = 0; i < denied_origins->GetSize(); ++i) {
- std::string url_string;
- bool status = denied_origins->GetString(i, &url_string);
- DCHECK(status);
- ContentSettingsPattern primary_pattern =
- ContentSettingsPattern::FromURLNoWildcard(GURL(url_string));
- DCHECK(primary_pattern.IsValid());
- UpdatePatternPairsSettings(primary_pattern,
- ContentSettingsPattern::Wildcard(),
- CONTENT_SETTINGS_TYPE_NOTIFICATIONS,
- std::string(),
- CONTENT_SETTING_BLOCK,
- pattern_pairs_settings);
- }
-}
-
-void PrefProvider::SyncObsoletePrefs() {
+void PrefProvider::SyncObsoleteGeolocationPref() {
DCHECK(prefs_);
DCHECK(prefs_->HasPrefPath(prefs::kContentSettingsPatternPairs));
- // Clear obsolete preferences first. Then copy the settings from the new
- // preference to the obsolete ones.
+ // Clear the obsolete preference for geolocation settings. Then copy all
+ // geolocation settings from the new preference to the obsolete one.
prefs_->ClearPref(prefs::kGeolocationContentSettings);
- prefs_->ClearPref(prefs::kDesktopNotificationAllowedOrigins);
- prefs_->ClearPref(prefs::kDesktopNotificationDeniedOrigins);
-
- ListPrefUpdate update_allowed_origins(
- prefs_, prefs::kDesktopNotificationAllowedOrigins);
- ListPrefUpdate update_denied_origins(
- prefs_, prefs::kDesktopNotificationDeniedOrigins);
- ListValue* allowed_origins = update_allowed_origins.Get();
- ListValue* denied_origins = update_denied_origins.Get();
-
const DictionaryValue* pattern_pairs_dictionary =
prefs_->GetDictionary(prefs::kContentSettingsPatternPairs);
for (DictionaryValue::key_iterator i =
@@ -1347,22 +1222,16 @@
DCHECK(pattern_pair.first.IsValid() && pattern_pair.second.IsValid());
DictionaryValue* settings_dictionary = NULL;
- pattern_pairs_dictionary->GetDictionaryWithoutPathExpansion(
+ bool found = pattern_pairs_dictionary->GetDictionaryWithoutPathExpansion(
key, &settings_dictionary);
+ DCHECK(found);
- int setting_value = 0;
- if (settings_dictionary->GetInteger(
- kTypeNames[CONTENT_SETTINGS_TYPE_NOTIFICATIONS], &setting_value)) {
- UpdateObsoleteNotificationsSettings(pattern_pair.first,
- pattern_pair.second,
- ContentSetting(setting_value),
- allowed_origins,
- denied_origins);
- }
+ if (settings_dictionary->HasKey(
+ kTypeNames[CONTENT_SETTINGS_TYPE_GEOLOCATION])) {
+ int setting_value;
+ settings_dictionary->GetInteger(
+ kTypeNames[CONTENT_SETTINGS_TYPE_GEOLOCATION], &setting_value);
- setting_value = 0;
- if (settings_dictionary->GetInteger(
- kTypeNames[CONTENT_SETTINGS_TYPE_GEOLOCATION], &setting_value)) {
UpdateObsoleteGeolocationPref(pattern_pair.first,
pattern_pair.second,
ContentSetting(setting_value));

Powered by Google App Engine
This is Rietveld 408576698