| 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 "base/message_loop/message_loop.h" | 7 #include "base/message_loop/message_loop.h" |
| 8 #include "components/content_settings/core/browser/host_content_settings_map.h" | 8 #include "components/content_settings/core/browser/host_content_settings_map.h" |
| 9 #include "components/content_settings/core/common/content_settings_pattern.h" | 9 #include "components/content_settings/core/common/content_settings_pattern.h" |
| 10 #include "components/content_settings/core/common/pref_names.h" | 10 #include "components/content_settings/core/common/pref_names.h" |
| (...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 51 const GURL kFirstPartySite; | 51 const GURL kFirstPartySite; |
| 52 const GURL kChromeURL; | 52 const GURL kChromeURL; |
| 53 const GURL kExtensionURL; | 53 const GURL kExtensionURL; |
| 54 const GURL kHttpSite; | 54 const GURL kHttpSite; |
| 55 const GURL kHttpsSite; | 55 const GURL kHttpsSite; |
| 56 ContentSettingsPattern kAllHttpsSitesPattern; | 56 ContentSettingsPattern kAllHttpsSitesPattern; |
| 57 }; | 57 }; |
| 58 | 58 |
| 59 TEST_F(CookieSettingsTest, TestWhitelistedScheme) { | 59 TEST_F(CookieSettingsTest, TestWhitelistedScheme) { |
| 60 cookie_settings_->SetDefaultCookieSetting(CONTENT_SETTING_BLOCK); | 60 cookie_settings_->SetDefaultCookieSetting(CONTENT_SETTING_BLOCK); |
| 61 EXPECT_FALSE(cookie_settings_->IsReadingCookieAllowed(kHttpSite, kChromeURL)); | 61 EXPECT_FALSE(cookie_settings_->IsCookieAccessAllowed(kHttpSite, kChromeURL)); |
| 62 EXPECT_TRUE(cookie_settings_->IsReadingCookieAllowed(kHttpsSite, kChromeURL)); | 62 EXPECT_TRUE(cookie_settings_->IsCookieAccessAllowed(kHttpsSite, kChromeURL)); |
| 63 EXPECT_TRUE(cookie_settings_->IsReadingCookieAllowed(kChromeURL, kHttpSite)); | 63 EXPECT_TRUE(cookie_settings_->IsCookieAccessAllowed(kChromeURL, kHttpSite)); |
| 64 #if BUILDFLAG(ENABLE_EXTENSIONS) | 64 #if BUILDFLAG(ENABLE_EXTENSIONS) |
| 65 EXPECT_TRUE( | 65 EXPECT_TRUE( |
| 66 cookie_settings_->IsReadingCookieAllowed(kExtensionURL, kExtensionURL)); | 66 cookie_settings_->IsCookieAccessAllowed(kExtensionURL, kExtensionURL)); |
| 67 #else | 67 #else |
| 68 EXPECT_FALSE( | 68 EXPECT_FALSE( |
| 69 cookie_settings_->IsReadingCookieAllowed(kExtensionURL, kExtensionURL)); | 69 cookie_settings_->IsCookieAccessAllowed(kExtensionURL, kExtensionURL)); |
| 70 #endif | 70 #endif |
| 71 EXPECT_FALSE( | 71 EXPECT_FALSE( |
| 72 cookie_settings_->IsReadingCookieAllowed(kExtensionURL, kHttpSite)); | 72 cookie_settings_->IsCookieAccessAllowed(kExtensionURL, kHttpSite)); |
| 73 } | 73 } |
| 74 | 74 |
| 75 TEST_F(CookieSettingsTest, CookiesBlockSingle) { | 75 TEST_F(CookieSettingsTest, CookiesBlockSingle) { |
| 76 cookie_settings_->SetCookieSetting(kBlockedSite, CONTENT_SETTING_BLOCK); | 76 cookie_settings_->SetCookieSetting(kBlockedSite, CONTENT_SETTING_BLOCK); |
| 77 EXPECT_FALSE( | 77 EXPECT_FALSE( |
| 78 cookie_settings_->IsReadingCookieAllowed(kBlockedSite, kBlockedSite)); | 78 cookie_settings_->IsCookieAccessAllowed(kBlockedSite, kBlockedSite)); |
| 79 } | 79 } |
| 80 | 80 |
| 81 TEST_F(CookieSettingsTest, CookiesBlockThirdParty) { | 81 TEST_F(CookieSettingsTest, CookiesBlockThirdParty) { |
| 82 prefs_.SetBoolean(prefs::kBlockThirdPartyCookies, true); | 82 prefs_.SetBoolean(prefs::kBlockThirdPartyCookies, true); |
| 83 EXPECT_FALSE( | 83 EXPECT_FALSE( |
| 84 cookie_settings_->IsReadingCookieAllowed(kBlockedSite, kFirstPartySite)); | 84 cookie_settings_->IsCookieAccessAllowed(kBlockedSite, kFirstPartySite)); |
| 85 EXPECT_FALSE(cookie_settings_->IsCookieSessionOnly(kBlockedSite)); | 85 EXPECT_FALSE(cookie_settings_->IsCookieSessionOnly(kBlockedSite)); |
| 86 EXPECT_FALSE( | |
| 87 cookie_settings_->IsSettingCookieAllowed(kBlockedSite, kFirstPartySite)); | |
| 88 } | 86 } |
| 89 | 87 |
| 90 TEST_F(CookieSettingsTest, CookiesAllowThirdParty) { | 88 TEST_F(CookieSettingsTest, CookiesAllowThirdParty) { |
| 91 EXPECT_TRUE( | 89 EXPECT_TRUE( |
| 92 cookie_settings_->IsReadingCookieAllowed(kBlockedSite, kFirstPartySite)); | 90 cookie_settings_->IsCookieAccessAllowed(kBlockedSite, kFirstPartySite)); |
| 93 EXPECT_TRUE( | |
| 94 cookie_settings_->IsSettingCookieAllowed(kBlockedSite, kFirstPartySite)); | |
| 95 EXPECT_FALSE(cookie_settings_->IsCookieSessionOnly(kBlockedSite)); | 91 EXPECT_FALSE(cookie_settings_->IsCookieSessionOnly(kBlockedSite)); |
| 96 } | 92 } |
| 97 | 93 |
| 98 TEST_F(CookieSettingsTest, CookiesExplicitBlockSingleThirdParty) { | 94 TEST_F(CookieSettingsTest, CookiesExplicitBlockSingleThirdParty) { |
| 99 cookie_settings_->SetCookieSetting(kBlockedSite, CONTENT_SETTING_BLOCK); | 95 cookie_settings_->SetCookieSetting(kBlockedSite, CONTENT_SETTING_BLOCK); |
| 100 EXPECT_FALSE( | 96 EXPECT_FALSE( |
| 101 cookie_settings_->IsReadingCookieAllowed(kBlockedSite, kFirstPartySite)); | 97 cookie_settings_->IsCookieAccessAllowed(kBlockedSite, kFirstPartySite)); |
| 102 EXPECT_FALSE( | |
| 103 cookie_settings_->IsSettingCookieAllowed(kBlockedSite, kFirstPartySite)); | |
| 104 EXPECT_TRUE( | 98 EXPECT_TRUE( |
| 105 cookie_settings_->IsSettingCookieAllowed(kAllowedSite, kFirstPartySite)); | 99 cookie_settings_->IsCookieAccessAllowed(kAllowedSite, kFirstPartySite)); |
| 106 } | 100 } |
| 107 | 101 |
| 108 TEST_F(CookieSettingsTest, CookiesExplicitSessionOnly) { | 102 TEST_F(CookieSettingsTest, CookiesExplicitSessionOnly) { |
| 109 cookie_settings_->SetCookieSetting(kBlockedSite, | 103 cookie_settings_->SetCookieSetting(kBlockedSite, |
| 110 CONTENT_SETTING_SESSION_ONLY); | 104 CONTENT_SETTING_SESSION_ONLY); |
| 111 EXPECT_TRUE( | 105 EXPECT_TRUE( |
| 112 cookie_settings_->IsReadingCookieAllowed(kBlockedSite, kFirstPartySite)); | 106 cookie_settings_->IsCookieAccessAllowed(kBlockedSite, kFirstPartySite)); |
| 113 EXPECT_TRUE( | |
| 114 cookie_settings_->IsSettingCookieAllowed(kBlockedSite, kFirstPartySite)); | |
| 115 EXPECT_TRUE(cookie_settings_->IsCookieSessionOnly(kBlockedSite)); | 107 EXPECT_TRUE(cookie_settings_->IsCookieSessionOnly(kBlockedSite)); |
| 116 | 108 |
| 117 prefs_.SetBoolean(prefs::kBlockThirdPartyCookies, true); | 109 prefs_.SetBoolean(prefs::kBlockThirdPartyCookies, true); |
| 118 EXPECT_TRUE( | 110 EXPECT_TRUE( |
| 119 cookie_settings_->IsReadingCookieAllowed(kBlockedSite, kFirstPartySite)); | 111 cookie_settings_->IsCookieAccessAllowed(kBlockedSite, kFirstPartySite)); |
| 120 EXPECT_TRUE( | |
| 121 cookie_settings_->IsSettingCookieAllowed(kBlockedSite, kFirstPartySite)); | |
| 122 EXPECT_TRUE(cookie_settings_->IsCookieSessionOnly(kBlockedSite)); | 112 EXPECT_TRUE(cookie_settings_->IsCookieSessionOnly(kBlockedSite)); |
| 123 } | 113 } |
| 124 | 114 |
| 125 TEST_F(CookieSettingsTest, CookiesThirdPartyBlockedExplicitAllow) { | 115 TEST_F(CookieSettingsTest, CookiesThirdPartyBlockedExplicitAllow) { |
| 126 cookie_settings_->SetCookieSetting(kAllowedSite, CONTENT_SETTING_ALLOW); | 116 cookie_settings_->SetCookieSetting(kAllowedSite, CONTENT_SETTING_ALLOW); |
| 127 prefs_.SetBoolean(prefs::kBlockThirdPartyCookies, true); | 117 prefs_.SetBoolean(prefs::kBlockThirdPartyCookies, true); |
| 128 EXPECT_TRUE( | 118 EXPECT_TRUE( |
| 129 cookie_settings_->IsReadingCookieAllowed(kAllowedSite, kFirstPartySite)); | 119 cookie_settings_->IsCookieAccessAllowed(kAllowedSite, kFirstPartySite)); |
| 130 EXPECT_TRUE( | |
| 131 cookie_settings_->IsSettingCookieAllowed(kAllowedSite, kFirstPartySite)); | |
| 132 EXPECT_FALSE(cookie_settings_->IsCookieSessionOnly(kAllowedSite)); | 120 EXPECT_FALSE(cookie_settings_->IsCookieSessionOnly(kAllowedSite)); |
| 133 | 121 |
| 134 // Extensions should always be allowed to use cookies. | 122 // Extensions should always be allowed to use cookies. |
| 135 EXPECT_TRUE( | 123 EXPECT_TRUE( |
| 136 cookie_settings_->IsReadingCookieAllowed(kAllowedSite, kExtensionURL)); | 124 cookie_settings_->IsCookieAccessAllowed(kAllowedSite, kExtensionURL)); |
| 137 EXPECT_TRUE( | |
| 138 cookie_settings_->IsSettingCookieAllowed(kAllowedSite, kExtensionURL)); | |
| 139 } | 125 } |
| 140 | 126 |
| 141 TEST_F(CookieSettingsTest, CookiesThirdPartyBlockedAllSitesAllowed) { | 127 TEST_F(CookieSettingsTest, CookiesThirdPartyBlockedAllSitesAllowed) { |
| 142 cookie_settings_->SetCookieSetting(kAllowedSite, CONTENT_SETTING_ALLOW); | 128 cookie_settings_->SetCookieSetting(kAllowedSite, CONTENT_SETTING_ALLOW); |
| 143 prefs_.SetBoolean(prefs::kBlockThirdPartyCookies, true); | 129 prefs_.SetBoolean(prefs::kBlockThirdPartyCookies, true); |
| 144 // As an example for a url that matches all hosts but not all origins, | 130 // As an example for a url that matches all hosts but not all origins, |
| 145 // match all HTTPS sites. | 131 // match all HTTPS sites. |
| 146 settings_map_->SetContentSettingCustomScope( | 132 settings_map_->SetContentSettingCustomScope( |
| 147 kAllHttpsSitesPattern, ContentSettingsPattern::Wildcard(), | 133 kAllHttpsSitesPattern, ContentSettingsPattern::Wildcard(), |
| 148 CONTENT_SETTINGS_TYPE_COOKIES, std::string(), CONTENT_SETTING_ALLOW); | 134 CONTENT_SETTINGS_TYPE_COOKIES, std::string(), CONTENT_SETTING_ALLOW); |
| 149 cookie_settings_->SetDefaultCookieSetting(CONTENT_SETTING_SESSION_ONLY); | 135 cookie_settings_->SetDefaultCookieSetting(CONTENT_SETTING_SESSION_ONLY); |
| 150 | 136 |
| 151 // |kAllowedSite| should be allowed. | 137 // |kAllowedSite| should be allowed. |
| 152 EXPECT_TRUE( | 138 EXPECT_TRUE( |
| 153 cookie_settings_->IsReadingCookieAllowed(kAllowedSite, kBlockedSite)); | 139 cookie_settings_->IsCookieAccessAllowed(kAllowedSite, kBlockedSite)); |
| 154 EXPECT_TRUE( | |
| 155 cookie_settings_->IsSettingCookieAllowed(kAllowedSite, kBlockedSite)); | |
| 156 EXPECT_FALSE(cookie_settings_->IsCookieSessionOnly(kAllowedSite)); | 140 EXPECT_FALSE(cookie_settings_->IsCookieSessionOnly(kAllowedSite)); |
| 157 | 141 |
| 158 // HTTPS sites should be allowed in a first-party context. | 142 // HTTPS sites should be allowed in a first-party context. |
| 159 EXPECT_TRUE(cookie_settings_->IsReadingCookieAllowed(kHttpsSite, kHttpsSite)); | 143 EXPECT_TRUE(cookie_settings_->IsCookieAccessAllowed(kHttpsSite, kHttpsSite)); |
| 160 EXPECT_TRUE(cookie_settings_->IsSettingCookieAllowed(kHttpsSite, kHttpsSite)); | |
| 161 EXPECT_FALSE(cookie_settings_->IsCookieSessionOnly(kAllowedSite)); | 144 EXPECT_FALSE(cookie_settings_->IsCookieSessionOnly(kAllowedSite)); |
| 162 | 145 |
| 163 // HTTP sites should be allowed, but session-only. | 146 // HTTP sites should be allowed, but session-only. |
| 164 EXPECT_TRUE(cookie_settings_->IsReadingCookieAllowed(kFirstPartySite, | 147 EXPECT_TRUE(cookie_settings_->IsCookieAccessAllowed(kFirstPartySite, |
| 165 kFirstPartySite)); | 148 kFirstPartySite)); |
| 166 EXPECT_TRUE(cookie_settings_->IsSettingCookieAllowed(kFirstPartySite, | |
| 167 kFirstPartySite)); | |
| 168 EXPECT_TRUE(cookie_settings_->IsCookieSessionOnly(kFirstPartySite)); | 149 EXPECT_TRUE(cookie_settings_->IsCookieSessionOnly(kFirstPartySite)); |
| 169 | 150 |
| 170 // Third-party cookies should be blocked. | 151 // Third-party cookies should be blocked. |
| 171 EXPECT_FALSE( | 152 EXPECT_FALSE( |
| 172 cookie_settings_->IsReadingCookieAllowed(kFirstPartySite, kBlockedSite)); | 153 cookie_settings_->IsCookieAccessAllowed(kFirstPartySite, kBlockedSite)); |
| 173 EXPECT_FALSE( | 154 EXPECT_FALSE( |
| 174 cookie_settings_->IsSettingCookieAllowed(kFirstPartySite, kBlockedSite)); | 155 cookie_settings_->IsCookieAccessAllowed(kHttpsSite, kBlockedSite)); |
| 175 EXPECT_FALSE( | |
| 176 cookie_settings_->IsReadingCookieAllowed(kHttpsSite, kBlockedSite)); | |
| 177 EXPECT_FALSE( | |
| 178 cookie_settings_->IsSettingCookieAllowed(kHttpsSite, kBlockedSite)); | |
| 179 } | 156 } |
| 180 | 157 |
| 181 TEST_F(CookieSettingsTest, CookiesBlockEverything) { | 158 TEST_F(CookieSettingsTest, CookiesBlockEverything) { |
| 182 cookie_settings_->SetDefaultCookieSetting(CONTENT_SETTING_BLOCK); | 159 cookie_settings_->SetDefaultCookieSetting(CONTENT_SETTING_BLOCK); |
| 183 | 160 |
| 184 EXPECT_FALSE(cookie_settings_->IsReadingCookieAllowed(kFirstPartySite, | 161 EXPECT_FALSE(cookie_settings_->IsCookieAccessAllowed(kFirstPartySite, |
| 185 kFirstPartySite)); | 162 kFirstPartySite)); |
| 186 EXPECT_FALSE(cookie_settings_->IsSettingCookieAllowed(kFirstPartySite, | |
| 187 kFirstPartySite)); | |
| 188 EXPECT_FALSE( | 163 EXPECT_FALSE( |
| 189 cookie_settings_->IsSettingCookieAllowed(kAllowedSite, kFirstPartySite)); | 164 cookie_settings_->IsCookieAccessAllowed(kAllowedSite, kFirstPartySite)); |
| 190 } | 165 } |
| 191 | 166 |
| 192 TEST_F(CookieSettingsTest, CookiesBlockEverythingExceptAllowed) { | 167 TEST_F(CookieSettingsTest, CookiesBlockEverythingExceptAllowed) { |
| 193 cookie_settings_->SetDefaultCookieSetting(CONTENT_SETTING_BLOCK); | 168 cookie_settings_->SetDefaultCookieSetting(CONTENT_SETTING_BLOCK); |
| 194 cookie_settings_->SetCookieSetting(kAllowedSite, CONTENT_SETTING_ALLOW); | 169 cookie_settings_->SetCookieSetting(kAllowedSite, CONTENT_SETTING_ALLOW); |
| 195 EXPECT_FALSE(cookie_settings_->IsReadingCookieAllowed(kFirstPartySite, | 170 EXPECT_FALSE(cookie_settings_->IsCookieAccessAllowed(kFirstPartySite, |
| 196 kFirstPartySite)); | 171 kFirstPartySite)); |
| 197 EXPECT_FALSE(cookie_settings_->IsSettingCookieAllowed(kFirstPartySite, | |
| 198 kFirstPartySite)); | |
| 199 EXPECT_TRUE( | 172 EXPECT_TRUE( |
| 200 cookie_settings_->IsReadingCookieAllowed(kAllowedSite, kFirstPartySite)); | 173 cookie_settings_->IsCookieAccessAllowed(kAllowedSite, kFirstPartySite)); |
| 201 EXPECT_TRUE( | 174 EXPECT_TRUE( |
| 202 cookie_settings_->IsSettingCookieAllowed(kAllowedSite, kFirstPartySite)); | 175 cookie_settings_->IsCookieAccessAllowed(kAllowedSite, kAllowedSite)); |
| 203 EXPECT_TRUE( | |
| 204 cookie_settings_->IsReadingCookieAllowed(kAllowedSite, kAllowedSite)); | |
| 205 EXPECT_TRUE( | |
| 206 cookie_settings_->IsSettingCookieAllowed(kAllowedSite, kAllowedSite)); | |
| 207 EXPECT_FALSE(cookie_settings_->IsCookieSessionOnly(kAllowedSite)); | 176 EXPECT_FALSE(cookie_settings_->IsCookieSessionOnly(kAllowedSite)); |
| 208 } | 177 } |
| 209 | 178 |
| 210 TEST_F(CookieSettingsTest, ExtensionsRegularSettings) { | 179 TEST_F(CookieSettingsTest, ExtensionsRegularSettings) { |
| 211 cookie_settings_->SetCookieSetting(kBlockedSite, CONTENT_SETTING_BLOCK); | 180 cookie_settings_->SetCookieSetting(kBlockedSite, CONTENT_SETTING_BLOCK); |
| 212 | 181 |
| 213 // Regular cookie settings also apply to extensions. | 182 // Regular cookie settings also apply to extensions. |
| 214 EXPECT_FALSE( | 183 EXPECT_FALSE( |
| 215 cookie_settings_->IsReadingCookieAllowed(kBlockedSite, kExtensionURL)); | 184 cookie_settings_->IsCookieAccessAllowed(kBlockedSite, kExtensionURL)); |
| 216 } | 185 } |
| 217 | 186 |
| 218 TEST_F(CookieSettingsTest, ExtensionsOwnCookies) { | 187 TEST_F(CookieSettingsTest, ExtensionsOwnCookies) { |
| 219 cookie_settings_->SetDefaultCookieSetting(CONTENT_SETTING_BLOCK); | 188 cookie_settings_->SetDefaultCookieSetting(CONTENT_SETTING_BLOCK); |
| 220 | 189 |
| 221 #if BUILDFLAG(ENABLE_EXTENSIONS) | 190 #if BUILDFLAG(ENABLE_EXTENSIONS) |
| 222 // Extensions can always use cookies (and site data) in their own origin. | 191 // Extensions can always use cookies (and site data) in their own origin. |
| 223 EXPECT_TRUE( | 192 EXPECT_TRUE( |
| 224 cookie_settings_->IsReadingCookieAllowed(kExtensionURL, kExtensionURL)); | 193 cookie_settings_->IsCookieAccessAllowed(kExtensionURL, kExtensionURL)); |
| 225 #else | 194 #else |
| 226 // Except if extensions are disabled. Then the extension-specific checks do | 195 // Except if extensions are disabled. Then the extension-specific checks do |
| 227 // not exist and the default setting is to block. | 196 // not exist and the default setting is to block. |
| 228 EXPECT_FALSE( | 197 EXPECT_FALSE( |
| 229 cookie_settings_->IsReadingCookieAllowed(kExtensionURL, kExtensionURL)); | 198 cookie_settings_->IsCookieAccessAllowed(kExtensionURL, kExtensionURL)); |
| 230 #endif | 199 #endif |
| 231 } | 200 } |
| 232 | 201 |
| 233 TEST_F(CookieSettingsTest, ExtensionsThirdParty) { | 202 TEST_F(CookieSettingsTest, ExtensionsThirdParty) { |
| 234 prefs_.SetBoolean(prefs::kBlockThirdPartyCookies, true); | 203 prefs_.SetBoolean(prefs::kBlockThirdPartyCookies, true); |
| 235 | 204 |
| 236 // XHRs stemming from extensions are exempt from third-party cookie blocking | 205 // XHRs stemming from extensions are exempt from third-party cookie blocking |
| 237 // rules (as the first party is always the extension's security origin). | 206 // rules (as the first party is always the extension's security origin). |
| 238 EXPECT_TRUE( | 207 EXPECT_TRUE( |
| 239 cookie_settings_->IsSettingCookieAllowed(kBlockedSite, kExtensionURL)); | 208 cookie_settings_->IsCookieAccessAllowed(kBlockedSite, kExtensionURL)); |
| 240 } | 209 } |
| 241 | 210 |
| 242 } // namespace | 211 } // namespace |
| 243 | 212 |
| 244 } // namespace content_settings | 213 } // namespace content_settings |
| OLD | NEW |