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

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

Issue 1977693003: Add metrics for permission prompt acceptance / denial (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Clarify histogram descriptions Created 4 years, 7 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 38ca3630e42f4f61dd7b52b4e89582b0dedf3a24..bd0b9318a3c62d8434c3cb310b47b90eb78697e8 100644
--- a/chrome/browser/permissions/permission_uma_util.cc
+++ b/chrome/browser/permissions/permission_uma_util.cc
@@ -20,7 +20,7 @@
#include "url/gurl.h"
// UMA keys need to be statically initialized so plain function would not
-// work. Use a Macro instead.
+// work. Use macros instead.
#define PERMISSION_ACTION_UMA(secure_origin, permission, permission_secure, \
permission_insecure, action) \
UMA_HISTOGRAM_ENUMERATION(permission, action, PERMISSION_ACTION_NUM); \
@@ -32,6 +32,12 @@
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))
+
using content::PermissionType;
namespace {
@@ -237,6 +243,21 @@ void RecordPermissionRequest(PermissionType permission,
} // anonymous namespace
+const char PermissionUmaUtil::kPermissionsPromptShown[] =
+ "Permissions.Prompt.Shown";
+const char PermissionUmaUtil::kPermissionsPromptAccepted[] =
+ "Permissions.Prompt.Accepted";
+const char PermissionUmaUtil::kPermissionsPromptDenied[] =
+ "Permissions.Prompt.Denied";
+const char PermissionUmaUtil::kPermissionsPromptRequestsPerPrompt[] =
+ "Permissions.Prompt.RequestsPerPrompt";
+const char PermissionUmaUtil::kPermissionsPromptMergedBubbleTypes[] =
+ "Permissions.Prompt.MergedBubbleTypes";
+const char PermissionUmaUtil::kPermissionsPromptMergedBubbleAccepted[] =
+ "Permissions.Prompt.MergedBubbleAccepted";
+const char PermissionUmaUtil::kPermissionsPromptMergedBubbleDenied[] =
+ "Permissions.Prompt.MergedBubbleDenied";
+
// Make sure you update histograms.xml permission histogram_suffix if you
// add new permission
void PermissionUmaUtil::PermissionRequested(PermissionType permission,
@@ -282,26 +303,63 @@ void PermissionUmaUtil::PermissionRevoked(PermissionType permission,
void PermissionUmaUtil::PermissionPromptShown(
const std::vector<PermissionBubbleRequest*>& requests) {
DCHECK(!requests.empty());
+
PermissionBubbleType permission_prompt_type = PermissionBubbleType::MULTIPLE;
if (requests.size() == 1)
permission_prompt_type = requests[0]->GetPermissionBubbleType();
- UMA_HISTOGRAM_ENUMERATION(
- "Permissions.Prompt.Shown",
- static_cast<base::HistogramBase::Sample>(permission_prompt_type),
- static_cast<base::HistogramBase::Sample>(PermissionBubbleType::NUM));
+ PERMISSION_BUBBLE_TYPE_UMA(kPermissionsPromptShown, permission_prompt_type);
UMA_HISTOGRAM_ENUMERATION(
- "Permissions.Prompt.RequestsPerPrompt",
+ kPermissionsPromptRequestsPerPrompt,
static_cast<base::HistogramBase::Sample>(requests.size()),
static_cast<base::HistogramBase::Sample>(10));
if (requests.size() > 1) {
for (const auto* request : requests) {
- UMA_HISTOGRAM_ENUMERATION(
- "Permissions.Prompt.MergedBubbleTypes",
- static_cast<base::HistogramBase::Sample>(
- request->GetPermissionBubbleType()),
- static_cast<base::HistogramBase::Sample>(PermissionBubbleType::NUM));
+ PERMISSION_BUBBLE_TYPE_UMA(kPermissionsPromptMergedBubbleTypes,
+ request->GetPermissionBubbleType());
}
}
}
+
+void PermissionUmaUtil::PermissionPromptAccepted(
+ const std::vector<PermissionBubbleRequest*>& requests,
+ const std::vector<bool>& accept_states) {
+ DCHECK(!requests.empty());
+ DCHECK(requests.size() == accept_states.size());
+
+ bool all_accepted = accept_states[0];
+ PermissionBubbleType permission_prompt_type =
+ requests[0]->GetPermissionBubbleType();
+ if (requests.size() > 1) {
+ permission_prompt_type = PermissionBubbleType::MULTIPLE;
+ for (size_t i = 0; i < requests.size(); ++i) {
+ const auto* request = requests[i];
+ if (accept_states[i]) {
+ PERMISSION_BUBBLE_TYPE_UMA(kPermissionsPromptMergedBubbleAccepted,
+ request->GetPermissionBubbleType());
+ } else {
+ all_accepted = false;
+ PERMISSION_BUBBLE_TYPE_UMA(kPermissionsPromptMergedBubbleDenied,
+ request->GetPermissionBubbleType());
+ }
+ }
+ }
+
+ if (all_accepted) {
+ PERMISSION_BUBBLE_TYPE_UMA(kPermissionsPromptAccepted,
+ permission_prompt_type);
+ } else {
+ PERMISSION_BUBBLE_TYPE_UMA(kPermissionsPromptDenied,
+ permission_prompt_type);
+ }
+}
+
+void PermissionUmaUtil::PermissionPromptDenied(
+ const std::vector<PermissionBubbleRequest*>& requests) {
+ DCHECK(!requests.empty());
+ DCHECK(requests.size() == 1);
+
+ PERMISSION_BUBBLE_TYPE_UMA(kPermissionsPromptDenied,
+ requests[0]->GetPermissionBubbleType());
+}
« no previous file with comments | « chrome/browser/permissions/permission_uma_util.h ('k') | chrome/browser/ui/website_settings/mock_permission_bubble_request.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698