Chromium Code Reviews| Index: chrome/browser/media/media_stream_devices_controller.cc |
| diff --git a/chrome/browser/media/media_stream_devices_controller.cc b/chrome/browser/media/media_stream_devices_controller.cc |
| index 34ff83368a5722d46f510a75d4ae6547113eed0a..cbed7264aaef5f384f35939d8d74e1ab57be0abb 100644 |
| --- a/chrome/browser/media/media_stream_devices_controller.cc |
| +++ b/chrome/browser/media/media_stream_devices_controller.cc |
| @@ -16,6 +16,7 @@ |
| #include "chrome/browser/media/media_permission.h" |
| #include "chrome/browser/media/media_stream_capture_indicator.h" |
| #include "chrome/browser/media/media_stream_device_permissions.h" |
| +#include "chrome/browser/permissions/permission_context_uma_util.h" |
| #include "chrome/browser/profiles/profile.h" |
| #include "chrome/browser/ui/browser.h" |
| #include "chrome/common/chrome_switches.h" |
| @@ -45,14 +46,6 @@ using content::BrowserThread; |
| namespace { |
| -enum DevicePermissionActions { |
| - kAllowHttps = 0, |
| - kAllowHttp, |
| - kDeny, |
| - kCancel, |
| - kPermissionActionsMax // Must always be last! |
| -}; |
| - |
| // Returns true if the given ContentSettingsType is being requested in |
| // |request|. |
| bool ContentTypeIsRequested(ContentSettingsType type, |
| @@ -69,6 +62,23 @@ bool ContentTypeIsRequested(ContentSettingsType type, |
| return false; |
| } |
| +using PermissionActionCallback = |
| + base::Callback<void(ContentSettingsType, const GURL&)>; |
| + |
| +// Calls |action_function| for each permission requested by |request|. |
| +void RecordPermissionAction(const content::MediaStreamRequest& request, |
| + PermissionActionCallback callback) { |
| + if (ContentTypeIsRequested(CONTENT_SETTINGS_TYPE_MEDIASTREAM_CAMERA, |
| + request)) { |
| + callback.Run(CONTENT_SETTINGS_TYPE_MEDIASTREAM_CAMERA, |
| + request.security_origin); |
| + } |
| + if (ContentTypeIsRequested(CONTENT_SETTINGS_TYPE_MEDIASTREAM_MIC, request)) { |
| + callback.Run(CONTENT_SETTINGS_TYPE_MEDIASTREAM_MIC, |
| + request.security_origin); |
| + } |
| +} |
| + |
| } // namespace |
| MediaStreamDevicesController::MediaStreamDevicesController( |
| @@ -124,6 +134,8 @@ MediaStreamDevicesController::MediaStreamDevicesController( |
| MediaStreamDevicesController::~MediaStreamDevicesController() { |
| if (!callback_.is_null()) { |
| + RecordPermissionAction( |
| + request_, base::Bind(PermissionContextUmaUtil::PermissionIgnored)); |
| callback_.Run(content::MediaStreamDevices(), |
| content::MEDIA_DEVICE_FAILED_DUE_TO_SHUTDOWN, |
| scoped_ptr<content::MediaStreamUI>()); |
| @@ -162,8 +174,8 @@ const std::string& MediaStreamDevicesController::GetSecurityOriginSpec() const { |
| void MediaStreamDevicesController::ForcePermissionDeniedTemporarily() { |
| base::AutoReset<bool> persist_permissions( |
| &persist_permission_changes_, false); |
| - UMA_HISTOGRAM_ENUMERATION("Media.DevicePermissionActions", |
| - kDeny, kPermissionActionsMax); |
| + RecordPermissionAction( |
|
kcarattini
2015/11/03 04:19:30
Is this actually a user decision or is it forced b
tsergeant
2015/11/05 02:34:42
It appears to be to do with Android Permissions no
tsergeant
2015/11/10 00:32:42
As discussed, I've replaced this with a TODO while
|
| + request_, base::Bind(PermissionContextUmaUtil::PermissionDenied)); |
| RunCallback(CONTENT_SETTING_BLOCK, |
| CONTENT_SETTING_BLOCK, |
| content::MEDIA_DEVICE_PERMISSION_DENIED); |
| @@ -204,14 +216,8 @@ GURL MediaStreamDevicesController::GetRequestingHostname() const { |
| } |
| void MediaStreamDevicesController::PermissionGranted() { |
| - GURL origin(GetSecurityOriginSpec()); |
| - if (content::IsOriginSecure(origin)) { |
| - UMA_HISTOGRAM_ENUMERATION("Media.DevicePermissionActions", |
| - kAllowHttps, kPermissionActionsMax); |
| - } else { |
| - UMA_HISTOGRAM_ENUMERATION("Media.DevicePermissionActions", |
| - kAllowHttp, kPermissionActionsMax); |
| - } |
| + RecordPermissionAction( |
| + request_, base::Bind(PermissionContextUmaUtil::PermissionGranted)); |
| RunCallback(GetNewSetting(CONTENT_SETTINGS_TYPE_MEDIASTREAM_MIC, |
| old_audio_setting_, CONTENT_SETTING_ALLOW), |
| GetNewSetting(CONTENT_SETTINGS_TYPE_MEDIASTREAM_CAMERA, |
| @@ -220,8 +226,8 @@ void MediaStreamDevicesController::PermissionGranted() { |
| } |
| void MediaStreamDevicesController::PermissionDenied() { |
| - UMA_HISTOGRAM_ENUMERATION("Media.DevicePermissionActions", |
| - kDeny, kPermissionActionsMax); |
| + RecordPermissionAction( |
| + request_, base::Bind(PermissionContextUmaUtil::PermissionDenied)); |
| RunCallback(GetNewSetting(CONTENT_SETTINGS_TYPE_MEDIASTREAM_MIC, |
| old_audio_setting_, CONTENT_SETTING_BLOCK), |
| GetNewSetting(CONTENT_SETTINGS_TYPE_MEDIASTREAM_CAMERA, |
| @@ -230,8 +236,8 @@ void MediaStreamDevicesController::PermissionDenied() { |
| } |
| void MediaStreamDevicesController::Cancelled() { |
| - UMA_HISTOGRAM_ENUMERATION("Media.DevicePermissionActions", |
| - kCancel, kPermissionActionsMax); |
| + RecordPermissionAction( |
| + request_, base::Bind(PermissionContextUmaUtil::PermissionDismissed)); |
| RunCallback(old_audio_setting_, old_video_setting_, |
| content::MEDIA_DEVICE_PERMISSION_DISMISSED); |
| } |