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

Side by Side Diff: chrome/browser/content_settings/permission_context_uma_util.cc

Issue 1197853005: Collecting statistics on iframe permissions use. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Made suggested fixes and changed logging details. Created 5 years, 5 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
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_macros.h" 5 #include "base/metrics/histogram_macros.h"
6 #include "base/strings/stringprintf.h" 6 #include "base/strings/stringprintf.h"
7 #include "chrome/browser/browser_process.h" 7 #include "chrome/browser/browser_process.h"
8 #include "chrome/browser/content_settings/permission_context_uma_util.h" 8 #include "chrome/browser/content_settings/permission_context_uma_util.h"
9 #include "components/rappor/rappor_utils.h" 9 #include "components/rappor/rappor_utils.h"
10 #include "content/public/browser/permission_type.h" 10 #include "content/public/browser/permission_type.h"
(...skipping 121 matching lines...) Expand 10 before | Expand all | Expand 10 after
132 NOTREACHED() << "PERMISSION " << permission << " not accounted for"; 132 NOTREACHED() << "PERMISSION " << permission << " not accounted for";
133 } 133 }
134 134
135 const std::string& rappor_metric = GetRapporMetric(permission, action); 135 const std::string& rappor_metric = GetRapporMetric(permission, action);
136 if (!rappor_metric.empty()) 136 if (!rappor_metric.empty())
137 rappor::SampleDomainAndRegistryFromGURL( 137 rappor::SampleDomainAndRegistryFromGURL(
138 g_browser_process->rappor_service(), rappor_metric, 138 g_browser_process->rappor_service(), rappor_metric,
139 requesting_origin); 139 requesting_origin);
140 } 140 }
141 141
142 std::string PermissionTypeToString(PermissionType permission_type) {
143 switch (permission_type) {
144 case PermissionType::MIDI_SYSEX:
145 return "MidiSysex";
146 case PermissionType::PUSH_MESSAGING:
147 return "PushMessaging";
148 case PermissionType::NOTIFICATIONS:
149 return "Notifications";
150 case PermissionType::GEOLOCATION:
151 return "Geolocation";
152 case PermissionType::PROTECTED_MEDIA_IDENTIFIER:
153 return "ProtectedMediaIdentifier";
154 case PermissionType::NUM:
155 return "?";
mlamouri (slow - plz ping) 2015/06/29 14:23:07 NOT_REACHED(); And after the switch() |return "";
keenanb 2015/06/29 19:09:00 Done.
156 }
157 }
158
142 void RecordPermissionRequest(ContentSettingsType permission, 159 void RecordPermissionRequest(ContentSettingsType permission,
143 const GURL& requesting_origin) { 160 HostContentSettingsMap* host_content_settings_map,
161 const GURL& requesting_origin,
162 const GURL& embedding_origin) {
144 bool secure_origin = content::IsOriginSecure(requesting_origin); 163 bool secure_origin = content::IsOriginSecure(requesting_origin);
145 PermissionType type; 164 PermissionType type;
146 switch (permission) { 165 switch (permission) {
147 case CONTENT_SETTINGS_TYPE_GEOLOCATION: 166 case CONTENT_SETTINGS_TYPE_GEOLOCATION:
148 type = PermissionType::GEOLOCATION; 167 type = PermissionType::GEOLOCATION;
149 rappor::SampleDomainAndRegistryFromGURL( 168 rappor::SampleDomainAndRegistryFromGURL(
150 g_browser_process->rappor_service(), 169 g_browser_process->rappor_service(),
151 "ContentSettings.PermissionRequested.Geolocation.Url", 170 "ContentSettings.PermissionRequested.Geolocation.Url",
152 requesting_origin); 171 requesting_origin);
153 break; 172 break;
(...skipping 27 matching lines...) Expand all
181 UMA_HISTOGRAM_ENUMERATION( 200 UMA_HISTOGRAM_ENUMERATION(
182 "ContentSettings.PermissionRequested_SecureOrigin", 201 "ContentSettings.PermissionRequested_SecureOrigin",
183 static_cast<base::HistogramBase::Sample>(type), 202 static_cast<base::HistogramBase::Sample>(type),
184 static_cast<base::HistogramBase::Sample>(PermissionType::NUM)); 203 static_cast<base::HistogramBase::Sample>(PermissionType::NUM));
185 } else { 204 } else {
186 UMA_HISTOGRAM_ENUMERATION( 205 UMA_HISTOGRAM_ENUMERATION(
187 "ContentSettings.PermissionRequested_InsecureOrigin", 206 "ContentSettings.PermissionRequested_InsecureOrigin",
188 static_cast<base::HistogramBase::Sample>(type), 207 static_cast<base::HistogramBase::Sample>(type),
189 static_cast<base::HistogramBase::Sample>(PermissionType::NUM)); 208 static_cast<base::HistogramBase::Sample>(PermissionType::NUM));
190 } 209 }
210
211 // TODO(keenanb): It may not be worth worrying about,
212 // but statistics would get skewed if, for example,
213 // before the user has made a permission decision,
214 // getCurrentPosition gets called ten times each second
215 // and generates ten permission requests each second.
216 // That may be a job for RAPPOR.
217
218 DCHECK(requesting_origin.GetOrigin() == requesting_origin);
219 DCHECK(embedding_origin.GetOrigin() == embedding_origin);
220 bool off_origin_iframe = (requesting_origin != embedding_origin);
221
222 if (off_origin_iframe) {
223 ContentSetting embedding_content_setting =
224 host_content_settings_map->GetContentSetting(
225 embedding_origin, embedding_origin, permission, std::string());
226
227 UMA_HISTOGRAM_ENUMERATION("ContentSettings.PermissionRequested.OffOrigin_" +
228 PermissionTypeToString(type),
229 embedding_content_setting,
230 CONTENT_SETTING_NUM_SETTINGS);
231 } else {
232 UMA_HISTOGRAM_ENUMERATION(
233 "ContentSettings.PermissionRequested.OnOrigin",
234 static_cast<base::HistogramBase::Sample>(type),
235 static_cast<base::HistogramBase::Sample>(PermissionType::NUM));
mlamouri (slow - plz ping) 2015/06/29 14:23:07 Out of curiosity, why do we want to count these?
keenanb 2015/06/29 19:09:00 to know the ratio. maybe we don't want it though.
236 }
191 } 237 }
192 238
193 } // namespace 239 } // namespace
194 240
195 // Make sure you update histograms.xml permission histogram_suffix if you 241 // Make sure you update histograms.xml permission histogram_suffix if you
196 // add new permission 242 // add new permission
197 void PermissionContextUmaUtil::PermissionRequested( 243 void PermissionContextUmaUtil::PermissionRequested(
198 ContentSettingsType permission, const GURL& requesting_origin) { 244 ContentSettingsType permission,
199 RecordPermissionRequest(permission, requesting_origin); 245 HostContentSettingsMap* host_content_settings_map,
246 const GURL& requesting_origin,
247 const GURL& embedding_origin) {
248 RecordPermissionRequest(permission, host_content_settings_map,
249 requesting_origin, embedding_origin);
200 } 250 }
201 251
202 void PermissionContextUmaUtil::PermissionGranted( 252 void PermissionContextUmaUtil::PermissionGranted(
203 ContentSettingsType permission, const GURL& requesting_origin) { 253 ContentSettingsType permission, const GURL& requesting_origin) {
204 RecordPermissionAction(permission, GRANTED, requesting_origin); 254 RecordPermissionAction(permission, GRANTED, requesting_origin);
205 } 255 }
206 256
207 void PermissionContextUmaUtil::PermissionDenied( 257 void PermissionContextUmaUtil::PermissionDenied(
208 ContentSettingsType permission, const GURL& requesting_origin) { 258 ContentSettingsType permission, const GURL& requesting_origin) {
209 RecordPermissionAction(permission, DENIED, requesting_origin); 259 RecordPermissionAction(permission, DENIED, requesting_origin);
210 } 260 }
211 261
212 void PermissionContextUmaUtil::PermissionDismissed( 262 void PermissionContextUmaUtil::PermissionDismissed(
213 ContentSettingsType permission, const GURL& requesting_origin) { 263 ContentSettingsType permission, const GURL& requesting_origin) {
214 RecordPermissionAction(permission, DISMISSED, requesting_origin); 264 RecordPermissionAction(permission, DISMISSED, requesting_origin);
215 } 265 }
216 266
217 void PermissionContextUmaUtil::PermissionIgnored( 267 void PermissionContextUmaUtil::PermissionIgnored(
218 ContentSettingsType permission, const GURL& requesting_origin) { 268 ContentSettingsType permission, const GURL& requesting_origin) {
219 RecordPermissionAction(permission, IGNORED, requesting_origin); 269 RecordPermissionAction(permission, IGNORED, requesting_origin);
220 } 270 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698