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 2f4963844cfdb57962ea84a418436f8dfbbab939..d271cbc52faf2fb08f2321b52c9e4d8eae9a4c62 100644 |
--- a/chrome/browser/content_settings/permission_context_uma_util.cc |
+++ b/chrome/browser/content_settings/permission_context_uma_util.cc |
@@ -2,15 +2,17 @@ |
// 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 "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) \ |
+ permission, permission_secure, permission_insecure, action) \ |
UMA_HISTOGRAM_ENUMERATION( \ |
permission, \ |
action, \ |
@@ -25,6 +27,29 @@ |
PERMISSION_ACTION_NUM); \ |
} |
+#define PERMISSION_ACTION_RAPPOR(gurl, granted, denied, \ |
+ dismissed, ignored, action) \ |
+ switch (action) { \ |
+ case GRANTED: \ |
+ rappor::SampleDomainAndRegistryFromGURL( \ |
+ g_browser_process->rappor_service(), granted, gurl); \ |
+ break; \ |
+ case DENIED: \ |
+ rappor::SampleDomainAndRegistryFromGURL( \ |
+ g_browser_process->rappor_service(), denied, gurl); \ |
+ break; \ |
+ case DISMISSED: \ |
+ rappor::SampleDomainAndRegistryFromGURL( \ |
+ g_browser_process->rappor_service(), dismissed, gurl); \ |
+ break; \ |
+ case IGNORED: \ |
+ rappor::SampleDomainAndRegistryFromGURL( \ |
+ g_browser_process->rappor_service(), ignored, gurl); \ |
+ break; \ |
+ case PERMISSION_ACTION_NUM: \ |
+ NOTREACHED(); \ |
+ break; \ |
+ } |
namespace { |
@@ -44,7 +69,8 @@ enum PermissionAction { |
void RecordPermissionAction( |
ContentSettingsType permission, |
PermissionAction action, |
- bool secure_origin) { |
+ const GURL& requesting_origin) { |
+ bool secure_origin = requesting_origin.SchemeIsSecure(); |
switch (permission) { |
case CONTENT_SETTINGS_TYPE_GEOLOCATION: |
PERMISSION_ACTION_UMA( |
@@ -53,6 +79,13 @@ void RecordPermissionAction( |
"ContentSettings.PermissionActionsSecureOrigin_Geolocation", |
"ContentSettings.PermissionActionsInsecureOrigin_Geolocation", |
action); |
+ PERMISSION_ACTION_RAPPOR( |
Steven Holte
2015/03/18 20:39:20
The rappor::Sample method doesn't initialize a sta
Miguel Garcia
2015/03/25 02:29:37
Oh that's great news! Changed it to generate it dy
|
+ requesting_origin, |
+ "ContentSettings.PermissionActions_Geolocation.Granted.Url", |
+ "ContentSettings.PermissionActions_Geolocation.Denied.Url", |
+ "ContentSettings.PermissionActions_Geolocation.Dismissed.Url", |
+ "ContentSettings.PermissionActions_Geolocation.Ignored.Url", |
+ action); |
break; |
case CONTENT_SETTINGS_TYPE_NOTIFICATIONS: |
PERMISSION_ACTION_UMA( |
@@ -61,6 +94,13 @@ void RecordPermissionAction( |
"ContentSettings.PermissionActionsSecureOrigin_Notifications", |
"ContentSettings.PermissionActionsInsecureOrigin_Notifications", |
action); |
+ PERMISSION_ACTION_RAPPOR( |
+ requesting_origin, |
+ "ContentSettings.PermissionActions_Notifications.Granted.Url", |
+ "ContentSettings.PermissionActions_Notifications.Denied.Url", |
+ "ContentSettings.PermissionActions_Notifications.Dismissed.Url", |
+ "ContentSettings.PermissionActions_Notifications.Ignored.Url", |
+ action); |
break; |
case CONTENT_SETTINGS_TYPE_MIDI_SYSEX: |
PERMISSION_ACTION_UMA( |
@@ -94,13 +134,22 @@ void RecordPermissionAction( |
} |
void RecordPermissionRequest( |
- ContentSettingsType permission, bool secure_origin) { |
+ ContentSettingsType permission, const GURL& requesting_origin) { |
+ bool secure_origin = requesting_origin.SchemeIsSecure(); |
content::PermissionType type; |
switch (permission) { |
case CONTENT_SETTINGS_TYPE_GEOLOCATION: |
+ rappor::SampleDomainAndRegistryFromGURL( |
+ g_browser_process->rappor_service(), |
+ "ContentSettings.PermissionRequested.Geolocation.Url", |
+ requesting_origin); |
type = content::PERMISSION_GEOLOCATION; |
break; |
case CONTENT_SETTINGS_TYPE_NOTIFICATIONS: |
+ rappor::SampleDomainAndRegistryFromGURL( |
+ g_browser_process->rappor_service(), |
+ "ContentSettings.PermissionRequested.Notifications.Url", |
+ requesting_origin); |
type = content::PERMISSION_NOTIFICATIONS; |
break; |
case CONTENT_SETTINGS_TYPE_MIDI_SYSEX: |
@@ -139,29 +188,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); |
} |