| Index: chrome/browser/content_settings/permission_queue_controller.cc
|
| diff --git a/chrome/browser/content_settings/permission_queue_controller.cc b/chrome/browser/content_settings/permission_queue_controller.cc
|
| index c0c395a2de4384da5b77042beddff68fd945d0ad..dd3de069fdaa76a0366280b21d7d206810142879 100644
|
| --- a/chrome/browser/content_settings/permission_queue_controller.cc
|
| +++ b/chrome/browser/content_settings/permission_queue_controller.cc
|
| @@ -7,6 +7,7 @@
|
| #include "base/prefs/pref_service.h"
|
| #include "chrome/browser/chrome_notification_types.h"
|
| #include "chrome/browser/content_settings/host_content_settings_map.h"
|
| +#include "chrome/browser/content_settings/permission_context_uma_util.h"
|
| #include "chrome/browser/geolocation/geolocation_infobar_delegate.h"
|
| #include "chrome/browser/infobars/infobar_service.h"
|
| #include "chrome/browser/media/midi_permission_infobar_delegate.h"
|
| @@ -105,9 +106,6 @@ void PermissionQueueController::PendingInfobarRequest::RunCallback(
|
| void PermissionQueueController::PendingInfobarRequest::CreateInfoBar(
|
| PermissionQueueController* controller,
|
| const std::string& display_languages) {
|
| - // TODO(toyoshim): Remove following ContentType dependent code.
|
| - // Also these InfoBarDelegate can share much more code each other.
|
| - // http://crbug.com/266743
|
| switch (type_) {
|
| case CONTENT_SETTINGS_TYPE_GEOLOCATION:
|
| infobar_ = GeolocationInfoBarDelegate::Create(
|
| @@ -117,12 +115,12 @@ void PermissionQueueController::PendingInfobarRequest::CreateInfoBar(
|
| case CONTENT_SETTINGS_TYPE_MIDI_SYSEX:
|
| infobar_ = MidiPermissionInfoBarDelegate::Create(
|
| GetInfoBarService(id_), controller, id_, requesting_frame_,
|
| - display_languages);
|
| + display_languages, type_);
|
| break;
|
| case CONTENT_SETTINGS_TYPE_PUSH_MESSAGING:
|
| infobar_ = gcm::PushMessagingInfoBarDelegate::Create(
|
| GetInfoBarService(id_), controller, id_, requesting_frame_,
|
| - display_languages);
|
| + display_languages, type_);
|
| break;
|
| #if defined(OS_ANDROID)
|
| case CONTENT_SETTINGS_TYPE_PROTECTED_MEDIA_IDENTIFIER:
|
| @@ -194,8 +192,18 @@ void PermissionQueueController::OnPermissionSet(
|
| bool update_content_setting,
|
| bool allowed) {
|
| DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::UI));
|
| - if (update_content_setting)
|
| +
|
| + // TODO(miguelg): move the permission persistence to
|
| + // PermissionContextBase once all the types are moved there.
|
| + if (update_content_setting) {
|
| UpdateContentSetting(requesting_frame, embedder, allowed);
|
| + if (allowed)
|
| + PermissionContextUmaUtil::PermissionGranted(type_);
|
| + else
|
| + PermissionContextUmaUtil::PermissionDenied(type_);
|
| + } else {
|
| + PermissionContextUmaUtil::PermissionDismissed(type_);
|
| + }
|
|
|
| // Cancel this request first, then notify listeners. TODO(pkasting): Why
|
| // is this order important?
|
|
|