Chromium Code Reviews| 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); |
| } |