| 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 372 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 383 | 383 |
| 384 if (requests.size() > 1) { | 384 if (requests.size() > 1) { |
| 385 for (const auto* request : requests) { | 385 for (const auto* request : requests) { |
| 386 PERMISSION_BUBBLE_TYPE_UMA(kPermissionsPromptMergedBubbleTypes, | 386 PERMISSION_BUBBLE_TYPE_UMA(kPermissionsPromptMergedBubbleTypes, |
| 387 request->GetPermissionRequestType()); | 387 request->GetPermissionRequestType()); |
| 388 } | 388 } |
| 389 } | 389 } |
| 390 } | 390 } |
| 391 | 391 |
| 392 void PermissionUmaUtil::PermissionPromptAccepted( | 392 void PermissionUmaUtil::PermissionPromptAccepted( |
| 393 const std::vector<PermissionRequest*>& requests, | 393 const std::vector<PermissionRequest*>& requests) { |
| 394 const std::vector<bool>& accept_states) { | 394 RecordPromptDecided(requests, /*accepted=*/true); |
| 395 DCHECK(!requests.empty()); | |
| 396 DCHECK(requests.size() == accept_states.size()); | |
| 397 | |
| 398 bool all_accepted = accept_states[0]; | |
| 399 PermissionRequestType permission_prompt_type = | |
| 400 requests[0]->GetPermissionRequestType(); | |
| 401 PermissionRequestGestureType permission_gesture_type = | |
| 402 requests[0]->GetGestureType(); | |
| 403 if (requests.size() > 1) { | |
| 404 permission_prompt_type = PermissionRequestType::MULTIPLE; | |
| 405 permission_gesture_type = PermissionRequestGestureType::UNKNOWN; | |
| 406 for (size_t i = 0; i < requests.size(); ++i) { | |
| 407 const auto* request = requests[i]; | |
| 408 if (accept_states[i]) { | |
| 409 PERMISSION_BUBBLE_TYPE_UMA(kPermissionsPromptMergedBubbleAccepted, | |
| 410 request->GetPermissionRequestType()); | |
| 411 } else { | |
| 412 all_accepted = false; | |
| 413 PERMISSION_BUBBLE_TYPE_UMA(kPermissionsPromptMergedBubbleDenied, | |
| 414 request->GetPermissionRequestType()); | |
| 415 } | |
| 416 } | |
| 417 } | |
| 418 | |
| 419 if (all_accepted) { | |
| 420 RecordPermissionPromptAccepted(permission_prompt_type, | |
| 421 permission_gesture_type); | |
| 422 } else { | |
| 423 RecordPermissionPromptDenied(permission_prompt_type, | |
| 424 permission_gesture_type); | |
| 425 } | |
| 426 } | 395 } |
| 427 | 396 |
| 428 void PermissionUmaUtil::PermissionPromptDenied( | 397 void PermissionUmaUtil::PermissionPromptDenied( |
| 429 const std::vector<PermissionRequest*>& requests) { | 398 const std::vector<PermissionRequest*>& requests) { |
| 430 DCHECK(!requests.empty()); | 399 RecordPromptDecided(requests, /*accepted=*/false); |
| 431 DCHECK(requests.size() == 1); | |
| 432 | |
| 433 RecordPermissionPromptDenied(requests[0]->GetPermissionRequestType(), | |
| 434 requests[0]->GetGestureType()); | |
| 435 } | 400 } |
| 436 | 401 |
| 437 void PermissionUmaUtil::RecordPermissionPromptShown( | 402 void PermissionUmaUtil::RecordPermissionPromptShown( |
| 438 PermissionRequestType request_type, | 403 PermissionRequestType request_type, |
| 439 PermissionRequestGestureType gesture_type) { | 404 PermissionRequestGestureType gesture_type) { |
| 440 PERMISSION_BUBBLE_TYPE_UMA(kPermissionsPromptShown, request_type); | 405 PERMISSION_BUBBLE_TYPE_UMA(kPermissionsPromptShown, request_type); |
| 441 PERMISSION_BUBBLE_GESTURE_TYPE_UMA( | 406 PERMISSION_BUBBLE_GESTURE_TYPE_UMA( |
| 442 kPermissionsPromptShownGesture, kPermissionsPromptShownNoGesture, | 407 kPermissionsPromptShownGesture, kPermissionsPromptShownNoGesture, |
| 443 gesture_type, request_type); | 408 gesture_type, request_type); |
| 444 } | 409 } |
| (...skipping 262 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 707 | 672 |
| 708 const std::string rappor_metric = GetRapporMetric(permission, action); | 673 const std::string rappor_metric = GetRapporMetric(permission, action); |
| 709 rappor::RapporServiceImpl* rappor_service = | 674 rappor::RapporServiceImpl* rappor_service = |
| 710 g_browser_process->rappor_service(); | 675 g_browser_process->rappor_service(); |
| 711 if (!rappor_metric.empty() && rappor_service) { | 676 if (!rappor_metric.empty() && rappor_service) { |
| 712 rappor_service->RecordSampleString( | 677 rappor_service->RecordSampleString( |
| 713 rappor_metric, rappor::LOW_FREQUENCY_ETLD_PLUS_ONE_RAPPOR_TYPE, | 678 rappor_metric, rappor::LOW_FREQUENCY_ETLD_PLUS_ONE_RAPPOR_TYPE, |
| 714 rappor::GetDomainAndRegistrySampleFromGURL(requesting_origin)); | 679 rappor::GetDomainAndRegistrySampleFromGURL(requesting_origin)); |
| 715 } | 680 } |
| 716 } | 681 } |
| 682 |
| 683 // static |
| 684 void PermissionUmaUtil::RecordPromptDecided( |
| 685 const std::vector<PermissionRequest*>& requests, |
| 686 bool accepted) { |
| 687 DCHECK(!requests.empty()); |
| 688 |
| 689 PermissionRequestType permission_prompt_type = |
| 690 requests[0]->GetPermissionRequestType(); |
| 691 PermissionRequestGestureType permission_gesture_type = |
| 692 requests[0]->GetGestureType(); |
| 693 if (requests.size() > 1) { |
| 694 permission_prompt_type = PermissionRequestType::MULTIPLE; |
| 695 permission_gesture_type = PermissionRequestGestureType::UNKNOWN; |
| 696 for (size_t i = 0; i < requests.size(); ++i) { |
| 697 const auto* request = requests[i]; |
| 698 if (accepted) { |
| 699 PERMISSION_BUBBLE_TYPE_UMA(kPermissionsPromptMergedBubbleAccepted, |
| 700 request->GetPermissionRequestType()); |
| 701 } else { |
| 702 PERMISSION_BUBBLE_TYPE_UMA(kPermissionsPromptMergedBubbleDenied, |
| 703 request->GetPermissionRequestType()); |
| 704 } |
| 705 } |
| 706 } |
| 707 |
| 708 if (accepted) { |
| 709 RecordPermissionPromptAccepted(permission_prompt_type, |
| 710 permission_gesture_type); |
| 711 } else { |
| 712 RecordPermissionPromptDenied(permission_prompt_type, |
| 713 permission_gesture_type); |
| 714 } |
| 715 } |
| OLD | NEW |