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

Side by Side Diff: chrome/browser/permissions/permission_decision_auto_blocker.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 <memory> 7 #include <memory>
8 8
9 #include "base/feature_list.h" 9 #include "base/feature_list.h"
10 #include "base/memory/ptr_util.h" 10 #include "base/memory/ptr_util.h"
(...skipping 276 matching lines...) Expand 10 before | Expand all | Expand 10 after
287 return false; 287 return false;
288 } 288 }
289 289
290 int PermissionDecisionAutoBlocker::RecordIgnore( 290 int PermissionDecisionAutoBlocker::RecordIgnore(
291 const GURL& url, 291 const GURL& url,
292 ContentSettingsType permission) { 292 ContentSettingsType permission) {
293 return RecordActionInWebsiteSettings(url, permission, kPromptIgnoreCountKey, 293 return RecordActionInWebsiteSettings(url, permission, kPromptIgnoreCountKey,
294 profile_); 294 profile_);
295 } 295 }
296 296
297 void PermissionDecisionAutoBlocker::RemoveEmbargoByURL(
298 const GURL& url,
299 ContentSettingsType permission) {
300 if (!PermissionUtil::IsPermission(permission))
301 return;
302
303 HostContentSettingsMap* map =
304 HostContentSettingsMapFactory::GetForProfile(profile_);
305 std::unique_ptr<base::DictionaryValue> dict = GetOriginDict(map, url);
306 base::DictionaryValue* permission_dict = GetOrCreatePermissionDict(
307 dict.get(), PermissionUtil::GetPermissionString(permission));
308 // Deleting non-existent entries will return a false value. Since it should be
309 // impossible for a permission to have been embargoed for two different
310 // reasons at the same time, check that exactly one deletion was successful.
311 DCHECK(permission_dict->RemoveWithoutPathExpansion(
dominickn 2017/04/03 01:35:30 I think you need to do this outside a DCHECK, or e
Patti Lor 2017/04/05 08:34:27 Oh, you're totally right. Thanks Dom, fixed.
312 kPermissionDismissalEmbargoKey, nullptr) !=
313 permission_dict->RemoveWithoutPathExpansion(
314 kPermissionBlacklistEmbargoKey, nullptr));
315 map->SetWebsiteSettingDefaultScope(
316 url, GURL(), CONTENT_SETTINGS_TYPE_PERMISSION_AUTOBLOCKER_DATA,
317 std::string(), std::move(dict));
318 }
319
297 void PermissionDecisionAutoBlocker::RemoveCountsByUrl( 320 void PermissionDecisionAutoBlocker::RemoveCountsByUrl(
298 base::Callback<bool(const GURL& url)> filter) { 321 base::Callback<bool(const GURL& url)> filter) {
299 HostContentSettingsMap* map = 322 HostContentSettingsMap* map =
300 HostContentSettingsMapFactory::GetForProfile(profile_); 323 HostContentSettingsMapFactory::GetForProfile(profile_);
301 324
302 std::unique_ptr<ContentSettingsForOneType> settings( 325 std::unique_ptr<ContentSettingsForOneType> settings(
303 new ContentSettingsForOneType); 326 new ContentSettingsForOneType);
304 map->GetSettingsForOneType(CONTENT_SETTINGS_TYPE_PERMISSION_AUTOBLOCKER_DATA, 327 map->GetSettingsForOneType(CONTENT_SETTINGS_TYPE_PERMISSION_AUTOBLOCKER_DATA,
305 std::string(), settings.get()); 328 std::string(), settings.get());
306 329
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after
363 scoped_refptr<safe_browsing::SafeBrowsingDatabaseManager> db_manager, 386 scoped_refptr<safe_browsing::SafeBrowsingDatabaseManager> db_manager,
364 int timeout) { 387 int timeout) {
365 db_manager_ = db_manager; 388 db_manager_ = db_manager;
366 safe_browsing_timeout_ = timeout; 389 safe_browsing_timeout_ = timeout;
367 } 390 }
368 391
369 void PermissionDecisionAutoBlocker::SetClockForTesting( 392 void PermissionDecisionAutoBlocker::SetClockForTesting(
370 std::unique_ptr<base::Clock> clock) { 393 std::unique_ptr<base::Clock> clock) {
371 clock_ = std::move(clock); 394 clock_ = std::move(clock);
372 } 395 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698