Chromium Code Reviews| 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 c250baf16e7ec48eccde839d26b507d2fb4b67d4..2f62e170dc3554cffd9510356bb1ba6757aa1818 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" |
| @@ -40,7 +41,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 +65,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 +90,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 +114,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 +130,15 @@ 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)); |
| + UMA_HISTOGRAM_ENUMERATION(allowed |
|
Bernhard Bauer
2014/07/08 12:54:51
You were going to fix this?
Miguel Garcia
2014/07/08 14:14:20
Yes, I had not uploaded the change yet, you review
|
| + ? "ContentSettings.PermissionGranted" |
| + : "ContentSettings.PermissionDenied", |
| + SettingToPermission(permission_type_), |
| + PERMISSION_NUM); |
|
Takashi Toyoshima
2014/07/08 10:46:17
This is really nice:)
Miguel Garcia
2014/07/08 14:14:20
Thanks!
|
| NotifyPermissionSet( |
| - id, requesting_origin, embedder_origin, callback, false, allowed); |
| + id, requesting_origin, embedder_origin, callback, persist, allowed); |
| } |
| PermissionQueueController* PermissionContextBase::GetQueueController() { |
| @@ -155,6 +165,20 @@ void PermissionContextBase::CleanUpBubble(const PermissionRequestID& id) { |
| DCHECK(success) << "Missing request " << id.ToString(); |
| } |
| +// static |
| +PermissionType PermissionContextBase::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; |
| +} |
| + |
| void PermissionContextBase::UpdateContentSetting( |
| const GURL& requesting_origin, |
| const GURL& embedder_origin, |