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 abf5fb45f7d84857a9c82f94014620deac6257fb..45dac64b0977455d4b571a42b99b6083df98f4d0 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" |
@@ -225,6 +226,30 @@ const char PermissionUmaUtil::kPermissionsPromptMergedBubbleAccepted[] = |
"Permissions.Prompt.MergedBubbleAccepted"; |
const char PermissionUmaUtil::kPermissionsPromptMergedBubbleDenied[] = |
"Permissions.Prompt.MergedBubbleDenied"; |
+const char |
+ PermissionUmaUtil::kPermissionsPromptAcceptedPriorDismissCountPrefix[] = |
+ "Permissions.Prompt.Accepted.PriorDismissCount."; |
+const char |
+ PermissionUmaUtil::kPermissionsPromptAcceptedPriorIgnoreCountPrefix[] = |
+ "Permissions.Prompt.Accepted.PriorIgnoreCount."; |
+const char |
+ PermissionUmaUtil::kPermissionsPromptDeniedPriorDismissCountPrefix[] = |
+ "Permissions.Prompt.Denied.PriorDismissCount."; |
+const char |
+ PermissionUmaUtil::kPermissionsPromptDeniedPriorIgnoreCountPrefix[] = |
+ "Permissions.Prompt.Denied.PriorIgnoreCount."; |
+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."; |
// Make sure you update histograms.xml permission histogram_suffix if you |
// add new permission |
@@ -243,6 +268,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( |
@@ -252,6 +285,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( |
@@ -261,6 +302,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( |
@@ -270,6 +319,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, |
@@ -375,98 +432,22 @@ void PermissionUmaUtil::PermissionPromptDenied( |
requests[0]->GetGestureType(), requests[0]->GetPermissionRequestType()); |
} |
-void PermissionUmaUtil::PermissionPromptDismissed( |
+void PermissionUmaUtil::RecordPermissionPromptPriorCount( |
content::PermissionType permission, |
+ const std::string& 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"; |
- } |
+ // The user is not prompted for these permissions, thus there is no prompt |
+ // event to record a prior count for. |
+ DCHECK_NE(PermissionType::MIDI, permission); |
+ DCHECK_NE(PermissionType::BACKGROUND_SYNC, permission); |
+ DCHECK_NE(PermissionType::NUM, permission); |
+ |
+ // 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( |