| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "components/content_settings/core/browser/cookie_settings.h" | 5 #include "components/content_settings/core/browser/cookie_settings.h" |
| 6 | 6 |
| 7 #include "components/content_settings/core/browser/host_content_settings_map.h" | 7 #include "components/content_settings/core/browser/host_content_settings_map.h" |
| 8 #include "components/content_settings/core/common/content_settings_pattern.h" | 8 #include "components/content_settings/core/common/content_settings_pattern.h" |
| 9 #include "components/content_settings/core/common/pref_names.h" | 9 #include "components/content_settings/core/common/pref_names.h" |
| 10 #include "components/pref_registry/testing_pref_service_syncable.h" | 10 #include "components/pref_registry/testing_pref_service_syncable.h" |
| (...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 44 const GURL kAllowedSite; | 44 const GURL kAllowedSite; |
| 45 const GURL kFirstPartySite; | 45 const GURL kFirstPartySite; |
| 46 const GURL kChromeURL; | 46 const GURL kChromeURL; |
| 47 const GURL kExtensionURL; | 47 const GURL kExtensionURL; |
| 48 const GURL kHttpSite; | 48 const GURL kHttpSite; |
| 49 const GURL kHttpsSite; | 49 const GURL kHttpsSite; |
| 50 ContentSettingsPattern kAllHttpsSitesPattern; | 50 ContentSettingsPattern kAllHttpsSitesPattern; |
| 51 }; | 51 }; |
| 52 | 52 |
| 53 TEST_F(CookieSettingsTest, TestWhitelistedScheme) { | 53 TEST_F(CookieSettingsTest, TestWhitelistedScheme) { |
| 54 cookie_settings_->SetCookieSetting(ContentSettingsPattern::Wildcard(), | 54 cookie_settings_->SetDefaultCookieSetting(CONTENT_SETTING_BLOCK); |
| 55 ContentSettingsPattern::Wildcard(), | |
| 56 CONTENT_SETTING_BLOCK); | |
| 57 EXPECT_FALSE(cookie_settings_->IsReadingCookieAllowed(kHttpSite, kChromeURL)); | 55 EXPECT_FALSE(cookie_settings_->IsReadingCookieAllowed(kHttpSite, kChromeURL)); |
| 58 EXPECT_TRUE(cookie_settings_->IsReadingCookieAllowed(kHttpsSite, kChromeURL)); | 56 EXPECT_TRUE(cookie_settings_->IsReadingCookieAllowed(kHttpsSite, kChromeURL)); |
| 59 EXPECT_TRUE(cookie_settings_->IsReadingCookieAllowed(kChromeURL, kHttpSite)); | 57 EXPECT_TRUE(cookie_settings_->IsReadingCookieAllowed(kChromeURL, kHttpSite)); |
| 60 #if defined(ENABLE_EXTENSIONS) | 58 #if defined(ENABLE_EXTENSIONS) |
| 61 EXPECT_TRUE( | 59 EXPECT_TRUE( |
| 62 cookie_settings_->IsReadingCookieAllowed(kExtensionURL, kExtensionURL)); | 60 cookie_settings_->IsReadingCookieAllowed(kExtensionURL, kExtensionURL)); |
| 63 #else | 61 #else |
| 64 EXPECT_FALSE( | 62 EXPECT_FALSE( |
| 65 cookie_settings_->IsReadingCookieAllowed(kExtensionURL, kExtensionURL)); | 63 cookie_settings_->IsReadingCookieAllowed(kExtensionURL, kExtensionURL)); |
| 66 #endif | 64 #endif |
| 67 EXPECT_FALSE( | 65 EXPECT_FALSE( |
| 68 cookie_settings_->IsReadingCookieAllowed(kExtensionURL, kHttpSite)); | 66 cookie_settings_->IsReadingCookieAllowed(kExtensionURL, kHttpSite)); |
| 69 } | 67 } |
| 70 | 68 |
| 71 TEST_F(CookieSettingsTest, CookiesBlockSingle) { | 69 TEST_F(CookieSettingsTest, CookiesBlockSingle) { |
| 72 cookie_settings_->SetCookieSetting( | 70 cookie_settings_->SetCookieSetting(kBlockedSite, CONTENT_SETTING_BLOCK); |
| 73 ContentSettingsPattern::FromURL(kBlockedSite), | |
| 74 ContentSettingsPattern::Wildcard(), CONTENT_SETTING_BLOCK); | |
| 75 EXPECT_FALSE( | 71 EXPECT_FALSE( |
| 76 cookie_settings_->IsReadingCookieAllowed(kBlockedSite, kBlockedSite)); | 72 cookie_settings_->IsReadingCookieAllowed(kBlockedSite, kBlockedSite)); |
| 77 } | 73 } |
| 78 | 74 |
| 79 TEST_F(CookieSettingsTest, CookiesBlockThirdParty) { | 75 TEST_F(CookieSettingsTest, CookiesBlockThirdParty) { |
| 80 prefs_.SetBoolean(prefs::kBlockThirdPartyCookies, true); | 76 prefs_.SetBoolean(prefs::kBlockThirdPartyCookies, true); |
| 81 EXPECT_FALSE( | 77 EXPECT_FALSE( |
| 82 cookie_settings_->IsReadingCookieAllowed(kBlockedSite, kFirstPartySite)); | 78 cookie_settings_->IsReadingCookieAllowed(kBlockedSite, kFirstPartySite)); |
| 83 EXPECT_FALSE(cookie_settings_->IsCookieSessionOnly(kBlockedSite)); | 79 EXPECT_FALSE(cookie_settings_->IsCookieSessionOnly(kBlockedSite)); |
| 84 EXPECT_FALSE( | 80 EXPECT_FALSE( |
| 85 cookie_settings_->IsSettingCookieAllowed(kBlockedSite, kFirstPartySite)); | 81 cookie_settings_->IsSettingCookieAllowed(kBlockedSite, kFirstPartySite)); |
| 86 } | 82 } |
| 87 | 83 |
| 88 TEST_F(CookieSettingsTest, CookiesAllowThirdParty) { | 84 TEST_F(CookieSettingsTest, CookiesAllowThirdParty) { |
| 89 EXPECT_TRUE( | 85 EXPECT_TRUE( |
| 90 cookie_settings_->IsReadingCookieAllowed(kBlockedSite, kFirstPartySite)); | 86 cookie_settings_->IsReadingCookieAllowed(kBlockedSite, kFirstPartySite)); |
| 91 EXPECT_TRUE( | 87 EXPECT_TRUE( |
| 92 cookie_settings_->IsSettingCookieAllowed(kBlockedSite, kFirstPartySite)); | 88 cookie_settings_->IsSettingCookieAllowed(kBlockedSite, kFirstPartySite)); |
| 93 EXPECT_FALSE(cookie_settings_->IsCookieSessionOnly(kBlockedSite)); | 89 EXPECT_FALSE(cookie_settings_->IsCookieSessionOnly(kBlockedSite)); |
| 94 } | 90 } |
| 95 | 91 |
| 96 TEST_F(CookieSettingsTest, CookiesExplicitBlockSingleThirdParty) { | 92 TEST_F(CookieSettingsTest, CookiesExplicitBlockSingleThirdParty) { |
| 97 cookie_settings_->SetCookieSetting( | 93 cookie_settings_->SetCookieSetting(kBlockedSite, CONTENT_SETTING_BLOCK); |
| 98 ContentSettingsPattern::FromURL(kBlockedSite), | |
| 99 ContentSettingsPattern::Wildcard(), CONTENT_SETTING_BLOCK); | |
| 100 EXPECT_FALSE( | 94 EXPECT_FALSE( |
| 101 cookie_settings_->IsReadingCookieAllowed(kBlockedSite, kFirstPartySite)); | 95 cookie_settings_->IsReadingCookieAllowed(kBlockedSite, kFirstPartySite)); |
| 102 EXPECT_FALSE( | 96 EXPECT_FALSE( |
| 103 cookie_settings_->IsSettingCookieAllowed(kBlockedSite, kFirstPartySite)); | 97 cookie_settings_->IsSettingCookieAllowed(kBlockedSite, kFirstPartySite)); |
| 104 EXPECT_TRUE( | 98 EXPECT_TRUE( |
| 105 cookie_settings_->IsSettingCookieAllowed(kAllowedSite, kFirstPartySite)); | 99 cookie_settings_->IsSettingCookieAllowed(kAllowedSite, kFirstPartySite)); |
| 106 } | 100 } |
| 107 | 101 |
| 108 TEST_F(CookieSettingsTest, CookiesExplicitSessionOnly) { | 102 TEST_F(CookieSettingsTest, CookiesExplicitSessionOnly) { |
| 109 cookie_settings_->SetCookieSetting( | 103 cookie_settings_->SetCookieSetting(kBlockedSite, |
| 110 ContentSettingsPattern::FromURL(kBlockedSite), | 104 CONTENT_SETTING_SESSION_ONLY); |
| 111 ContentSettingsPattern::Wildcard(), CONTENT_SETTING_SESSION_ONLY); | |
| 112 EXPECT_TRUE( | 105 EXPECT_TRUE( |
| 113 cookie_settings_->IsReadingCookieAllowed(kBlockedSite, kFirstPartySite)); | 106 cookie_settings_->IsReadingCookieAllowed(kBlockedSite, kFirstPartySite)); |
| 114 EXPECT_TRUE( | 107 EXPECT_TRUE( |
| 115 cookie_settings_->IsSettingCookieAllowed(kBlockedSite, kFirstPartySite)); | 108 cookie_settings_->IsSettingCookieAllowed(kBlockedSite, kFirstPartySite)); |
| 116 EXPECT_TRUE(cookie_settings_->IsCookieSessionOnly(kBlockedSite)); | 109 EXPECT_TRUE(cookie_settings_->IsCookieSessionOnly(kBlockedSite)); |
| 117 | 110 |
| 118 prefs_.SetBoolean(prefs::kBlockThirdPartyCookies, true); | 111 prefs_.SetBoolean(prefs::kBlockThirdPartyCookies, true); |
| 119 EXPECT_TRUE( | 112 EXPECT_TRUE( |
| 120 cookie_settings_->IsReadingCookieAllowed(kBlockedSite, kFirstPartySite)); | 113 cookie_settings_->IsReadingCookieAllowed(kBlockedSite, kFirstPartySite)); |
| 121 EXPECT_TRUE( | 114 EXPECT_TRUE( |
| 122 cookie_settings_->IsSettingCookieAllowed(kBlockedSite, kFirstPartySite)); | 115 cookie_settings_->IsSettingCookieAllowed(kBlockedSite, kFirstPartySite)); |
| 123 EXPECT_TRUE(cookie_settings_->IsCookieSessionOnly(kBlockedSite)); | 116 EXPECT_TRUE(cookie_settings_->IsCookieSessionOnly(kBlockedSite)); |
| 124 } | 117 } |
| 125 | 118 |
| 126 TEST_F(CookieSettingsTest, CookiesThirdPartyBlockedExplicitAllow) { | 119 TEST_F(CookieSettingsTest, CookiesThirdPartyBlockedExplicitAllow) { |
| 127 cookie_settings_->SetCookieSetting( | 120 cookie_settings_->SetCookieSetting(kAllowedSite, CONTENT_SETTING_ALLOW); |
| 128 ContentSettingsPattern::FromURL(kAllowedSite), | |
| 129 ContentSettingsPattern::Wildcard(), CONTENT_SETTING_ALLOW); | |
| 130 prefs_.SetBoolean(prefs::kBlockThirdPartyCookies, true); | 121 prefs_.SetBoolean(prefs::kBlockThirdPartyCookies, true); |
| 131 EXPECT_TRUE( | 122 EXPECT_TRUE( |
| 132 cookie_settings_->IsReadingCookieAllowed(kAllowedSite, kFirstPartySite)); | 123 cookie_settings_->IsReadingCookieAllowed(kAllowedSite, kFirstPartySite)); |
| 133 EXPECT_TRUE( | 124 EXPECT_TRUE( |
| 134 cookie_settings_->IsSettingCookieAllowed(kAllowedSite, kFirstPartySite)); | 125 cookie_settings_->IsSettingCookieAllowed(kAllowedSite, kFirstPartySite)); |
| 135 EXPECT_FALSE(cookie_settings_->IsCookieSessionOnly(kAllowedSite)); | 126 EXPECT_FALSE(cookie_settings_->IsCookieSessionOnly(kAllowedSite)); |
| 136 | 127 |
| 137 // Extensions should always be allowed to use cookies. | 128 // Extensions should always be allowed to use cookies. |
| 138 EXPECT_TRUE( | 129 EXPECT_TRUE( |
| 139 cookie_settings_->IsReadingCookieAllowed(kAllowedSite, kExtensionURL)); | 130 cookie_settings_->IsReadingCookieAllowed(kAllowedSite, kExtensionURL)); |
| 140 EXPECT_TRUE( | 131 EXPECT_TRUE( |
| 141 cookie_settings_->IsSettingCookieAllowed(kAllowedSite, kExtensionURL)); | 132 cookie_settings_->IsSettingCookieAllowed(kAllowedSite, kExtensionURL)); |
| 142 } | 133 } |
| 143 | 134 |
| 144 TEST_F(CookieSettingsTest, CookiesThirdPartyBlockedAllSitesAllowed) { | 135 TEST_F(CookieSettingsTest, CookiesThirdPartyBlockedAllSitesAllowed) { |
| 145 cookie_settings_->SetCookieSetting( | 136 cookie_settings_->SetCookieSetting(kAllowedSite, CONTENT_SETTING_ALLOW); |
| 146 ContentSettingsPattern::FromURL(kAllowedSite), | |
| 147 ContentSettingsPattern::Wildcard(), CONTENT_SETTING_ALLOW); | |
| 148 prefs_.SetBoolean(prefs::kBlockThirdPartyCookies, true); | 137 prefs_.SetBoolean(prefs::kBlockThirdPartyCookies, true); |
| 149 // As an example for a pattern that matches all hosts but not all origins, | 138 // As an example for a url that matches all hosts but not all origins, |
| 150 // match all HTTPS sites. | 139 // match all HTTPS sites. |
| 151 cookie_settings_->SetCookieSetting(kAllHttpsSitesPattern, | 140 settings_map_->SetContentSetting( |
| 152 ContentSettingsPattern::Wildcard(), | 141 kAllHttpsSitesPattern, ContentSettingsPattern::Wildcard(), |
| 153 CONTENT_SETTING_ALLOW); | 142 CONTENT_SETTINGS_TYPE_COOKIES, std::string(), CONTENT_SETTING_ALLOW); |
| 154 cookie_settings_->SetDefaultCookieSetting(CONTENT_SETTING_SESSION_ONLY); | 143 cookie_settings_->SetDefaultCookieSetting(CONTENT_SETTING_SESSION_ONLY); |
| 155 | 144 |
| 156 // |kAllowedSite| should be allowed. | 145 // |kAllowedSite| should be allowed. |
| 157 EXPECT_TRUE( | 146 EXPECT_TRUE( |
| 158 cookie_settings_->IsReadingCookieAllowed(kAllowedSite, kBlockedSite)); | 147 cookie_settings_->IsReadingCookieAllowed(kAllowedSite, kBlockedSite)); |
| 159 EXPECT_TRUE( | 148 EXPECT_TRUE( |
| 160 cookie_settings_->IsSettingCookieAllowed(kAllowedSite, kBlockedSite)); | 149 cookie_settings_->IsSettingCookieAllowed(kAllowedSite, kBlockedSite)); |
| 161 EXPECT_FALSE(cookie_settings_->IsCookieSessionOnly(kAllowedSite)); | 150 EXPECT_FALSE(cookie_settings_->IsCookieSessionOnly(kAllowedSite)); |
| 162 | 151 |
| 163 // HTTPS sites should be allowed in a first-party context. | 152 // HTTPS sites should be allowed in a first-party context. |
| (...skipping 25 matching lines...) Expand all Loading... |
| 189 EXPECT_FALSE(cookie_settings_->IsReadingCookieAllowed(kFirstPartySite, | 178 EXPECT_FALSE(cookie_settings_->IsReadingCookieAllowed(kFirstPartySite, |
| 190 kFirstPartySite)); | 179 kFirstPartySite)); |
| 191 EXPECT_FALSE(cookie_settings_->IsSettingCookieAllowed(kFirstPartySite, | 180 EXPECT_FALSE(cookie_settings_->IsSettingCookieAllowed(kFirstPartySite, |
| 192 kFirstPartySite)); | 181 kFirstPartySite)); |
| 193 EXPECT_FALSE( | 182 EXPECT_FALSE( |
| 194 cookie_settings_->IsSettingCookieAllowed(kAllowedSite, kFirstPartySite)); | 183 cookie_settings_->IsSettingCookieAllowed(kAllowedSite, kFirstPartySite)); |
| 195 } | 184 } |
| 196 | 185 |
| 197 TEST_F(CookieSettingsTest, CookiesBlockEverythingExceptAllowed) { | 186 TEST_F(CookieSettingsTest, CookiesBlockEverythingExceptAllowed) { |
| 198 cookie_settings_->SetDefaultCookieSetting(CONTENT_SETTING_BLOCK); | 187 cookie_settings_->SetDefaultCookieSetting(CONTENT_SETTING_BLOCK); |
| 199 cookie_settings_->SetCookieSetting( | 188 cookie_settings_->SetCookieSetting(kAllowedSite, CONTENT_SETTING_ALLOW); |
| 200 ContentSettingsPattern::FromURL(kAllowedSite), | |
| 201 ContentSettingsPattern::Wildcard(), CONTENT_SETTING_ALLOW); | |
| 202 EXPECT_FALSE(cookie_settings_->IsReadingCookieAllowed(kFirstPartySite, | 189 EXPECT_FALSE(cookie_settings_->IsReadingCookieAllowed(kFirstPartySite, |
| 203 kFirstPartySite)); | 190 kFirstPartySite)); |
| 204 EXPECT_FALSE(cookie_settings_->IsSettingCookieAllowed(kFirstPartySite, | 191 EXPECT_FALSE(cookie_settings_->IsSettingCookieAllowed(kFirstPartySite, |
| 205 kFirstPartySite)); | 192 kFirstPartySite)); |
| 206 EXPECT_TRUE( | 193 EXPECT_TRUE( |
| 207 cookie_settings_->IsReadingCookieAllowed(kAllowedSite, kFirstPartySite)); | 194 cookie_settings_->IsReadingCookieAllowed(kAllowedSite, kFirstPartySite)); |
| 208 EXPECT_TRUE( | 195 EXPECT_TRUE( |
| 209 cookie_settings_->IsSettingCookieAllowed(kAllowedSite, kFirstPartySite)); | 196 cookie_settings_->IsSettingCookieAllowed(kAllowedSite, kFirstPartySite)); |
| 210 EXPECT_TRUE( | 197 EXPECT_TRUE( |
| 211 cookie_settings_->IsReadingCookieAllowed(kAllowedSite, kAllowedSite)); | 198 cookie_settings_->IsReadingCookieAllowed(kAllowedSite, kAllowedSite)); |
| 212 EXPECT_TRUE( | 199 EXPECT_TRUE( |
| 213 cookie_settings_->IsSettingCookieAllowed(kAllowedSite, kAllowedSite)); | 200 cookie_settings_->IsSettingCookieAllowed(kAllowedSite, kAllowedSite)); |
| 214 EXPECT_FALSE(cookie_settings_->IsCookieSessionOnly(kAllowedSite)); | 201 EXPECT_FALSE(cookie_settings_->IsCookieSessionOnly(kAllowedSite)); |
| 215 } | 202 } |
| 216 | 203 |
| 217 TEST_F(CookieSettingsTest, ExtensionsRegularSettings) { | 204 TEST_F(CookieSettingsTest, ExtensionsRegularSettings) { |
| 218 cookie_settings_->SetCookieSetting( | 205 cookie_settings_->SetCookieSetting(kBlockedSite, CONTENT_SETTING_BLOCK); |
| 219 ContentSettingsPattern::FromURL(kBlockedSite), | |
| 220 ContentSettingsPattern::Wildcard(), CONTENT_SETTING_BLOCK); | |
| 221 | 206 |
| 222 // Regular cookie settings also apply to extensions. | 207 // Regular cookie settings also apply to extensions. |
| 223 EXPECT_FALSE( | 208 EXPECT_FALSE( |
| 224 cookie_settings_->IsReadingCookieAllowed(kBlockedSite, kExtensionURL)); | 209 cookie_settings_->IsReadingCookieAllowed(kBlockedSite, kExtensionURL)); |
| 225 } | 210 } |
| 226 | 211 |
| 227 TEST_F(CookieSettingsTest, ExtensionsOwnCookies) { | 212 TEST_F(CookieSettingsTest, ExtensionsOwnCookies) { |
| 228 cookie_settings_->SetDefaultCookieSetting(CONTENT_SETTING_BLOCK); | 213 cookie_settings_->SetDefaultCookieSetting(CONTENT_SETTING_BLOCK); |
| 229 | 214 |
| 230 #if defined(ENABLE_EXTENSIONS) | 215 #if defined(ENABLE_EXTENSIONS) |
| (...skipping 13 matching lines...) Expand all Loading... |
| 244 | 229 |
| 245 // XHRs stemming from extensions are exempt from third-party cookie blocking | 230 // XHRs stemming from extensions are exempt from third-party cookie blocking |
| 246 // rules (as the first party is always the extension's security origin). | 231 // rules (as the first party is always the extension's security origin). |
| 247 EXPECT_TRUE( | 232 EXPECT_TRUE( |
| 248 cookie_settings_->IsSettingCookieAllowed(kBlockedSite, kExtensionURL)); | 233 cookie_settings_->IsSettingCookieAllowed(kBlockedSite, kExtensionURL)); |
| 249 } | 234 } |
| 250 | 235 |
| 251 } // namespace | 236 } // namespace |
| 252 | 237 |
| 253 } // namespace content_settings | 238 } // namespace content_settings |
| OLD | NEW |