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

Side by Side 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: 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 unified diff | Download patch
« no previous file with comments | « no previous file | tools/metrics/rappor/rappor.xml » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "base/metrics/histogram.h" 5 #include "base/metrics/histogram_macros.h"
6 #include "chrome/browser/browser_process.h"
6 #include "chrome/browser/content_settings/permission_context_uma_util.h" 7 #include "chrome/browser/content_settings/permission_context_uma_util.h"
8 #include "components/rappor/rappor_utils.h"
7 #include "content/public/browser/permission_type.h" 9 #include "content/public/browser/permission_type.h"
8 #include "url/gurl.h" 10 #include "url/gurl.h"
9 11
10 // UMA keys need to be statically initialized so plain function would not 12 // UMA keys need to be statically initialized so plain function would not
11 // work. Use a Macro instead. 13 // work. Use a Macro instead.
12 #define PERMISSION_ACTION_UMA(secure_origin, \ 14 #define PERMISSION_ACTION_UMA(secure_origin, \
13 permission, permission_secure, permission_insecure, action) \ 15 permission, permission_secure, permission_insecure, action) \
14 UMA_HISTOGRAM_ENUMERATION( \ 16 UMA_HISTOGRAM_ENUMERATION( \
15 permission, \ 17 permission, \
16 action, \ 18 action, \
17 PERMISSION_ACTION_NUM); \ 19 PERMISSION_ACTION_NUM); \
18 if (secure_origin) { \ 20 if (secure_origin) { \
19 UMA_HISTOGRAM_ENUMERATION(permission_secure, \ 21 UMA_HISTOGRAM_ENUMERATION(permission_secure, \
20 action, \ 22 action, \
21 PERMISSION_ACTION_NUM); \ 23 PERMISSION_ACTION_NUM); \
22 } else { \ 24 } else { \
23 UMA_HISTOGRAM_ENUMERATION(permission_insecure, \ 25 UMA_HISTOGRAM_ENUMERATION(permission_insecure, \
24 action, \ 26 action, \
25 PERMISSION_ACTION_NUM); \ 27 PERMISSION_ACTION_NUM); \
26 } 28 }
27 29
30 #define PERMISSION_ACTION_RAPPOR(gurl, granted, denied, \
31 dismissed, ignored, action) \
32 switch (action) { \
33 case GRANTED: \
34 rappor::SampleDomainAndRegistryFromGURL( \
35 g_browser_process->rappor_service(), granted, gurl); \
36 break; \
37 case DENIED: \
38 rappor::SampleDomainAndRegistryFromGURL( \
39 g_browser_process->rappor_service(), denied, gurl); \
40 break; \
41 case DISMISSED: \
42 rappor::SampleDomainAndRegistryFromGURL( \
43 g_browser_process->rappor_service(), dismissed, gurl); \
44 break; \
45 case IGNORED: \
46 rappor::SampleDomainAndRegistryFromGURL( \
47 g_browser_process->rappor_service(), ignored, gurl); \
48 break; \
49 case PERMISSION_ACTION_NUM: \
50 NOTREACHED(); \
51 break; \
52 }
28 53
29 namespace { 54 namespace {
30 55
31 // Enum for UMA purposes, make sure you update histograms.xml if you add new 56 // Enum for UMA purposes, make sure you update histograms.xml if you add new
32 // permission actions. Never delete or reorder an entry; only add new entries 57 // permission actions. Never delete or reorder an entry; only add new entries
33 // immediately before PERMISSION_NUM 58 // immediately before PERMISSION_NUM
34 enum PermissionAction { 59 enum PermissionAction {
35 GRANTED = 0, 60 GRANTED = 0,
36 DENIED = 1, 61 DENIED = 1,
37 DISMISSED = 2, 62 DISMISSED = 2,
38 IGNORED = 3, 63 IGNORED = 3,
39 64
40 // Always keep this at the end. 65 // Always keep this at the end.
41 PERMISSION_ACTION_NUM, 66 PERMISSION_ACTION_NUM,
42 }; 67 };
43 68
44 void RecordPermissionAction( 69 void RecordPermissionAction(
45 ContentSettingsType permission, 70 ContentSettingsType permission,
46 PermissionAction action, 71 PermissionAction action,
47 bool secure_origin) { 72 const GURL& requesting_origin) {
73 bool secure_origin = requesting_origin.SchemeIsSecure();
48 switch (permission) { 74 switch (permission) {
49 case CONTENT_SETTINGS_TYPE_GEOLOCATION: 75 case CONTENT_SETTINGS_TYPE_GEOLOCATION:
50 PERMISSION_ACTION_UMA( 76 PERMISSION_ACTION_UMA(
51 secure_origin, 77 secure_origin,
52 "ContentSettings.PermissionActions_Geolocation", 78 "ContentSettings.PermissionActions_Geolocation",
53 "ContentSettings.PermissionActionsSecureOrigin_Geolocation", 79 "ContentSettings.PermissionActionsSecureOrigin_Geolocation",
54 "ContentSettings.PermissionActionsInsecureOrigin_Geolocation", 80 "ContentSettings.PermissionActionsInsecureOrigin_Geolocation",
55 action); 81 action);
82 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
83 requesting_origin,
84 "ContentSettings.PermissionActions_Geolocation.Granted.Url",
85 "ContentSettings.PermissionActions_Geolocation.Denied.Url",
86 "ContentSettings.PermissionActions_Geolocation.Dismissed.Url",
87 "ContentSettings.PermissionActions_Geolocation.Ignored.Url",
88 action);
56 break; 89 break;
57 case CONTENT_SETTINGS_TYPE_NOTIFICATIONS: 90 case CONTENT_SETTINGS_TYPE_NOTIFICATIONS:
58 PERMISSION_ACTION_UMA( 91 PERMISSION_ACTION_UMA(
59 secure_origin, 92 secure_origin,
60 "ContentSettings.PermissionActions_Notifications", 93 "ContentSettings.PermissionActions_Notifications",
61 "ContentSettings.PermissionActionsSecureOrigin_Notifications", 94 "ContentSettings.PermissionActionsSecureOrigin_Notifications",
62 "ContentSettings.PermissionActionsInsecureOrigin_Notifications", 95 "ContentSettings.PermissionActionsInsecureOrigin_Notifications",
63 action); 96 action);
97 PERMISSION_ACTION_RAPPOR(
98 requesting_origin,
99 "ContentSettings.PermissionActions_Notifications.Granted.Url",
100 "ContentSettings.PermissionActions_Notifications.Denied.Url",
101 "ContentSettings.PermissionActions_Notifications.Dismissed.Url",
102 "ContentSettings.PermissionActions_Notifications.Ignored.Url",
103 action);
64 break; 104 break;
65 case CONTENT_SETTINGS_TYPE_MIDI_SYSEX: 105 case CONTENT_SETTINGS_TYPE_MIDI_SYSEX:
66 PERMISSION_ACTION_UMA( 106 PERMISSION_ACTION_UMA(
67 secure_origin, 107 secure_origin,
68 "ContentSettings.PermissionActions_MidiSysEx", 108 "ContentSettings.PermissionActions_MidiSysEx",
69 "ContentSettings.PermissionActionsSecureOrigin_MidiSysEx", 109 "ContentSettings.PermissionActionsSecureOrigin_MidiSysEx",
70 "ContentSettings.PermissionActionsInsecureOrigin_MidiSysEx", 110 "ContentSettings.PermissionActionsInsecureOrigin_MidiSysEx",
71 action); 111 action);
72 break; 112 break;
73 case CONTENT_SETTINGS_TYPE_PUSH_MESSAGING: 113 case CONTENT_SETTINGS_TYPE_PUSH_MESSAGING:
(...skipping 13 matching lines...) Expand all
87 "ContentSettings.PermissionActionsInsecureOrigin_ProtectedMedia", 127 "ContentSettings.PermissionActionsInsecureOrigin_ProtectedMedia",
88 action); 128 action);
89 break; 129 break;
90 #endif 130 #endif
91 default: 131 default:
92 NOTREACHED() << "PERMISSION " << permission << " not accounted for"; 132 NOTREACHED() << "PERMISSION " << permission << " not accounted for";
93 } 133 }
94 } 134 }
95 135
96 void RecordPermissionRequest( 136 void RecordPermissionRequest(
97 ContentSettingsType permission, bool secure_origin) { 137 ContentSettingsType permission, const GURL& requesting_origin) {
138 bool secure_origin = requesting_origin.SchemeIsSecure();
98 content::PermissionType type; 139 content::PermissionType type;
99 switch (permission) { 140 switch (permission) {
100 case CONTENT_SETTINGS_TYPE_GEOLOCATION: 141 case CONTENT_SETTINGS_TYPE_GEOLOCATION:
142 rappor::SampleDomainAndRegistryFromGURL(
143 g_browser_process->rappor_service(),
144 "ContentSettings.PermissionRequested.Geolocation.Url",
145 requesting_origin);
101 type = content::PERMISSION_GEOLOCATION; 146 type = content::PERMISSION_GEOLOCATION;
102 break; 147 break;
103 case CONTENT_SETTINGS_TYPE_NOTIFICATIONS: 148 case CONTENT_SETTINGS_TYPE_NOTIFICATIONS:
149 rappor::SampleDomainAndRegistryFromGURL(
150 g_browser_process->rappor_service(),
151 "ContentSettings.PermissionRequested.Notifications.Url",
152 requesting_origin);
104 type = content::PERMISSION_NOTIFICATIONS; 153 type = content::PERMISSION_NOTIFICATIONS;
105 break; 154 break;
106 case CONTENT_SETTINGS_TYPE_MIDI_SYSEX: 155 case CONTENT_SETTINGS_TYPE_MIDI_SYSEX:
107 type = content::PERMISSION_MIDI_SYSEX; 156 type = content::PERMISSION_MIDI_SYSEX;
108 break; 157 break;
109 case CONTENT_SETTINGS_TYPE_PUSH_MESSAGING: 158 case CONTENT_SETTINGS_TYPE_PUSH_MESSAGING:
110 type = content::PERMISSION_PUSH_MESSAGING; 159 type = content::PERMISSION_PUSH_MESSAGING;
111 break; 160 break;
112 #if defined(OS_ANDROID) || defined(OS_CHROMEOS) 161 #if defined(OS_ANDROID) || defined(OS_CHROMEOS)
113 case CONTENT_SETTINGS_TYPE_PROTECTED_MEDIA_IDENTIFIER: 162 case CONTENT_SETTINGS_TYPE_PROTECTED_MEDIA_IDENTIFIER:
(...skipping 18 matching lines...) Expand all
132 content::PERMISSION_NUM); 181 content::PERMISSION_NUM);
133 } 182 }
134 } 183 }
135 184
136 } // namespace 185 } // namespace
137 186
138 // Make sure you update histograms.xml permission histogram_suffix if you 187 // Make sure you update histograms.xml permission histogram_suffix if you
139 // add new permission 188 // add new permission
140 void PermissionContextUmaUtil::PermissionRequested( 189 void PermissionContextUmaUtil::PermissionRequested(
141 ContentSettingsType permission, const GURL& requesting_origin) { 190 ContentSettingsType permission, const GURL& requesting_origin) {
142 RecordPermissionRequest(permission, requesting_origin.SchemeIsSecure()); 191 RecordPermissionRequest(permission, requesting_origin);
143 } 192 }
144 193
145 void PermissionContextUmaUtil::PermissionGranted( 194 void PermissionContextUmaUtil::PermissionGranted(
146 ContentSettingsType permission, const GURL& requesting_origin) { 195 ContentSettingsType permission, const GURL& requesting_origin) {
147 RecordPermissionAction(permission, GRANTED, 196 RecordPermissionAction(permission, GRANTED, requesting_origin);
148 requesting_origin.SchemeIsSecure());
149 } 197 }
150 198
151 void PermissionContextUmaUtil::PermissionDenied( 199 void PermissionContextUmaUtil::PermissionDenied(
152 ContentSettingsType permission, const GURL& requesting_origin) { 200 ContentSettingsType permission, const GURL& requesting_origin) {
153 RecordPermissionAction(permission, DENIED, 201 RecordPermissionAction(permission, DENIED, requesting_origin);
154 requesting_origin.SchemeIsSecure());
155 } 202 }
156 203
157 void PermissionContextUmaUtil::PermissionDismissed( 204 void PermissionContextUmaUtil::PermissionDismissed(
158 ContentSettingsType permission, const GURL& requesting_origin) { 205 ContentSettingsType permission, const GURL& requesting_origin) {
159 RecordPermissionAction(permission, DISMISSED, 206 RecordPermissionAction(permission, DISMISSED, requesting_origin);
160 requesting_origin.SchemeIsSecure());
161 } 207 }
162 208
163 void PermissionContextUmaUtil::PermissionIgnored( 209 void PermissionContextUmaUtil::PermissionIgnored(
164 ContentSettingsType permission, const GURL& requesting_origin) { 210 ContentSettingsType permission, const GURL& requesting_origin) {
165 RecordPermissionAction(permission, IGNORED, 211 RecordPermissionAction(permission, IGNORED, requesting_origin);
166 requesting_origin.SchemeIsSecure());
167 } 212 }
OLDNEW
« 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