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

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

Issue 2250993002: Add prior dismissal and ignore count metrics for all permission actions. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@kendra-permission-action-reporting
Patch Set: 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_uma_util.cc
diff --git a/chrome/browser/permissions/permission_uma_util.cc b/chrome/browser/permissions/permission_uma_util.cc
index 3ea75c74115282983e75d3d5cce4576ac60d3d1a..962df70bad0132eec6f57599a5e12bb81cebb77b 100644
--- a/chrome/browser/permissions/permission_uma_util.cc
+++ b/chrome/browser/permissions/permission_uma_util.cc
@@ -7,6 +7,7 @@
#include <utility>
#include "base/command_line.h"
+#include "base/metrics/histogram.h"
#include "base/metrics/histogram_macros.h"
#include "base/strings/stringprintf.h"
#include "chrome/browser/browser_process.h"
@@ -188,14 +189,38 @@ const char PermissionUmaUtil::kPermissionsPromptAccepted[] =
"Permissions.Prompt.Accepted";
const char PermissionUmaUtil::kPermissionsPromptAcceptedGesture[] =
"Permissions.Prompt.Accepted.Gesture";
+const char
+ PermissionUmaUtil::kPermissionsPromptAcceptedPriorDismissCountPrefix[] =
+ "Permissions.Prompt.Accepted.PriorDismissCount.";
+const char
+ PermissionUmaUtil::kPermissionsPromptAcceptedPriorIgnoreCountPrefix[] =
+ "Permissions.Prompt.Accepted.PriorIgnoreCount.";
const char PermissionUmaUtil::kPermissionsPromptAcceptedNoGesture[] =
"Permissions.Prompt.Accepted.NoGesture";
const char PermissionUmaUtil::kPermissionsPromptDenied[] =
"Permissions.Prompt.Denied";
const char PermissionUmaUtil::kPermissionsPromptDeniedGesture[] =
"Permissions.Prompt.Denied.Gesture";
+const char
+ PermissionUmaUtil::kPermissionsPromptDeniedPriorDismissCountPrefix[] =
+ "Permissions.Prompt.Denied.PriorDismissCount.";
+const char
+ PermissionUmaUtil::kPermissionsPromptDeniedPriorIgnoreCountPrefix[] =
+ "Permissions.Prompt.Denied.PriorIgnoreCount.";
const char PermissionUmaUtil::kPermissionsPromptDeniedNoGesture[] =
"Permissions.Prompt.Denied.NoGesture";
+const char
+ PermissionUmaUtil::kPermissionsPromptDismissedPriorDismissCountPrefix[] =
+ "Permissions.Prompt.Dismissed.PriorDismissCount.";
+const char
+ PermissionUmaUtil::kPermissionsPromptDismissedPriorIgnoreCountPrefix[] =
+ "Permissions.Prompt.Dismissed.PriorIgnoreCount.";
+const char
+ PermissionUmaUtil::kPermissionsPromptIgnoredPriorDismissCountPrefix[] =
+ "Permissions.Prompt.Ignored.PriorDismissCount.";
+const char
+ PermissionUmaUtil::kPermissionsPromptIgnoredPriorIgnoreCountPrefix[] =
+ "Permissions.Prompt.Ignored.PriorIgnoreCount.";
const char PermissionUmaUtil::kPermissionsPromptRequestsPerPrompt[] =
"Permissions.Prompt.RequestsPerPrompt";
const char PermissionUmaUtil::kPermissionsPromptMergedBubbleTypes[] =
@@ -222,6 +247,14 @@ void PermissionUmaUtil::PermissionGranted(
Profile* profile) {
RecordPermissionAction(permission, GRANTED, PermissionSourceUI::PROMPT,
gesture_type, requesting_origin, profile);
+ RecordPermissionPromptPriorCount(
+ permission, kPermissionsPromptAcceptedPriorDismissCountPrefix,
+ PermissionDecisionAutoBlocker::GetDismissCount(requesting_origin,
+ permission, profile));
+ RecordPermissionPromptPriorCount(
+ permission, kPermissionsPromptAcceptedPriorIgnoreCountPrefix,
+ PermissionDecisionAutoBlocker::GetIgnoreCount(requesting_origin,
+ permission, profile));
}
void PermissionUmaUtil::PermissionDenied(
@@ -231,6 +264,14 @@ void PermissionUmaUtil::PermissionDenied(
Profile* profile) {
RecordPermissionAction(permission, DENIED, PermissionSourceUI::PROMPT,
gesture_type, requesting_origin, profile);
+ RecordPermissionPromptPriorCount(
+ permission, kPermissionsPromptDeniedPriorDismissCountPrefix,
+ PermissionDecisionAutoBlocker::GetDismissCount(requesting_origin,
+ permission, profile));
+ RecordPermissionPromptPriorCount(
+ permission, kPermissionsPromptDeniedPriorIgnoreCountPrefix,
+ PermissionDecisionAutoBlocker::GetIgnoreCount(requesting_origin,
+ permission, profile));
}
void PermissionUmaUtil::PermissionDismissed(
@@ -240,6 +281,14 @@ void PermissionUmaUtil::PermissionDismissed(
Profile* profile) {
RecordPermissionAction(permission, DISMISSED, PermissionSourceUI::PROMPT,
gesture_type, requesting_origin, profile);
+ RecordPermissionPromptPriorCount(
+ permission, kPermissionsPromptDismissedPriorDismissCountPrefix,
+ PermissionDecisionAutoBlocker::GetDismissCount(requesting_origin,
+ permission, profile));
+ RecordPermissionPromptPriorCount(
+ permission, kPermissionsPromptDismissedPriorIgnoreCountPrefix,
+ PermissionDecisionAutoBlocker::GetIgnoreCount(requesting_origin,
+ permission, profile));
}
void PermissionUmaUtil::PermissionIgnored(
@@ -249,6 +298,14 @@ void PermissionUmaUtil::PermissionIgnored(
Profile* profile) {
RecordPermissionAction(permission, IGNORED, PermissionSourceUI::PROMPT,
gesture_type, requesting_origin, profile);
+ RecordPermissionPromptPriorCount(
+ permission, kPermissionsPromptIgnoredPriorDismissCountPrefix,
+ PermissionDecisionAutoBlocker::GetDismissCount(requesting_origin,
+ permission, profile));
+ RecordPermissionPromptPriorCount(
+ permission, kPermissionsPromptIgnoredPriorIgnoreCountPrefix,
+ PermissionDecisionAutoBlocker::GetIgnoreCount(requesting_origin,
+ permission, profile));
}
void PermissionUmaUtil::PermissionRevoked(PermissionType permission,
@@ -354,98 +411,19 @@ void PermissionUmaUtil::PermissionPromptDenied(
requests[0]->GetGestureType(), requests[0]->GetPermissionRequestType());
}
-void PermissionUmaUtil::PermissionPromptDismissed(
+void PermissionUmaUtil::RecordPermissionPromptPriorCount(
content::PermissionType permission,
+ const char* prefix,
int count) {
- switch (permission) {
- case PermissionType::GEOLOCATION:
- UMA_HISTOGRAM_COUNTS_100("Permissions.Prompt.DismissCount.Geolocation",
- count);
- break;
- case PermissionType::NOTIFICATIONS:
- UMA_HISTOGRAM_COUNTS_100("Permissions.Prompt.DismissCount.Notifications",
- count);
- break;
- case PermissionType::MIDI_SYSEX:
- UMA_HISTOGRAM_COUNTS_100("Permissions.Prompt.DismissCount.MidiSysEx",
- count);
- break;
- case PermissionType::PUSH_MESSAGING:
- UMA_HISTOGRAM_COUNTS_100("Permissions.Prompt.DismissCount.PushMessaging",
- count);
- break;
- case PermissionType::PROTECTED_MEDIA_IDENTIFIER:
- UMA_HISTOGRAM_COUNTS_100("Permissions.Prompt.DismissCount.ProtectedMedia",
- count);
- break;
- case PermissionType::DURABLE_STORAGE:
- UMA_HISTOGRAM_COUNTS_100("Permissions.Prompt.DismissCount.DurableStorage",
- count);
- break;
- case PermissionType::AUDIO_CAPTURE:
- UMA_HISTOGRAM_COUNTS_100("Permissions.Prompt.DismissCount.AudioCapture",
- count);
- break;
- case PermissionType::VIDEO_CAPTURE:
- UMA_HISTOGRAM_COUNTS_100("Permissions.Prompt.DismissCount.VideoCapture",
- count);
- break;
- // The user is not prompted for these permissions, thus there is no dismiss
- // recorded for them.
- case PermissionType::MIDI:
- case PermissionType::BACKGROUND_SYNC:
- case PermissionType::NUM:
- NOTREACHED() << "PERMISSION "
- << PermissionUtil::GetPermissionString(permission)
- << " not accounted for";
- }
-}
-
-void PermissionUmaUtil::PermissionPromptIgnored(
- content::PermissionType permission,
- int count) {
- switch (permission) {
- case PermissionType::GEOLOCATION:
- UMA_HISTOGRAM_COUNTS_100("Permissions.Prompt.IgnoreCount.Geolocation",
- count);
- break;
- case PermissionType::NOTIFICATIONS:
- UMA_HISTOGRAM_COUNTS_100("Permissions.Prompt.IgnoreCount.Notifications",
- count);
- break;
- case PermissionType::MIDI_SYSEX:
- UMA_HISTOGRAM_COUNTS_100("Permissions.Prompt.IgnoreCount.MidiSysEx",
- count);
- break;
- case PermissionType::PUSH_MESSAGING:
- UMA_HISTOGRAM_COUNTS_100("Permissions.Prompt.IgnoreCount.PushMessaging",
- count);
- break;
- case PermissionType::PROTECTED_MEDIA_IDENTIFIER:
- UMA_HISTOGRAM_COUNTS_100("Permissions.Prompt.IgnoreCount.ProtectedMedia",
- count);
- break;
- case PermissionType::DURABLE_STORAGE:
- UMA_HISTOGRAM_COUNTS_100("Permissions.Prompt.IgnoreCount.DurableStorage",
- count);
- break;
- case PermissionType::AUDIO_CAPTURE:
- UMA_HISTOGRAM_COUNTS_100("Permissions.Prompt.IgnoreCount.AudioCapture",
- count);
- break;
- case PermissionType::VIDEO_CAPTURE:
- UMA_HISTOGRAM_COUNTS_100("Permissions.Prompt.IgnoreCount.VideoCapture",
- count);
- break;
- // The user is not prompted for these permissions, thus there is no
- // ignore recorded for them.
- case PermissionType::MIDI:
- case PermissionType::BACKGROUND_SYNC:
- case PermissionType::NUM:
- NOTREACHED() << "PERMISSION "
- << PermissionUtil::GetPermissionString(permission)
- << " not accounted for";
- }
+ DCHECK(permission != PermissionType::MIDI &&
+ permission != PermissionType::BACKGROUND_SYNC &&
+ permission != PermissionType::NUM);
Ilya Sherman 2016/08/18 00:59:00 nit: Please write this as three separate DCHECKs,
Ilya Sherman 2016/08/18 00:59:00 Please preserve the comment "The user is not promp
dominickn 2016/08/18 01:21:11 Done.
+ // Expand UMA_HISTOGRAM_COUNTS_100 so that we can use a dynamically suffixed
+ // histogram name.
+ base::Histogram::FactoryGet(
+ prefix + PermissionUtil::GetPermissionString(permission), 1, 100, 50,
+ base::HistogramBase::kUmaTargetedHistogramFlag)
+ ->Add(count);
}
void PermissionUmaUtil::PermissionPromptAcceptedWithPersistenceToggle(

Powered by Google App Engine
This is Rietveld 408576698