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

Unified Diff: chrome/browser/media/media_stream_devices_controller.cc

Issue 1401073002: Add Rappor reporting for grant/deny/cancel/ignore of Mediastream permissions (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Replace unusual case with todo Created 5 years, 1 month 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | chrome/browser/permissions/permission_uma_util.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 d6a122ebdc46446f0052c446e594139068da9668..9dc47941853832eed7ab81e1a0ef3dc039dda302 100644
--- a/chrome/browser/media/media_stream_devices_controller.cc
+++ b/chrome/browser/media/media_stream_devices_controller.cc
@@ -17,6 +17,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_uma_util.h"
#include "chrome/browser/profiles/profile.h"
#include "chrome/browser/ui/browser.h"
#include "chrome/common/chrome_switches.h"
@@ -48,14 +49,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,
@@ -72,6 +65,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);
+ }
+}
+
// This helper class helps to measure the number of media stream requests that
// occur. It ensures that only one request will be recorded per navigation, per
// frame. TODO(raymes): Remove this when https://crbug.com/526324 is fixed.
@@ -186,6 +196,8 @@ MediaStreamDevicesController::MediaStreamDevicesController(
MediaStreamDevicesController::~MediaStreamDevicesController() {
if (!callback_.is_null()) {
+ RecordPermissionAction(
+ request_, base::Bind(PermissionUmaUtil::PermissionIgnored));
callback_.Run(content::MediaStreamDevices(),
content::MEDIA_DEVICE_FAILED_DUE_TO_SHUTDOWN,
scoped_ptr<content::MediaStreamUI>());
@@ -224,8 +236,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);
+ // TODO(tsergeant): Determine whether it is appropriate to record permission
+ // action metrics here, as this is a different sort of user action.
RunCallback(CONTENT_SETTING_BLOCK,
CONTENT_SETTING_BLOCK,
content::MEDIA_DEVICE_PERMISSION_DENIED);
@@ -266,14 +278,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(PermissionUmaUtil::PermissionGranted));
RunCallback(GetNewSetting(CONTENT_SETTINGS_TYPE_MEDIASTREAM_MIC,
old_audio_setting_, CONTENT_SETTING_ALLOW),
GetNewSetting(CONTENT_SETTINGS_TYPE_MEDIASTREAM_CAMERA,
@@ -282,8 +288,8 @@ void MediaStreamDevicesController::PermissionGranted() {
}
void MediaStreamDevicesController::PermissionDenied() {
- UMA_HISTOGRAM_ENUMERATION("Media.DevicePermissionActions",
- kDeny, kPermissionActionsMax);
+ RecordPermissionAction(
+ request_, base::Bind(PermissionUmaUtil::PermissionDenied));
RunCallback(GetNewSetting(CONTENT_SETTINGS_TYPE_MEDIASTREAM_MIC,
old_audio_setting_, CONTENT_SETTING_BLOCK),
GetNewSetting(CONTENT_SETTINGS_TYPE_MEDIASTREAM_CAMERA,
@@ -292,8 +298,8 @@ void MediaStreamDevicesController::PermissionDenied() {
}
void MediaStreamDevicesController::Cancelled() {
- UMA_HISTOGRAM_ENUMERATION("Media.DevicePermissionActions",
- kCancel, kPermissionActionsMax);
+ RecordPermissionAction(
+ request_, base::Bind(PermissionUmaUtil::PermissionDismissed));
RunCallback(old_audio_setting_, old_video_setting_,
content::MEDIA_DEVICE_PERMISSION_DISMISSED);
}
« no previous file with comments | « no previous file | chrome/browser/permissions/permission_uma_util.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698