| 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..2d9412e92fa97d4d7b6cd19e4152a193b6d6616b 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));
|
| + // The fullscreen and mouselock settings should have been ignored.
|
| + 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
|
|
|