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( |