| Index: chrome/browser/content_settings/content_settings_pref_provider_unittest.cc
|
| diff --git a/chrome/browser/content_settings/content_settings_pref_provider_unittest.cc b/chrome/browser/content_settings/content_settings_pref_provider_unittest.cc
|
| index 01177c1c5c03169c38adc533c10ac87e9b7b5dd7..e15d4fd37652ebe0201baddab226206287a84d83 100644
|
| --- a/chrome/browser/content_settings/content_settings_pref_provider_unittest.cc
|
| +++ b/chrome/browser/content_settings/content_settings_pref_provider_unittest.cc
|
| @@ -6,6 +6,7 @@
|
|
|
| #include "base/auto_reset.h"
|
| #include "base/command_line.h"
|
| +#include "base/memory/scoped_ptr.h"
|
| #include "chrome/browser/content_settings/content_settings_mock_observer.h"
|
| #include "chrome/browser/prefs/browser_prefs.h"
|
| #include "chrome/browser/prefs/default_pref_store.h"
|
| @@ -677,7 +678,7 @@ TEST_F(PrefProviderTest, SyncObsoleteGeolocationPref) {
|
| key, settings_dictionary->DeepCopy());
|
|
|
| key = std::string(
|
| - primary_pattern_2.ToString()+ "," +
|
| + primary_pattern_2.ToString() + "," +
|
| secondary_pattern.ToString());
|
| all_settings_dictionary->SetWithoutPathExpansion(
|
| key, settings_dictionary->DeepCopy());
|
| @@ -734,4 +735,140 @@ TEST_F(PrefProviderTest, AutoSubmitCertificateContentSetting) {
|
| provider.ShutdownOnUIThread();
|
| }
|
|
|
| +TEST_F(PrefProviderTest, MigrateObsoleteNotificationsPref) {
|
| + TestingProfile profile;
|
| + PrefService* prefs = profile.GetPrefs();
|
| + GURL allowed_url("http://www.foo.com");
|
| + GURL allowed_url2("http://www.example.com");
|
| + GURL denied_url("http://www.bar.com");
|
| +
|
| + // Set obsolete preference.
|
| + scoped_ptr<ListValue> allowed_origin_list(new ListValue());
|
| + allowed_origin_list->AppendIfNotPresent(
|
| + Value::CreateStringValue(allowed_url.spec()));
|
| + prefs->Set(prefs::kDesktopNotificationAllowedOrigins,
|
| + *allowed_origin_list);
|
| +
|
| + scoped_ptr<ListValue> denied_origin_list(new ListValue());
|
| + denied_origin_list->AppendIfNotPresent(
|
| + Value::CreateStringValue(denied_url.spec()));
|
| + prefs->Set(prefs::kDesktopNotificationDeniedOrigins,
|
| + *denied_origin_list);
|
| +
|
| + content_settings::PrefProvider provider(prefs, false);
|
| +
|
| + // Test if the migrated settings are loaded and available.
|
| + EXPECT_EQ(CONTENT_SETTING_ALLOW, provider.GetContentSetting(
|
| + allowed_url,
|
| + allowed_url,
|
| + CONTENT_SETTINGS_TYPE_NOTIFICATIONS,
|
| + ""));
|
| + EXPECT_EQ(CONTENT_SETTING_BLOCK, provider.GetContentSetting(
|
| + denied_url,
|
| + denied_url,
|
| + CONTENT_SETTINGS_TYPE_NOTIFICATIONS,
|
| + ""));
|
| + EXPECT_EQ(CONTENT_SETTING_DEFAULT, provider.GetContentSetting(
|
| + allowed_url2,
|
| + allowed_url2,
|
| + CONTENT_SETTINGS_TYPE_NOTIFICATIONS,
|
| + ""));
|
| + // Check if the settings where migrated correctly.
|
| + const DictionaryValue* const_all_settings_dictionary =
|
| + prefs->GetDictionary(prefs::kContentSettingsPatternPairs);
|
| + EXPECT_EQ(2U, const_all_settings_dictionary->size());
|
| + EXPECT_TRUE(const_all_settings_dictionary->HasKey(
|
| + ContentSettingsPattern::FromURLNoWildcard(allowed_url).ToString() + "," +
|
| + ContentSettingsPattern::Wildcard().ToString()));
|
| + EXPECT_TRUE(const_all_settings_dictionary->HasKey(
|
| + ContentSettingsPattern::FromURLNoWildcard(denied_url).ToString() + "," +
|
| + ContentSettingsPattern::Wildcard().ToString()));
|
| +
|
| + // Check that notifications settings were not synced to the obsolete content
|
| + // settings pattern preference.
|
| + const DictionaryValue* const_obsolete_patterns_dictionary =
|
| + prefs->GetDictionary(prefs::kContentSettingsPatterns);
|
| + EXPECT_TRUE(const_obsolete_patterns_dictionary->empty());
|
| +
|
| + // Change obsolete preference. This could be triggered by sync if sync is used
|
| + // with an old version of chrome.
|
| + allowed_origin_list.reset(new ListValue());
|
| + allowed_origin_list->AppendIfNotPresent(
|
| + Value::CreateStringValue(allowed_url2.spec()));
|
| + prefs->Set(prefs::kDesktopNotificationAllowedOrigins,
|
| + *allowed_origin_list);
|
| +
|
| + // Test if the changed obsolete preference was migrated correctly.
|
| + EXPECT_EQ(CONTENT_SETTING_ALLOW, provider.GetContentSetting(
|
| + allowed_url2,
|
| + allowed_url2,
|
| + CONTENT_SETTINGS_TYPE_NOTIFICATIONS,
|
| + ""));
|
| + EXPECT_EQ(CONTENT_SETTING_DEFAULT, provider.GetContentSetting(
|
| + allowed_url,
|
| + allowed_url,
|
| + CONTENT_SETTINGS_TYPE_NOTIFICATIONS,
|
| + ""));
|
| + EXPECT_EQ(CONTENT_SETTING_BLOCK, provider.GetContentSetting(
|
| + denied_url,
|
| + denied_url,
|
| + CONTENT_SETTINGS_TYPE_NOTIFICATIONS,
|
| + ""));
|
| + // Check that geolocation settings were not synced to the obsolete content
|
| + // settings pattern preference.
|
| + const_obsolete_patterns_dictionary =
|
| + prefs->GetDictionary(prefs::kContentSettingsPatterns);
|
| + EXPECT_TRUE(const_obsolete_patterns_dictionary->empty());
|
| +
|
| + provider.ShutdownOnUIThread();
|
| +}
|
| +
|
| +TEST_F(PrefProviderTest, SyncObsoleteNotificationsPref) {
|
| + TestingProfile profile;
|
| + PrefService* prefs = profile.GetPrefs();
|
| +
|
| + content_settings::PrefProvider provider(prefs, false);
|
| +
|
| + // Changing the preferences prefs::kContentSettingsPatternPairs.
|
| + ContentSettingsPattern primary_pattern=
|
| + ContentSettingsPattern::FromString("http://www.bar.com");
|
| + ContentSettingsPattern primary_pattern_2 =
|
| + ContentSettingsPattern::FromString("http://www.example.com");
|
| + ContentSettingsPattern secondary_pattern =
|
| + ContentSettingsPattern::Wildcard();
|
| + GURL primary_url("http://www.bar.com");
|
| + GURL primary_url_2("http://www.example.com");
|
| +
|
| + {
|
| + DictionaryPrefUpdate update(prefs,
|
| + prefs::kContentSettingsPatternPairs);
|
| + DictionaryValue* all_settings_dictionary = update.Get();
|
| +
|
| + scoped_ptr<DictionaryValue> settings_dictionary(new DictionaryValue());
|
| + settings_dictionary->SetInteger("notifications", CONTENT_SETTING_BLOCK);
|
| + std::string key(
|
| + primary_pattern.ToString() + "," +
|
| + secondary_pattern.ToString());
|
| + all_settings_dictionary->SetWithoutPathExpansion(
|
| + key, settings_dictionary->DeepCopy());
|
| +
|
| + settings_dictionary.reset(new DictionaryValue());
|
| + settings_dictionary->SetInteger("notifications", CONTENT_SETTING_ALLOW);
|
| + key = primary_pattern_2.ToString() + "," + secondary_pattern.ToString();
|
| + all_settings_dictionary->SetWithoutPathExpansion(
|
| + key, settings_dictionary->DeepCopy());
|
| + }
|
| +
|
| + // Test if the obsolete notifications preference is kept in sync if the new
|
| + // preference is changed by a sync.
|
| + const ListValue* denied_origin_list =
|
| + prefs->GetList(prefs::kDesktopNotificationAllowedOrigins);
|
| + EXPECT_EQ(1U, denied_origin_list->GetSize());
|
| + const ListValue* allowed_origin_list =
|
| + prefs->GetList(prefs::kDesktopNotificationDeniedOrigins);
|
| + EXPECT_EQ(1U, allowed_origin_list->GetSize());
|
| +
|
| + provider.ShutdownOnUIThread();
|
| +}
|
| +
|
| } // namespace content_settings
|
|
|