Chromium Code Reviews| Index: chrome/browser/extensions/api/content_settings/content_settings_store_unittest.cc |
| diff --git a/chrome/browser/extensions/api/content_settings/content_settings_store_unittest.cc b/chrome/browser/extensions/api/content_settings/content_settings_store_unittest.cc |
| index 9986d4e2436bf2c01f8ee9455ec70dc304c89bce..3a89e78df78a19d46fc5d86b8bb7849b370a6941 100644 |
| --- a/chrome/browser/extensions/api/content_settings/content_settings_store_unittest.cc |
| +++ b/chrome/browser/extensions/api/content_settings/content_settings_store_unittest.cc |
| @@ -8,6 +8,10 @@ |
| #include <memory> |
| +#include "base/memory/ptr_util.h" |
| +#include "base/values.h" |
| +#include "chrome/browser/extensions/api/content_settings/content_settings_api_constants.h" |
| +#include "components/content_settings/core/browser/content_settings_registry.h" |
| #include "components/content_settings/core/browser/content_settings_rule.h" |
| #include "components/content_settings/core/browser/content_settings_utils.h" |
| #include "components/content_settings/core/test/content_settings_test_utils.h" |
| @@ -19,6 +23,8 @@ using ::testing::Mock; |
| namespace extensions { |
| +namespace keys = content_settings_api_constants; |
| + |
| namespace { |
| void CheckRule(const content_settings::Rule& rule, |
| @@ -255,4 +261,89 @@ TEST_F(ContentSettingsStoreTest, GetAllSettings) { |
| ASSERT_EQ(0u, rules.size()); |
| } |
| +TEST_F(ContentSettingsStoreTest, SetFromList) { |
| + // Force creation of ContentSettingsRegistry, so that the string to content |
| + // setting type lookup can succeed. |
| + content_settings::ContentSettingsRegistry::GetInstance(); |
| + |
| + ::testing::StrictMock<MockContentSettingsStoreObserver> observer; |
| + store()->AddObserver(&observer); |
| + |
| + GURL url("http://www.youtube.com"); |
| + |
| + EXPECT_EQ(CONTENT_SETTING_DEFAULT, |
| + GetContentSettingFromStore(store(), |
| + url, |
| + url, |
| + CONTENT_SETTINGS_TYPE_COOKIES, |
| + std::string(), |
| + false)); |
| + |
| + // Register first extension |
| + std::string ext_id("my_extension"); |
| + RegisterExtension(ext_id); |
| + |
| + // Set setting via a list |
| + ContentSettingsPattern pattern = |
| + ContentSettingsPattern::FromURL(GURL("http://www.youtube.com")); |
| + EXPECT_CALL(observer, OnContentSettingChanged(ext_id, false)); |
| + |
| + // Build a preference list in JSON format. |
| + base::ListValue pref_list; |
| + // {"primaryPattern": pattern, "secondaryPattern": pattern, "type": "cookies", |
| + // "setting": "allow"} |
| + auto dict_value = base::MakeUnique<base::DictionaryValue>(); |
| + dict_value->SetString(keys::kPrimaryPatternKey, pattern.ToString()); |
| + dict_value->SetString(keys::kSecondaryPatternKey, pattern.ToString()); |
| + dict_value->SetString(keys::kContentSettingsTypeKey, "cookies"); |
| + dict_value->SetString(keys::kContentSettingKey, "allow"); |
| + pref_list.Append(std::move(dict_value)); |
| + // Test content settings types that have been removed. Should be ignored. |
| + // {"primaryPattern": pattern, "secondaryPattern": pattern, |
| + // "type": "fullscreen", "setting": "allow"} |
| + dict_value = base::MakeUnique<base::DictionaryValue>(); |
| + dict_value->SetString(keys::kPrimaryPatternKey, pattern.ToString()); |
| + dict_value->SetString(keys::kSecondaryPatternKey, pattern.ToString()); |
| + dict_value->SetString(keys::kContentSettingsTypeKey, "fullscreen"); |
| + dict_value->SetString(keys::kContentSettingKey, "allow"); |
| + pref_list.Append(std::move(dict_value)); |
| + // {"primaryPattern": pattern, "secondaryPattern": pattern, |
| + // "type": "mouselock", "setting": "allow"} |
| + dict_value = base::MakeUnique<base::DictionaryValue>(); |
| + dict_value->SetString(keys::kPrimaryPatternKey, pattern.ToString()); |
| + dict_value->SetString(keys::kSecondaryPatternKey, pattern.ToString()); |
| + dict_value->SetString(keys::kContentSettingsTypeKey, "mouselock"); |
| + dict_value->SetString(keys::kContentSettingKey, "allow"); |
| + pref_list.Append(std::move(dict_value)); |
| + |
| + store()->SetExtensionContentSettingFromList(ext_id, &pref_list, |
| + kExtensionPrefsScopeRegular); |
| + Mock::VerifyAndClear(&observer); |
| + |
| + EXPECT_EQ(CONTENT_SETTING_ALLOW, |
| + GetContentSettingFromStore(store(), |
| + url, |
| + url, |
| + CONTENT_SETTINGS_TYPE_COOKIES, |
| + std::string(), |
| + false)); |
| + // Fullscreen and mouselock should remain unchanged. |
|
benwells
2016/10/21 05:19:04
Nit: Would it be clearer to say "not be stored" in
Matt Giuca
2016/10/21 05:21:43
This getter isn't directly getting the data that w
Matt Giuca
2016/10/21 05:31:32
Done.
|
| + EXPECT_EQ(CONTENT_SETTING_DEFAULT, |
| + GetContentSettingFromStore(store(), |
| + url, |
| + url, |
| + CONTENT_SETTINGS_TYPE_FULLSCREEN, |
| + std::string(), |
| + false)); |
| + EXPECT_EQ(CONTENT_SETTING_DEFAULT, |
| + GetContentSettingFromStore(store(), |
| + url, |
| + url, |
| + CONTENT_SETTINGS_TYPE_MOUSELOCK, |
| + std::string(), |
| + false)); |
| + |
| + store()->RemoveObserver(&observer); |
| +} |
| + |
| } // namespace extensions |