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

Unified Diff: chrome/browser/content_settings/permission_context_uma_util.cc

Issue 1019543002: Add rappor metrics for infobar/bubble operations for Geolocation and Notifications (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: rebase Created 5 years, 9 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
« no previous file with comments | « no previous file | tools/metrics/rappor/rappor.xml » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/content_settings/permission_context_uma_util.cc
diff --git a/chrome/browser/content_settings/permission_context_uma_util.cc b/chrome/browser/content_settings/permission_context_uma_util.cc
index 3b62a904693dfbfe6209ad321861f3d7aab73202..dd4c827669b642856dd3e9831ce70ec935b9651b 100644
--- a/chrome/browser/content_settings/permission_context_uma_util.cc
+++ b/chrome/browser/content_settings/permission_context_uma_util.cc
@@ -2,29 +2,26 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-#include "base/metrics/histogram.h"
+#include "base/metrics/histogram_macros.h"
+#include "base/strings/stringprintf.h"
+#include "chrome/browser/browser_process.h"
#include "chrome/browser/content_settings/permission_context_uma_util.h"
+#include "components/rappor/rappor_utils.h"
#include "content/public/browser/permission_type.h"
#include "url/gurl.h"
// UMA keys need to be statically initialized so plain function would not
// work. Use a Macro instead.
-#define PERMISSION_ACTION_UMA(secure_origin, \
- permission, permission_secure, permission_insecure, action) \
- UMA_HISTOGRAM_ENUMERATION( \
- permission, \
- action, \
- PERMISSION_ACTION_NUM); \
- if (secure_origin) { \
- UMA_HISTOGRAM_ENUMERATION(permission_secure, \
- action, \
- PERMISSION_ACTION_NUM); \
- } else { \
- UMA_HISTOGRAM_ENUMERATION(permission_insecure, \
- action, \
- PERMISSION_ACTION_NUM); \
- }
-
+#define PERMISSION_ACTION_UMA(secure_origin, permission, permission_secure, \
+ permission_insecure, action) \
+ UMA_HISTOGRAM_ENUMERATION(permission, action, PERMISSION_ACTION_NUM); \
+ if (secure_origin) { \
+ UMA_HISTOGRAM_ENUMERATION(permission_secure, action, \
+ PERMISSION_ACTION_NUM); \
+ } else { \
+ UMA_HISTOGRAM_ENUMERATION(permission_insecure, action, \
+ PERMISSION_ACTION_NUM); \
+ }
namespace {
@@ -41,10 +38,50 @@ enum PermissionAction {
PERMISSION_ACTION_NUM,
};
-void RecordPermissionAction(
- ContentSettingsType permission,
- PermissionAction action,
- bool secure_origin) {
+const std::string GetRapporMetric(ContentSettingsType permission,
+ PermissionAction action) {
+ std::string action_str;
+ switch (action) {
+ case GRANTED:
+ action_str = "Granted";
+ break;
+ case DENIED:
+ action_str = "Denied";
+ break;
+ case DISMISSED:
+ action_str = "Dismissed";
+ break;
+ case IGNORED:
+ action_str = "Ignored";
+ break;
+ case PERMISSION_ACTION_NUM:
+ NOTREACHED();
+ break;
+ }
+ std::string permission_str;
+ switch (permission) {
+ case CONTENT_SETTINGS_TYPE_GEOLOCATION:
+ permission_str = "Geolocation";
+ break;
+ case CONTENT_SETTINGS_TYPE_NOTIFICATIONS:
+ permission_str = "Notifications";
+ break;
+ default:
+ permission_str = "";
+ break;
+ }
+
+ if (permission_str.empty())
+ return "";
+ return base::StringPrintf("ContentSettings.PermissionActions_%s.%s.Url",
+ permission_str.c_str(), action_str.c_str());
+}
+
+void RecordPermissionAction(ContentSettingsType permission,
+ PermissionAction action,
+ const GURL& requesting_origin) {
+ bool secure_origin = requesting_origin.SchemeIsSecure();
+
switch (permission) {
case CONTENT_SETTINGS_TYPE_GEOLOCATION:
PERMISSION_ACTION_UMA(
@@ -91,17 +128,32 @@ void RecordPermissionAction(
default:
NOTREACHED() << "PERMISSION " << permission << " not accounted for";
}
+
+ const std::string& rappor_metric = GetRapporMetric(permission, action);
+ if (!rappor_metric.empty())
+ rappor::SampleDomainAndRegistryFromGURL(
+ g_browser_process->rappor_service(), rappor_metric,
+ requesting_origin);
}
-void RecordPermissionRequest(
- ContentSettingsType permission, bool secure_origin) {
+void RecordPermissionRequest(ContentSettingsType permission,
+ const GURL& requesting_origin) {
+ bool secure_origin = requesting_origin.SchemeIsSecure();
content::PermissionType type;
switch (permission) {
case CONTENT_SETTINGS_TYPE_GEOLOCATION:
type = content::PermissionType::GEOLOCATION;
+ rappor::SampleDomainAndRegistryFromGURL(
+ g_browser_process->rappor_service(),
+ "ContentSettings.PermissionRequested.Geolocation.Url",
+ requesting_origin);
break;
case CONTENT_SETTINGS_TYPE_NOTIFICATIONS:
type = content::PermissionType::NOTIFICATIONS;
+ rappor::SampleDomainAndRegistryFromGURL(
+ g_browser_process->rappor_service(),
+ "ContentSettings.PermissionRequested.Notifications.Url",
+ requesting_origin);
break;
case CONTENT_SETTINGS_TYPE_MIDI_SYSEX:
type = content::PermissionType::MIDI_SYSEX;
@@ -141,29 +193,25 @@ void RecordPermissionRequest(
// add new permission
void PermissionContextUmaUtil::PermissionRequested(
ContentSettingsType permission, const GURL& requesting_origin) {
- RecordPermissionRequest(permission, requesting_origin.SchemeIsSecure());
+ RecordPermissionRequest(permission, requesting_origin);
}
void PermissionContextUmaUtil::PermissionGranted(
ContentSettingsType permission, const GURL& requesting_origin) {
- RecordPermissionAction(permission, GRANTED,
- requesting_origin.SchemeIsSecure());
+ RecordPermissionAction(permission, GRANTED, requesting_origin);
}
void PermissionContextUmaUtil::PermissionDenied(
ContentSettingsType permission, const GURL& requesting_origin) {
- RecordPermissionAction(permission, DENIED,
- requesting_origin.SchemeIsSecure());
+ RecordPermissionAction(permission, DENIED, requesting_origin);
}
void PermissionContextUmaUtil::PermissionDismissed(
ContentSettingsType permission, const GURL& requesting_origin) {
- RecordPermissionAction(permission, DISMISSED,
- requesting_origin.SchemeIsSecure());
+ RecordPermissionAction(permission, DISMISSED, requesting_origin);
}
void PermissionContextUmaUtil::PermissionIgnored(
ContentSettingsType permission, const GURL& requesting_origin) {
- RecordPermissionAction(permission, IGNORED,
- requesting_origin.SchemeIsSecure());
+ RecordPermissionAction(permission, IGNORED, requesting_origin);
}
« no previous file with comments | « no previous file | tools/metrics/rappor/rappor.xml » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698