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

Unified Diff: chrome/browser/permissions/permission_context_base.cc

Issue 2184823007: Add a feature which, when enabled, blocks permissions after X prompt dismissals. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Addressing nits Created 4 years, 4 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 side-by-side diff with in-line comments
Download patch
Index: chrome/browser/permissions/permission_context_base.cc
diff --git a/chrome/browser/permissions/permission_context_base.cc b/chrome/browser/permissions/permission_context_base.cc
index 8ce7f18b287fe0885a835bc862d313c02bbf2370..c89c6012aa0dd89e7a3a13aa1688b272edb401fc 100644
--- a/chrome/browser/permissions/permission_context_base.cc
+++ b/chrome/browser/permissions/permission_context_base.cc
@@ -7,10 +7,12 @@
#include <stddef.h>
#include <utility>
+#include "base/callback.h"
#include "base/logging.h"
#include "base/strings/stringprintf.h"
#include "build/build_config.h"
#include "chrome/browser/content_settings/host_content_settings_map_factory.h"
+#include "chrome/browser/permissions/permission_decision_auto_blocker.h"
#include "chrome/browser/permissions/permission_request.h"
#include "chrome/browser/permissions/permission_request_id.h"
#include "chrome/browser/permissions/permission_uma_util.h"
@@ -25,6 +27,7 @@
#include "content/public/browser/render_frame_host.h"
#include "content/public/browser/web_contents.h"
#include "content/public/common/origin_util.h"
+#include "url/gurl.h"
#if defined(OS_ANDROID)
#include "chrome/browser/permissions/permission_queue_controller.h"
@@ -45,6 +48,7 @@ PermissionContextBase::PermissionContextBase(
const content::PermissionType permission_type,
const ContentSettingsType content_settings_type)
: profile_(profile),
+ decision_auto_blocker_(new PermissionDecisionAutoBlocker(profile)),
permission_type_(permission_type),
content_settings_type_(content_settings_type),
weak_factory_(this) {
@@ -233,6 +237,15 @@ void PermissionContextBase::PermissionDecided(
}
#endif
+ // Check if we should convert a dismiss decision into a block decision. This
+ // is gated on enabling the kBlockPromptsIfDismissedOften feature.
+ if (!persist &&
+ decision_auto_blocker_->ShouldChangeDismissalToBlock(requesting_origin,
+ permission_type_)) {
+ persist = true;
+ content_setting = CONTENT_SETTING_BLOCK;
+ }
+
NotifyPermissionSet(id, requesting_origin, embedding_origin, callback,
persist, content_setting);
}

Powered by Google App Engine
This is Rietveld 408576698