| 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/metrics/histogram_macros.h" | 9 #include "base/metrics/histogram_macros.h" |
| 10 #include "base/strings/stringprintf.h" | 10 #include "base/strings/stringprintf.h" |
| (...skipping 264 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 275 permission == PermissionType::GEOLOCATION || | 275 permission == PermissionType::GEOLOCATION || |
| 276 permission == PermissionType::AUDIO_CAPTURE || | 276 permission == PermissionType::AUDIO_CAPTURE || |
| 277 permission == PermissionType::VIDEO_CAPTURE) { | 277 permission == PermissionType::VIDEO_CAPTURE) { |
| 278 RecordPermissionAction(permission, REVOKED, revoked_origin); | 278 RecordPermissionAction(permission, REVOKED, revoked_origin); |
| 279 } | 279 } |
| 280 } | 280 } |
| 281 | 281 |
| 282 void PermissionUmaUtil::PermissionPromptShown( | 282 void PermissionUmaUtil::PermissionPromptShown( |
| 283 const std::vector<PermissionBubbleRequest*>& requests) { | 283 const std::vector<PermissionBubbleRequest*>& requests) { |
| 284 DCHECK(!requests.empty()); | 284 DCHECK(!requests.empty()); |
| 285 |
| 285 PermissionBubbleType permission_prompt_type = PermissionBubbleType::MULTIPLE; | 286 PermissionBubbleType permission_prompt_type = PermissionBubbleType::MULTIPLE; |
| 286 if (requests.size() == 1) | 287 if (requests.size() == 1) |
| 287 permission_prompt_type = requests[0]->GetPermissionBubbleType(); | 288 permission_prompt_type = requests[0]->GetPermissionBubbleType(); |
| 288 UMA_HISTOGRAM_ENUMERATION( | 289 UMA_HISTOGRAM_ENUMERATION( |
| 289 "Permissions.Prompt.Shown", | 290 "Permissions.Prompt.Shown", |
| 290 static_cast<base::HistogramBase::Sample>(permission_prompt_type), | 291 static_cast<base::HistogramBase::Sample>(permission_prompt_type), |
| 291 static_cast<base::HistogramBase::Sample>(PermissionBubbleType::NUM)); | 292 static_cast<base::HistogramBase::Sample>(PermissionBubbleType::NUM)); |
| 292 | 293 |
| 293 UMA_HISTOGRAM_ENUMERATION( | 294 UMA_HISTOGRAM_ENUMERATION( |
| 294 "Permissions.Prompt.RequestsPerPrompt", | 295 "Permissions.Prompt.RequestsPerPrompt", |
| 295 static_cast<base::HistogramBase::Sample>(requests.size()), | 296 static_cast<base::HistogramBase::Sample>(requests.size()), |
| 296 static_cast<base::HistogramBase::Sample>(10)); | 297 static_cast<base::HistogramBase::Sample>(10)); |
| 297 | 298 |
| 298 if (requests.size() > 1) { | 299 if (requests.size() > 1) { |
| 299 for (const auto* request : requests) { | 300 for (const auto* request : requests) { |
| 300 UMA_HISTOGRAM_ENUMERATION( | 301 UMA_HISTOGRAM_ENUMERATION( |
| 301 "Permissions.Prompt.MergedBubbleTypes", | 302 "Permissions.Prompt.MergedBubbleTypes", |
| 302 static_cast<base::HistogramBase::Sample>( | 303 static_cast<base::HistogramBase::Sample>( |
| 303 request->GetPermissionBubbleType()), | 304 request->GetPermissionBubbleType()), |
| 304 static_cast<base::HistogramBase::Sample>(PermissionBubbleType::NUM)); | 305 static_cast<base::HistogramBase::Sample>(PermissionBubbleType::NUM)); |
| 305 } | 306 } |
| 306 } | 307 } |
| 307 } | 308 } |
| 309 |
| 310 void PermissionUmaUtil::PermissionPromptAccepted( |
| 311 const std::vector<PermissionBubbleRequest*>& requests, |
| 312 const std::vector<bool>& accept_states) { |
| 313 DCHECK(!requests.empty()); |
| 314 DCHECK(requests.size() == accept_states.size()); |
| 315 |
| 316 bool all_accepted = true; |
| 317 PermissionBubbleType permission_prompt_type = |
| 318 requests[0]->GetPermissionBubbleType(); |
| 319 if (requests.size() > 1) { |
| 320 permission_prompt_type = PermissionBubbleType::MULTIPLE; |
| 321 for (size_t i = 0; i < requests.size(); ++i) { |
| 322 const auto* request = requests[i]; |
| 323 std::string metric_name = "Permissions.Prompt.MergedBubbleAccepted"; |
| 324 if (!accept_states[i]) { |
| 325 all_accepted = false; |
| 326 metric_name = "Permissions.Prompt.MergedBubbleDenied"; |
| 327 } |
| 328 |
| 329 UMA_HISTOGRAM_ENUMERATION( |
| 330 metric_name, |
| 331 static_cast<base::HistogramBase::Sample>( |
| 332 request->GetPermissionBubbleType()), |
| 333 static_cast<base::HistogramBase::Sample>(PermissionBubbleType::NUM)); |
| 334 } |
| 335 } |
| 336 |
| 337 std::string metric_name = all_accepted ? "Permissions.Prompt.Accepted" |
| 338 : "Permissions.Prompt.Denied"; |
| 339 UMA_HISTOGRAM_ENUMERATION( |
| 340 metric_name, |
| 341 static_cast<base::HistogramBase::Sample>(permission_prompt_type), |
| 342 static_cast<base::HistogramBase::Sample>(PermissionBubbleType::NUM)); |
| 343 } |
| 344 |
| 345 void PermissionUmaUtil::PermissionPromptDenied( |
| 346 const std::vector<PermissionBubbleRequest*>& requests) { |
| 347 DCHECK(!requests.empty()); |
| 348 DCHECK(requests.size() == 1); |
| 349 |
| 350 PermissionBubbleType permission_prompt_type = |
| 351 requests[0]->GetPermissionBubbleType(); |
| 352 UMA_HISTOGRAM_ENUMERATION( |
| 353 "Permissions.Prompt.Denied", |
| 354 static_cast<base::HistogramBase::Sample>(permission_prompt_type), |
| 355 static_cast<base::HistogramBase::Sample>(PermissionBubbleType::NUM)); |
| 356 } |
| OLD | NEW |