OLD | NEW |
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 "chrome/browser/permissions/permission_uma_util.h" | 5 #include "chrome/browser/permissions/permission_uma_util.h" |
6 | 6 |
7 #include <utility> | 7 #include <utility> |
8 | 8 |
9 #include "base/command_line.h" | 9 #include "base/command_line.h" |
10 #include "base/metrics/histogram_macros.h" | 10 #include "base/metrics/histogram_macros.h" |
(...skipping 179 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
190 const GURL& requesting_origin, | 190 const GURL& requesting_origin, |
191 const GURL& embedding_origin, | 191 const GURL& embedding_origin, |
192 Profile* profile) { | 192 Profile* profile) { |
193 RecordPermissionRequest(permission, requesting_origin, embedding_origin, | 193 RecordPermissionRequest(permission, requesting_origin, embedding_origin, |
194 profile); | 194 profile); |
195 } | 195 } |
196 | 196 |
197 void PermissionUmaUtil::PermissionGranted(PermissionType permission, | 197 void PermissionUmaUtil::PermissionGranted(PermissionType permission, |
198 const GURL& requesting_origin, | 198 const GURL& requesting_origin, |
199 Profile* profile) { | 199 Profile* profile) { |
200 RecordPermissionAction(permission, GRANTED, requesting_origin, profile); | 200 RecordPermissionAction(permission, GRANTED, PermissionSourceUI::PROMPT, |
| 201 requesting_origin, profile); |
201 } | 202 } |
202 | 203 |
203 void PermissionUmaUtil::PermissionDenied(PermissionType permission, | 204 void PermissionUmaUtil::PermissionDenied(PermissionType permission, |
204 const GURL& requesting_origin, | 205 const GURL& requesting_origin, |
205 Profile* profile) { | 206 Profile* profile) { |
206 RecordPermissionAction(permission, DENIED, requesting_origin, profile); | 207 RecordPermissionAction(permission, DENIED, PermissionSourceUI::PROMPT, |
| 208 requesting_origin, profile); |
207 } | 209 } |
208 | 210 |
209 void PermissionUmaUtil::PermissionDismissed(PermissionType permission, | 211 void PermissionUmaUtil::PermissionDismissed(PermissionType permission, |
210 const GURL& requesting_origin, | 212 const GURL& requesting_origin, |
211 Profile* profile) { | 213 Profile* profile) { |
212 RecordPermissionAction(permission, DISMISSED, requesting_origin, profile); | 214 RecordPermissionAction(permission, DISMISSED, PermissionSourceUI::PROMPT, |
| 215 requesting_origin, profile); |
213 } | 216 } |
214 | 217 |
215 void PermissionUmaUtil::PermissionIgnored(PermissionType permission, | 218 void PermissionUmaUtil::PermissionIgnored(PermissionType permission, |
216 const GURL& requesting_origin, | 219 const GURL& requesting_origin, |
217 Profile* profile) { | 220 Profile* profile) { |
218 RecordPermissionAction(permission, IGNORED, requesting_origin, profile); | 221 RecordPermissionAction(permission, IGNORED, PermissionSourceUI::PROMPT, |
| 222 requesting_origin, profile); |
219 } | 223 } |
220 | 224 |
221 void PermissionUmaUtil::PermissionRevoked(PermissionType permission, | 225 void PermissionUmaUtil::PermissionRevoked(PermissionType permission, |
| 226 PermissionSourceUI source_ui, |
222 const GURL& revoked_origin, | 227 const GURL& revoked_origin, |
223 Profile* profile) { | 228 Profile* profile) { |
224 // TODO(tsergeant): Expand metrics definitions for revocation to include all | 229 // TODO(tsergeant): Expand metrics definitions for revocation to include all |
225 // permissions. | 230 // permissions. |
226 if (permission == PermissionType::NOTIFICATIONS || | 231 if (permission == PermissionType::NOTIFICATIONS || |
227 permission == PermissionType::GEOLOCATION || | 232 permission == PermissionType::GEOLOCATION || |
228 permission == PermissionType::AUDIO_CAPTURE || | 233 permission == PermissionType::AUDIO_CAPTURE || |
229 permission == PermissionType::VIDEO_CAPTURE) { | 234 permission == PermissionType::VIDEO_CAPTURE) { |
230 RecordPermissionAction(permission, REVOKED, revoked_origin, profile); | 235 RecordPermissionAction(permission, REVOKED, source_ui, revoked_origin, |
| 236 profile); |
231 } | 237 } |
232 } | 238 } |
233 | 239 |
234 void PermissionUmaUtil::PermissionPromptShown( | 240 void PermissionUmaUtil::PermissionPromptShown( |
235 const std::vector<PermissionRequest*>& requests) { | 241 const std::vector<PermissionRequest*>& requests) { |
236 DCHECK(!requests.empty()); | 242 DCHECK(!requests.empty()); |
237 | 243 |
238 PermissionRequestType permission_prompt_type = | 244 PermissionRequestType permission_prompt_type = |
239 PermissionRequestType::MULTIPLE; | 245 PermissionRequestType::MULTIPLE; |
240 if (requests.size() == 1) | 246 if (requests.size() == 1) |
(...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
323 if (!preferred_data_types.Has(syncer::PROXY_TABS)) | 329 if (!preferred_data_types.Has(syncer::PROXY_TABS)) |
324 return false; | 330 return false; |
325 if (!preferred_data_types.Has(syncer::PRIORITY_PREFERENCES)) | 331 if (!preferred_data_types.Has(syncer::PRIORITY_PREFERENCES)) |
326 return false; | 332 return false; |
327 | 333 |
328 return true; | 334 return true; |
329 } | 335 } |
330 | 336 |
331 void PermissionUmaUtil::RecordPermissionAction(PermissionType permission, | 337 void PermissionUmaUtil::RecordPermissionAction(PermissionType permission, |
332 PermissionAction action, | 338 PermissionAction action, |
| 339 PermissionSourceUI source_ui, |
333 const GURL& requesting_origin, | 340 const GURL& requesting_origin, |
334 Profile* profile) { | 341 Profile* profile) { |
335 if (IsOptedIntoPermissionActionReporting(profile)) { | 342 if (IsOptedIntoPermissionActionReporting(profile)) { |
336 // TODO(stefanocs): Add browsertests to make sure the reports are being | 343 // TODO(stefanocs): Add browsertests to make sure the reports are being |
337 // sent. | 344 // sent. |
338 g_browser_process->safe_browsing_service() | 345 g_browser_process->safe_browsing_service() |
339 ->ui_manager() | 346 ->ui_manager() |
340 ->ReportPermissionAction(requesting_origin, permission, action); | 347 ->ReportPermissionAction(requesting_origin, permission, action, |
| 348 source_ui); |
341 } | 349 } |
342 | 350 |
343 bool secure_origin = content::IsOriginSecure(requesting_origin); | 351 bool secure_origin = content::IsOriginSecure(requesting_origin); |
344 | 352 |
345 switch (permission) { | 353 switch (permission) { |
346 case PermissionType::GEOLOCATION: | 354 case PermissionType::GEOLOCATION: |
347 PERMISSION_ACTION_UMA(secure_origin, "Permissions.Action.Geolocation", | 355 PERMISSION_ACTION_UMA(secure_origin, "Permissions.Action.Geolocation", |
348 "Permissions.Action.SecureOrigin.Geolocation", | 356 "Permissions.Action.SecureOrigin.Geolocation", |
349 "Permissions.Action.InsecureOrigin.Geolocation", | 357 "Permissions.Action.InsecureOrigin.Geolocation", |
350 action); | 358 action); |
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
410 if (!deprecated_metric.empty() && rappor_service) { | 418 if (!deprecated_metric.empty() && rappor_service) { |
411 rappor::SampleDomainAndRegistryFromGURL(rappor_service, deprecated_metric, | 419 rappor::SampleDomainAndRegistryFromGURL(rappor_service, deprecated_metric, |
412 requesting_origin); | 420 requesting_origin); |
413 | 421 |
414 std::string rappor_metric = deprecated_metric + "2"; | 422 std::string rappor_metric = deprecated_metric + "2"; |
415 rappor_service->RecordSample( | 423 rappor_service->RecordSample( |
416 rappor_metric, rappor::LOW_FREQUENCY_ETLD_PLUS_ONE_RAPPOR_TYPE, | 424 rappor_metric, rappor::LOW_FREQUENCY_ETLD_PLUS_ONE_RAPPOR_TYPE, |
417 rappor::GetDomainAndRegistrySampleFromGURL(requesting_origin)); | 425 rappor::GetDomainAndRegistrySampleFromGURL(requesting_origin)); |
418 } | 426 } |
419 } | 427 } |
OLD | NEW |