Index: chrome/browser/permissions/permission_context_base.cc |
diff --git a/chrome/browser/permissions/permission_context_base.cc b/chrome/browser/permissions/permission_context_base.cc |
index f0fc52cbb09308d88950e6bfdf851895201c2cd0..206b383cf8eae25ac9ff1020eb7cd1b2c8674f1b 100644 |
--- a/chrome/browser/permissions/permission_context_base.cc |
+++ b/chrome/browser/permissions/permission_context_base.cc |
@@ -11,6 +11,7 @@ |
#include "base/strings/stringprintf.h" |
#include "build/build_config.h" |
#include "chrome/browser/content_settings/host_content_settings_map_factory.h" |
+#include "chrome/browser/permissions/permission_request.h" |
#include "chrome/browser/permissions/permission_request_id.h" |
#include "chrome/browser/permissions/permission_uma_util.h" |
#include "chrome/browser/permissions/permission_util.h" |
@@ -177,12 +178,12 @@ void PermissionContextBase::DecidePermission( |
if (!permission_request_manager) |
return; |
std::unique_ptr<PermissionRequest> request_ptr(new PermissionRequestImpl( |
- requesting_origin, permission_type_, profile_, user_gesture, |
- base::Bind(&PermissionContextBase::PermissionDecided, |
- weak_factory_.GetWeakPtr(), id, requesting_origin, |
- embedding_origin, callback), |
- base::Bind(&PermissionContextBase::CleanUpRequest, |
- weak_factory_.GetWeakPtr(), id))); |
+ requesting_origin, permission_type_, profile_, user_gesture, |
+ base::Bind(&PermissionContextBase::PermissionDecided, |
+ weak_factory_.GetWeakPtr(), id, requesting_origin, |
+ embedding_origin, user_gesture, callback), |
+ base::Bind(&PermissionContextBase::CleanUpRequest, |
+ weak_factory_.GetWeakPtr(), id))); |
PermissionRequest* request = request_ptr.get(); |
bool inserted = |
@@ -190,11 +191,13 @@ void PermissionContextBase::DecidePermission( |
DCHECK(inserted) << "Duplicate id " << id.ToString(); |
permission_request_manager->AddRequest(request); |
#else |
+ // TODO(stefanocs): Pass |user_gesture| to CreateInfoBarRequest to record |
+ // permission actions in infobar. |
GetQueueController()->CreateInfoBarRequest( |
id, requesting_origin, embedding_origin, |
base::Bind(&PermissionContextBase::PermissionDecided, |
weak_factory_.GetWeakPtr(), id, requesting_origin, |
- embedding_origin, callback, |
+ embedding_origin, user_gesture, callback, |
// the queue controller takes care of persisting the |
// permission |
false)); |
@@ -205,25 +208,30 @@ void PermissionContextBase::PermissionDecided( |
const PermissionRequestID& id, |
const GURL& requesting_origin, |
const GURL& embedding_origin, |
+ bool user_gesture, |
const BrowserPermissionCallback& callback, |
bool persist, |
ContentSetting content_setting) { |
#if !defined(OS_ANDROID) |
// Infobar persistence and its related UMA is tracked on the infobar |
// controller directly. |
+ PermissionRequestGestureType gesture_type = |
+ user_gesture ? PermissionRequestGestureType::GESTURE |
+ : PermissionRequestGestureType::NO_GESTURE; |
if (persist) { |
DCHECK(content_setting == CONTENT_SETTING_ALLOW || |
content_setting == CONTENT_SETTING_BLOCK); |
- if (content_setting == CONTENT_SETTING_ALLOW) |
- PermissionUmaUtil::PermissionGranted(permission_type_, requesting_origin, |
- profile_); |
- else |
- PermissionUmaUtil::PermissionDenied(permission_type_, requesting_origin, |
- profile_); |
+ if (content_setting == CONTENT_SETTING_ALLOW) { |
+ PermissionUmaUtil::PermissionGranted(permission_type_, gesture_type, |
+ requesting_origin, profile_); |
+ } else { |
+ PermissionUmaUtil::PermissionDenied(permission_type_, gesture_type, |
+ requesting_origin, profile_); |
+ } |
} else { |
DCHECK_EQ(content_setting, CONTENT_SETTING_DEFAULT); |
- PermissionUmaUtil::PermissionDismissed(permission_type_, requesting_origin, |
- profile_); |
+ PermissionUmaUtil::PermissionDismissed(permission_type_, gesture_type, |
+ requesting_origin, profile_); |
} |
#endif |