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

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

Issue 2124703002: Record metrics for permission prompt acceptance vs. user gesture. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Add histograms Created 4 years, 5 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 efbdf5f04b6c65ff92efbb88a5fa6d95f2c44fb1..fc5bad9f76537e2a9bb823ba3a15a789e4e44ca0 100644
--- a/chrome/browser/permissions/permission_uma_util.cc
+++ b/chrome/browser/permissions/permission_uma_util.cc
@@ -32,11 +32,22 @@
PERMISSION_ACTION_NUM); \
}
-#define PERMISSION_BUBBLE_TYPE_UMA(metric_name, permission_bubble_type) \
- UMA_HISTOGRAM_ENUMERATION( \
- metric_name, \
- static_cast<base::HistogramBase::Sample>(permission_bubble_type), \
- static_cast<base::HistogramBase::Sample>(PermissionBubbleType::NUM))
+#define PERMISSION_BUBBLE_TYPE_UMA(metric_name, permission_bubble_type) \
+ UMA_HISTOGRAM_ENUMERATION( \
+ metric_name, \
+ static_cast<base::HistogramBase::Sample>(permission_bubble_type), \
+ static_cast<base::HistogramBase::Sample>(PermissionBubbleType::NUM))
+
+#define PERMISSION_BUBBLE_GESTURE_TYPE_UMA(gesture_metric_name, \
+ no_gesture_metric_name, \
+ gesture_type, \
+ permission_bubble_type) \
+ if (gesture_type == PermissionBubbleGestureType::GESTURE) { \
+ PERMISSION_BUBBLE_TYPE_UMA(gesture_metric_name, permission_bubble_type); \
+ } else if (gesture_type == PermissionBubbleGestureType::NO_GESTURE) { \
+ PERMISSION_BUBBLE_TYPE_UMA(no_gesture_metric_name, \
+ permission_bubble_type); \
+ }
using content::PermissionType;
@@ -260,6 +271,18 @@ const char PermissionUmaUtil::kPermissionsPromptAccepted[] =
"Permissions.Prompt.Accepted";
const char PermissionUmaUtil::kPermissionsPromptDenied[] =
"Permissions.Prompt.Denied";
+const char PermissionUmaUtil::kPermissionsPromptGestureShown[] =
+ "Permissions.Prompt.Gesture.Shown";
+const char PermissionUmaUtil::kPermissionsPromptGestureAccepted[] =
+ "Permissions.Prompt.Gesture.Accepted";
+const char PermissionUmaUtil::kPermissionsPromptGestureDenied[] =
+ "Permissions.Prompt.Gesture.Denied";
+const char PermissionUmaUtil::kPermissionsPromptNoGestureShown[] =
+ "Permissions.Prompt.NoGesture.Shown";
+const char PermissionUmaUtil::kPermissionsPromptNoGestureAccepted[] =
+ "Permissions.Prompt.NoGesture.Accepted";
+const char PermissionUmaUtil::kPermissionsPromptNoGestureDenied[] =
+ "Permissions.Prompt.NoGesture.Denied";
const char PermissionUmaUtil::kPermissionsPromptRequestsPerPrompt[] =
"Permissions.Prompt.RequestsPerPrompt";
const char PermissionUmaUtil::kPermissionsPromptMergedBubbleTypes[] =
@@ -316,9 +339,17 @@ void PermissionUmaUtil::PermissionPromptShown(
DCHECK(!requests.empty());
PermissionBubbleType permission_prompt_type = PermissionBubbleType::MULTIPLE;
- if (requests.size() == 1)
+ PermissionBubbleGestureType permission_gesture_type =
+ PermissionBubbleGestureType::UNKNOWN;
+ if (requests.size() == 1) {
permission_prompt_type = requests[0]->GetPermissionBubbleType();
+ permission_gesture_type = requests[0]->GetGestureType();
+ }
+
PERMISSION_BUBBLE_TYPE_UMA(kPermissionsPromptShown, permission_prompt_type);
+ PERMISSION_BUBBLE_GESTURE_TYPE_UMA(
+ kPermissionsPromptGestureShown, kPermissionsPromptNoGestureShown,
+ permission_gesture_type, permission_prompt_type);
UMA_HISTOGRAM_ENUMERATION(
kPermissionsPromptRequestsPerPrompt,
@@ -342,8 +373,11 @@ void PermissionUmaUtil::PermissionPromptAccepted(
bool all_accepted = accept_states[0];
PermissionBubbleType permission_prompt_type =
requests[0]->GetPermissionBubbleType();
+ PermissionBubbleGestureType permission_gesture_type =
+ requests[0]->GetGestureType();
if (requests.size() > 1) {
permission_prompt_type = PermissionBubbleType::MULTIPLE;
+ permission_gesture_type = PermissionBubbleGestureType::UNKNOWN;
for (size_t i = 0; i < requests.size(); ++i) {
const auto* request = requests[i];
if (accept_states[i]) {
@@ -360,9 +394,15 @@ void PermissionUmaUtil::PermissionPromptAccepted(
if (all_accepted) {
PERMISSION_BUBBLE_TYPE_UMA(kPermissionsPromptAccepted,
permission_prompt_type);
+ PERMISSION_BUBBLE_GESTURE_TYPE_UMA(
+ kPermissionsPromptGestureAccepted, kPermissionsPromptNoGestureAccepted,
+ permission_gesture_type, permission_prompt_type);
} else {
PERMISSION_BUBBLE_TYPE_UMA(kPermissionsPromptDenied,
permission_prompt_type);
+ PERMISSION_BUBBLE_GESTURE_TYPE_UMA(
+ kPermissionsPromptGestureDenied, kPermissionsPromptNoGestureDenied,
+ permission_gesture_type, permission_prompt_type);
}
}
@@ -373,4 +413,7 @@ void PermissionUmaUtil::PermissionPromptDenied(
PERMISSION_BUBBLE_TYPE_UMA(kPermissionsPromptDenied,
requests[0]->GetPermissionBubbleType());
+ PERMISSION_BUBBLE_GESTURE_TYPE_UMA(
+ kPermissionsPromptGestureDenied, kPermissionsPromptNoGestureDenied,
+ requests[0]->GetGestureType(), requests[0]->GetPermissionBubbleType());
}

Powered by Google App Engine
This is Rietveld 408576698