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 |