| Index: chrome/browser/content_settings/permission_context_base.cc
|
| diff --git a/chrome/browser/content_settings/permission_context_base.cc b/chrome/browser/content_settings/permission_context_base.cc
|
| index 05504c5bed8cdf34c4c32442e50c0fe077303bca..ca212baed8d333f7050bf9dcd9c0be77a0569207 100644
|
| --- a/chrome/browser/content_settings/permission_context_base.cc
|
| +++ b/chrome/browser/content_settings/permission_context_base.cc
|
| @@ -5,6 +5,7 @@
|
| #include "chrome/browser/content_settings/permission_context_base.h"
|
|
|
| #include "base/logging.h"
|
| +#include "base/metrics/histogram.h"
|
| #include "base/prefs/pref_service.h"
|
| #include "chrome/browser/content_settings/host_content_settings_map.h"
|
| #include "chrome/browser/content_settings/permission_bubble_request_impl.h"
|
| @@ -19,6 +20,22 @@
|
| #include "grit/generated_resources.h"
|
| #include "grit/theme_resources.h"
|
|
|
| +namespace {
|
| +
|
| +// Helper function for UMA tracking purposes.
|
| +PermissionType SettingToPermission(ContentSettingsType permission) {
|
| + switch (permission) {
|
| + case CONTENT_SETTINGS_TYPE_MIDI_SYSEX:
|
| + return PERMISSION_MIDI_SYSEX;
|
| + case CONTENT_SETTINGS_TYPE_PUSH_MESSAGING:
|
| + return PERMISSION_PUSH_MESSAGING;
|
| + default:
|
| + NOTREACHED() << "PERMISSION " << permission << " not accounted for";
|
| + }
|
| + return PERMISSION_UNKNOWN;
|
| +}
|
| +
|
| +} // namespace
|
|
|
| PermissionContextBase::PermissionContextBase(
|
| Profile* profile,
|
| @@ -40,7 +57,6 @@ void PermissionContextBase::RequestPermission(
|
| const GURL& requesting_frame,
|
| bool user_gesture,
|
| const BrowserPermissionCallback& callback) {
|
| - // TODO(miguelg): Add UMA instrumentation.
|
| DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::UI));
|
|
|
| DecidePermission(web_contents,
|
| @@ -65,16 +81,21 @@ void PermissionContextBase::DecidePermission(
|
| requesting_origin, embedder_origin, permission_type_, std::string());
|
| switch (content_setting) {
|
| case CONTENT_SETTING_BLOCK:
|
| - PermissionDecided(
|
| - id, requesting_origin, embedder_origin, callback, false);
|
| + NotifyPermissionSet(id, requesting_origin, embedder_origin,
|
| + callback, false /* persist */, false /* granted */);
|
| return;
|
| case CONTENT_SETTING_ALLOW:
|
| - PermissionDecided(id, requesting_origin, embedder_origin, callback, true);
|
| + NotifyPermissionSet(id, requesting_origin, embedder_origin,
|
| + callback, false /* persist */, true /* granted */);
|
| return;
|
| default:
|
| break;
|
| }
|
|
|
| + UMA_HISTOGRAM_ENUMERATION("ContentSettings.PermissionRequested",
|
| + SettingToPermission(permission_type_),
|
| + PERMISSION_NUM);
|
| +
|
| if (PermissionBubbleManager::Enabled()) {
|
| PermissionBubbleManager* bubble_manager =
|
| PermissionBubbleManager::FromWebContents(web_contents);
|
| @@ -85,7 +106,7 @@ void PermissionContextBase::DecidePermission(
|
| user_gesture,
|
| permission_type_,
|
| profile_->GetPrefs()->GetString(prefs::kAcceptLanguages),
|
| - base::Bind(&PermissionContextBase::NotifyPermissionSet,
|
| + base::Bind(&PermissionContextBase::PermissionDecided,
|
| weak_factory_.GetWeakPtr(),
|
| id,
|
| requesting_origin,
|
| @@ -109,7 +130,7 @@ void PermissionContextBase::DecidePermission(
|
| requesting_origin,
|
| embedder_origin,
|
| std::string(),
|
| - base::Bind(&PermissionContextBase::NotifyPermissionSet,
|
| + base::Bind(&PermissionContextBase::PermissionDecided,
|
| weak_factory_.GetWeakPtr(),
|
| id,
|
| requesting_origin,
|
| @@ -125,10 +146,20 @@ void PermissionContextBase::PermissionDecided(
|
| const GURL& requesting_origin,
|
| const GURL& embedder_origin,
|
| const BrowserPermissionCallback& callback,
|
| + bool persist,
|
| bool allowed) {
|
| - DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::UI));
|
| + if (allowed) {
|
| + UMA_HISTOGRAM_ENUMERATION("ContentSettings.PermissionGranted",
|
| + SettingToPermission(permission_type_),
|
| + PERMISSION_NUM);
|
| + } else {
|
| + UMA_HISTOGRAM_ENUMERATION("ContentSettings.PermissionDenied",
|
| + SettingToPermission(permission_type_),
|
| + PERMISSION_NUM);
|
| + }
|
| +
|
| NotifyPermissionSet(
|
| - id, requesting_origin, embedder_origin, callback, false, allowed);
|
| + id, requesting_origin, embedder_origin, callback, persist, allowed);
|
| }
|
|
|
| PermissionQueueController* PermissionContextBase::GetQueueController() {
|
|
|