Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(335)

Side by Side Diff: chrome/browser/permissions/permission_decision_auto_blocker_unittest.cc

Issue 2790473004: Permissions: Clear embargo if user changes an embargoed permission's setting. (Closed)
Patch Set: Created 3 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 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 "chrome/browser/permissions/permission_decision_auto_blocker.h" 5 #include "chrome/browser/permissions/permission_decision_auto_blocker.h"
6 6
7 #include <map> 7 #include <map>
8 8
9 #include "base/bind.h" 9 #include "base/bind.h"
10 #include "base/run_loop.h" 10 #include "base/run_loop.h"
(...skipping 141 matching lines...) Expand 10 before | Expand all | Expand 10 after
152 } 152 }
153 153
154 private: 154 private:
155 PermissionDecisionAutoBlocker* autoblocker_; 155 PermissionDecisionAutoBlocker* autoblocker_;
156 base::test::ScopedFeatureList feature_list_; 156 base::test::ScopedFeatureList feature_list_;
157 base::SimpleTestClock* clock_; 157 base::SimpleTestClock* clock_;
158 bool last_embargoed_status_; 158 bool last_embargoed_status_;
159 bool callback_was_run_; 159 bool callback_was_run_;
160 }; 160 };
161 161
162 // Check removing the the emargo for a single permission on a site works, and
dominickn 2017/04/03 01:35:31 sp. embargo
Patti Lor 2017/04/05 08:34:27 Done.
163 // that it doesn't interfere with other embargoed permissions or the same
164 // permission embargoed on other sites.
165 TEST_F(PermissionDecisionAutoBlockerUnitTest, RemoveEmbargoByURL) {
dominickn 2017/04/03 01:35:30 Url
Patti Lor 2017/04/05 08:34:27 Done.
166 GURL url1("https://www.google.com");
167 GURL url2("https://www.example.com");
168
169 // Record dismissals for location and notifications in |url1|.
170 autoblocker()->RecordDismissAndEmbargo(url1,
dominickn 2017/04/03 01:35:31 I'd EXPECT_FALSE / EXPECT_TRUE all of these calls
Patti Lor 2017/04/05 08:34:27 Done.
171 CONTENT_SETTINGS_TYPE_GEOLOCATION);
172 autoblocker()->RecordDismissAndEmbargo(url1,
173 CONTENT_SETTINGS_TYPE_GEOLOCATION);
174 autoblocker()->RecordDismissAndEmbargo(url1,
175 CONTENT_SETTINGS_TYPE_GEOLOCATION);
176 autoblocker()->RecordDismissAndEmbargo(url1,
177 CONTENT_SETTINGS_TYPE_GEOLOCATION);
178 autoblocker()->RecordDismissAndEmbargo(url1,
179 CONTENT_SETTINGS_TYPE_NOTIFICATIONS);
180 autoblocker()->RecordDismissAndEmbargo(url1,
181 CONTENT_SETTINGS_TYPE_NOTIFICATIONS);
182 autoblocker()->RecordDismissAndEmbargo(url1,
183 CONTENT_SETTINGS_TYPE_NOTIFICATIONS);
184 autoblocker()->RecordDismissAndEmbargo(url1,
185 CONTENT_SETTINGS_TYPE_NOTIFICATIONS);
186 // Record dismissals for location in |url2|.
187 autoblocker()->RecordDismissAndEmbargo(url2,
188 CONTENT_SETTINGS_TYPE_GEOLOCATION);
189 autoblocker()->RecordDismissAndEmbargo(url2,
190 CONTENT_SETTINGS_TYPE_GEOLOCATION);
191 autoblocker()->RecordDismissAndEmbargo(url2,
192 CONTENT_SETTINGS_TYPE_GEOLOCATION);
193 autoblocker()->RecordDismissAndEmbargo(url2,
194 CONTENT_SETTINGS_TYPE_GEOLOCATION);
195
196 // Verify all dismissals recorded above resulted in embargo.
197 PermissionResult result =
198 autoblocker()->GetEmbargoResult(url1, CONTENT_SETTINGS_TYPE_GEOLOCATION);
199 EXPECT_EQ(CONTENT_SETTING_BLOCK, result.content_setting);
200 EXPECT_EQ(PermissionStatusSource::MULTIPLE_DISMISSALS, result.source);
201 result = autoblocker()->GetEmbargoResult(url1,
202 CONTENT_SETTINGS_TYPE_NOTIFICATIONS);
203 EXPECT_EQ(CONTENT_SETTING_BLOCK, result.content_setting);
204 EXPECT_EQ(PermissionStatusSource::MULTIPLE_DISMISSALS, result.source);
205 result =
206 autoblocker()->GetEmbargoResult(url2, CONTENT_SETTINGS_TYPE_GEOLOCATION);
207 EXPECT_EQ(CONTENT_SETTING_BLOCK, result.content_setting);
208 EXPECT_EQ(PermissionStatusSource::MULTIPLE_DISMISSALS, result.source);
209
210 // Remove the embargo on notifications. Verify it is no longer under embargo,
211 // but location still is.
212 autoblocker()->RemoveEmbargoByURL(url1, CONTENT_SETTINGS_TYPE_NOTIFICATIONS);
213 result =
214 autoblocker()->GetEmbargoResult(url1, CONTENT_SETTINGS_TYPE_GEOLOCATION);
215 EXPECT_EQ(CONTENT_SETTING_BLOCK, result.content_setting);
216 EXPECT_EQ(PermissionStatusSource::MULTIPLE_DISMISSALS, result.source);
217 // Notification's default setting is |CONTENT_SETTING_ASK|.
218 result = autoblocker()->GetEmbargoResult(url1,
219 CONTENT_SETTINGS_TYPE_NOTIFICATIONS);
220 EXPECT_EQ(CONTENT_SETTING_ASK, result.content_setting);
221 EXPECT_EQ(PermissionStatusSource::UNSPECIFIED, result.source);
222 // Verify |url2|'s embargo is still intact as well.
223 result =
224 autoblocker()->GetEmbargoResult(url2, CONTENT_SETTINGS_TYPE_GEOLOCATION);
225 EXPECT_EQ(CONTENT_SETTING_BLOCK, result.content_setting);
226 EXPECT_EQ(PermissionStatusSource::MULTIPLE_DISMISSALS, result.source);
227 }
228
229 // Test that removing embargo from blacklisted permissions also works.
230 TEST_F(PermissionDecisionAutoBlockerUnitTest,
231 RemoveEmbargoByURLForBlacklistedPermission) {
232 GURL url("https://www.example.com");
233
234 // Place under embargo and verify.
235 PlaceUnderBlacklistEmbargo(url, CONTENT_SETTINGS_TYPE_GEOLOCATION);
236 PermissionResult result =
237 autoblocker()->GetEmbargoResult(url, CONTENT_SETTINGS_TYPE_GEOLOCATION);
238 EXPECT_EQ(CONTENT_SETTING_BLOCK, result.content_setting);
239 EXPECT_EQ(PermissionStatusSource::SAFE_BROWSING_BLACKLIST, result.source);
240
241 // Remove embargo and verify.
242 autoblocker()->RemoveEmbargoByURL(url, CONTENT_SETTINGS_TYPE_GEOLOCATION);
243 result =
244 autoblocker()->GetEmbargoResult(url, CONTENT_SETTINGS_TYPE_GEOLOCATION);
245 EXPECT_EQ(CONTENT_SETTING_ASK, result.content_setting);
246 EXPECT_EQ(PermissionStatusSource::UNSPECIFIED, result.source);
247 }
248
249 // Test it still only takes one more dismissal to re-trigger embargo after
250 // removing the embargo status for a site.
251 TEST_F(PermissionDecisionAutoBlockerUnitTest,
252 DismissAfterRemovingEmbargoByURL) {
253 GURL url("https://www.example.com");
254
255 // Record dismissals for location.
256 autoblocker()->RecordDismissAndEmbargo(url,
dominickn 2017/04/03 01:35:31 EXPECT_TRUE / EXPECT_FALSE these calls
Patti Lor 2017/04/05 08:34:27 Done.
257 CONTENT_SETTINGS_TYPE_GEOLOCATION);
258 autoblocker()->RecordDismissAndEmbargo(url,
259 CONTENT_SETTINGS_TYPE_GEOLOCATION);
260 autoblocker()->RecordDismissAndEmbargo(url,
261 CONTENT_SETTINGS_TYPE_GEOLOCATION);
262 autoblocker()->RecordDismissAndEmbargo(url,
263 CONTENT_SETTINGS_TYPE_GEOLOCATION);
264
265 // Verify location is under embargo.
266 PermissionResult result =
267 autoblocker()->GetEmbargoResult(url, CONTENT_SETTINGS_TYPE_GEOLOCATION);
268 EXPECT_EQ(CONTENT_SETTING_BLOCK, result.content_setting);
269 EXPECT_EQ(PermissionStatusSource::MULTIPLE_DISMISSALS, result.source);
270
271 // Remove embargo.
272 autoblocker()->RemoveEmbargoByURL(url, CONTENT_SETTINGS_TYPE_GEOLOCATION);
273
dominickn 2017/04/03 01:35:31 Nit: verify that it's not under embargo here
Patti Lor 2017/04/05 08:34:27 Done.
274 // Record another dismissal and verify location is under embargo again.
275 autoblocker()->RecordDismissAndEmbargo(url,
276 CONTENT_SETTINGS_TYPE_GEOLOCATION);
277 result =
278 autoblocker()->GetEmbargoResult(url, CONTENT_SETTINGS_TYPE_GEOLOCATION);
279 EXPECT_EQ(CONTENT_SETTING_BLOCK, result.content_setting);
280 EXPECT_EQ(PermissionStatusSource::MULTIPLE_DISMISSALS, result.source);
281 }
282
162 TEST_F(PermissionDecisionAutoBlockerUnitTest, RemoveCountsByUrl) { 283 TEST_F(PermissionDecisionAutoBlockerUnitTest, RemoveCountsByUrl) {
163 GURL url1("https://www.google.com"); 284 GURL url1("https://www.google.com");
164 GURL url2("https://www.example.com"); 285 GURL url2("https://www.example.com");
165 286
166 // Record some dismissals. 287 // Record some dismissals.
167 EXPECT_FALSE(autoblocker()->RecordDismissAndEmbargo( 288 EXPECT_FALSE(autoblocker()->RecordDismissAndEmbargo(
168 url1, CONTENT_SETTINGS_TYPE_GEOLOCATION)); 289 url1, CONTENT_SETTINGS_TYPE_GEOLOCATION));
169 EXPECT_EQ(1, autoblocker()->GetDismissCount( 290 EXPECT_EQ(1, autoblocker()->GetDismissCount(
170 url1, CONTENT_SETTINGS_TYPE_GEOLOCATION)); 291 url1, CONTENT_SETTINGS_TYPE_GEOLOCATION));
171 292
(...skipping 445 matching lines...) Expand 10 before | Expand all | Expand 10 after
617 db_manager->BlacklistUrlPermissions(url, blacklisted_permissions); 738 db_manager->BlacklistUrlPermissions(url, blacklisted_permissions);
618 SetSafeBrowsingDatabaseManagerAndTimeoutForTesting(db_manager, 739 SetSafeBrowsingDatabaseManagerAndTimeoutForTesting(db_manager,
619 0 /* timeout in ms */); 740 0 /* timeout in ms */);
620 741
621 CheckSafeBrowsingBlacklist(url, CONTENT_SETTINGS_TYPE_NOTIFICATIONS); 742 CheckSafeBrowsingBlacklist(url, CONTENT_SETTINGS_TYPE_NOTIFICATIONS);
622 EXPECT_FALSE(last_embargoed_status()); 743 EXPECT_FALSE(last_embargoed_status());
623 histograms.ExpectUniqueSample( 744 histograms.ExpectUniqueSample(
624 "Permissions.AutoBlocker.SafeBrowsingResponse", 745 "Permissions.AutoBlocker.SafeBrowsingResponse",
625 static_cast<int>(SafeBrowsingResponse::NOT_BLACKLISTED), 1); 746 static_cast<int>(SafeBrowsingResponse::NOT_BLACKLISTED), 1);
626 } 747 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698