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

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

Issue 2651163002: Add UMA for autoblocking and embargoing. (Closed)
Patch Set: Review Created 3 years, 11 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_decision_auto_blocker.cc
diff --git a/chrome/browser/permissions/permission_decision_auto_blocker.cc b/chrome/browser/permissions/permission_decision_auto_blocker.cc
index 97834772a53a020cf6ae1aa3ad7c76d6e52b7bb1..21696562a4be615aca38e385bb6da51c3c2c2498 100644
--- a/chrome/browser/permissions/permission_decision_auto_blocker.cc
+++ b/chrome/browser/permissions/permission_decision_auto_blocker.cc
@@ -4,6 +4,8 @@
#include "chrome/browser/permissions/permission_decision_auto_blocker.h"
+#include <string.h>
+
#include <memory>
#include "base/feature_list.h"
@@ -14,6 +16,7 @@
#include "chrome/browser/browser_process.h"
#include "chrome/browser/content_settings/host_content_settings_map_factory.h"
#include "chrome/browser/permissions/permission_blacklist_client.h"
+#include "chrome/browser/permissions/permission_uma_util.h"
#include "chrome/browser/permissions/permission_util.h"
#include "chrome/browser/profiles/incognito_helpers.h"
#include "chrome/browser/profiles/profile.h"
@@ -113,6 +116,20 @@ int GetActionCount(const GURL& url,
return current_count;
}
+// Returns true if |url| has been embargoed from requesting |permission| for the
+// reason corresponding to |key|.
+bool WasPreviouslyEmbargoed(Profile* profile,
+ const GURL& url,
+ content::PermissionType permission,
+ const char* key) {
+ HostContentSettingsMap* map =
+ HostContentSettingsMapFactory::GetForProfile(profile);
+ std::unique_ptr<base::DictionaryValue> dict = GetOriginDict(map, url);
+ base::DictionaryValue* permission_dict = GetOrCreatePermissionDict(
+ dict.get(), PermissionUtil::GetPermissionString(permission));
+ return permission_dict->HasKey(key);
+}
+
} // namespace
// PermissionDecisionAutoBlocker::Factory --------------------------------------
@@ -227,6 +244,12 @@ bool PermissionDecisionAutoBlocker::RecordDismissAndEmbargo(
if (base::FeatureList::IsEnabled(features::kBlockPromptsIfDismissedOften) &&
current_dismissal_count >= g_prompt_dismissals_before_block) {
+ if (WasPreviouslyEmbargoed(profile_, url, permission,
+ kPermissionDismissalEmbargoKey)) {
+ PermissionUmaUtil::RecordRepeatedEmbargo(
+ PermissionEmbargoReason::REPEATED_DISMISSALS);
+ }
+
PlaceUnderEmbargo(permission, url, kPermissionDismissalEmbargoKey);
return true;
}
@@ -341,12 +364,17 @@ void PermissionDecisionAutoBlocker::CheckSafeBrowsingResult(
base::Callback<void(bool)> callback,
bool should_be_embargoed) {
if (should_be_embargoed) {
- // Requesting site is blacklisted for this permission, update the content
- // setting to place it under embargo.
+ if (WasPreviouslyEmbargoed(profile_, request_origin, permission,
+ kPermissionBlacklistEmbargoKey)) {
+ PermissionUmaUtil::RecordRepeatedEmbargo(
+ PermissionEmbargoReason::PERMISSIONS_BLACKLISTING);
+ }
+
PlaceUnderEmbargo(permission, request_origin,
kPermissionBlacklistEmbargoKey);
}
- callback.Run(should_be_embargoed /* permission blocked */);
+
+ callback.Run(should_be_embargoed);
}
// static
@@ -364,6 +392,11 @@ void PermissionDecisionAutoBlocker::PlaceUnderEmbargo(
map->SetWebsiteSettingDefaultScope(
request_origin, GURL(), CONTENT_SETTINGS_TYPE_PROMPT_NO_DECISION_COUNT,
std::string(), std::move(dict));
+ PermissionEmbargoReason embargo_reason =
+ PermissionEmbargoReason::PERMISSIONS_BLACKLISTING;
+ if (std::strcmp(key, kPermissionDismissalEmbargoKey) == 0)
+ embargo_reason = PermissionEmbargoReason::REPEATED_DISMISSALS;
+ PermissionUmaUtil::RecordPermissionEmbargoReason(embargo_reason);
}
void PermissionDecisionAutoBlocker::

Powered by Google App Engine
This is Rietveld 408576698