| Index: chrome/browser/permissions/permission_infobar_delegate.cc
|
| diff --git a/chrome/browser/permissions/permission_infobar_delegate.cc b/chrome/browser/permissions/permission_infobar_delegate.cc
|
| index f02ad991b4ed1f3b537b81d8fe33f92ef73079a6..180f331528de17c8d4e5ccdd3efc00de461ed1e0 100644
|
| --- a/chrome/browser/permissions/permission_infobar_delegate.cc
|
| +++ b/chrome/browser/permissions/permission_infobar_delegate.cc
|
| @@ -4,6 +4,8 @@
|
|
|
| #include "chrome/browser/permissions/permission_infobar_delegate.h"
|
|
|
| +#include <utility>
|
| +
|
| #include "build/build_config.h"
|
| #include "chrome/browser/geolocation/geolocation_infobar_delegate_android.h"
|
| #include "chrome/browser/infobars/infobar_service.h"
|
| @@ -15,40 +17,56 @@
|
| #include "chrome/grit/generated_resources.h"
|
| #include "components/infobars/core/infobar.h"
|
| #include "components/url_formatter/elide_url.h"
|
| +#include "content/public/browser/web_contents.h"
|
| #include "ui/base/l10n/l10n_util.h"
|
|
|
| // static
|
| infobars::InfoBar* PermissionInfoBarDelegate::Create(
|
| - content::PermissionType type,
|
| InfoBarService* infobar_service,
|
| + content::PermissionType type,
|
| + const GURL& requesting_frame,
|
| + bool user_gesture,
|
| + Profile* profile,
|
| + const PermissionSetCallback& callback) {
|
| + std::unique_ptr<PermissionInfoBarDelegate> delegate =
|
| + PermissionInfoBarDelegate::CreateDelegate(
|
| + type, requesting_frame, user_gesture, profile, callback);
|
| +
|
| + if (!delegate)
|
| + return nullptr;
|
| +
|
| + return infobar_service->AddInfoBar(
|
| + CreatePermissionInfoBar(std::move(delegate)));
|
| +}
|
| +
|
| +// static
|
| +std::unique_ptr<PermissionInfoBarDelegate>
|
| +PermissionInfoBarDelegate::CreateDelegate(
|
| + content::PermissionType type,
|
| const GURL& requesting_frame,
|
| bool user_gesture,
|
| Profile* profile,
|
| const PermissionSetCallback& callback) {
|
| switch (type) {
|
| case content::PermissionType::GEOLOCATION:
|
| - return infobar_service->AddInfoBar(
|
| - CreatePermissionInfoBar(std::unique_ptr<PermissionInfoBarDelegate>(
|
| + return std::unique_ptr<PermissionInfoBarDelegate>(
|
| new GeolocationInfoBarDelegateAndroid(
|
| - requesting_frame, user_gesture, profile, callback))));
|
| + requesting_frame, user_gesture, profile, callback));
|
| #if defined(ENABLE_NOTIFICATIONS)
|
| case content::PermissionType::NOTIFICATIONS:
|
| case content::PermissionType::PUSH_MESSAGING:
|
| - return infobar_service->AddInfoBar(
|
| - CreatePermissionInfoBar(std::unique_ptr<PermissionInfoBarDelegate>(
|
| - new NotificationPermissionInfoBarDelegate(
|
| - requesting_frame, user_gesture, profile, callback))));
|
| + return std::unique_ptr<PermissionInfoBarDelegate>(
|
| + new NotificationPermissionInfoBarDelegate(
|
| + requesting_frame, user_gesture, profile, callback));
|
| #endif // ENABLE_NOTIFICATIONS
|
| case content::PermissionType::MIDI_SYSEX:
|
| - return infobar_service->AddInfoBar(
|
| - CreatePermissionInfoBar(std::unique_ptr<PermissionInfoBarDelegate>(
|
| + return std::unique_ptr<PermissionInfoBarDelegate>(
|
| new MidiPermissionInfoBarDelegateAndroid(
|
| - requesting_frame, user_gesture, profile, callback))));
|
| + requesting_frame, user_gesture, profile, callback));
|
| case content::PermissionType::PROTECTED_MEDIA_IDENTIFIER:
|
| - return infobar_service->AddInfoBar(
|
| - CreatePermissionInfoBar(std::unique_ptr<PermissionInfoBarDelegate>(
|
| + return std::unique_ptr<PermissionInfoBarDelegate>(
|
| new ProtectedMediaIdentifierInfoBarDelegateAndroid(
|
| - requesting_frame, user_gesture, profile, callback))));
|
| + requesting_frame, user_gesture, profile, callback));
|
| default:
|
| NOTREACHED();
|
| return nullptr;
|
| @@ -76,6 +94,40 @@ bool PermissionInfoBarDelegate::ShouldShowPersistenceToggle() const {
|
| PermissionUtil::ShouldShowPersistenceToggle();
|
| }
|
|
|
| +bool PermissionInfoBarDelegate::Accept() {
|
| + bool update_content_setting = true;
|
| + if (ShouldShowPersistenceToggle()) {
|
| + update_content_setting = persist_;
|
| + PermissionUmaUtil::PermissionPromptAcceptedWithPersistenceToggle(
|
| + permission_type_, persist_);
|
| + }
|
| +
|
| + SetPermission(update_content_setting, GRANTED);
|
| + return true;
|
| +}
|
| +
|
| +bool PermissionInfoBarDelegate::Cancel() {
|
| + bool update_content_setting = true;
|
| + if (ShouldShowPersistenceToggle()) {
|
| + update_content_setting = persist_;
|
| + PermissionUmaUtil::PermissionPromptDeniedWithPersistenceToggle(
|
| + permission_type_, persist_);
|
| + }
|
| +
|
| + SetPermission(update_content_setting, DENIED);
|
| + return true;
|
| +}
|
| +
|
| +void PermissionInfoBarDelegate::InfoBarDismissed() {
|
| + SetPermission(false, DISMISSED);
|
| +}
|
| +
|
| +base::string16 PermissionInfoBarDelegate::GetButtonLabel(
|
| + InfoBarButton button) const {
|
| + return l10n_util::GetStringUTF16((button == BUTTON_OK) ? IDS_PERMISSION_ALLOW
|
| + : IDS_PERMISSION_DENY);
|
| +}
|
| +
|
| base::string16 PermissionInfoBarDelegate::GetMessageText() const {
|
| return l10n_util::GetStringFUTF16(
|
| GetMessageResourceId(),
|
| @@ -105,45 +157,11 @@ infobars::InfoBarDelegate::Type PermissionInfoBarDelegate::GetInfoBarType()
|
| return PAGE_ACTION_TYPE;
|
| }
|
|
|
| -void PermissionInfoBarDelegate::InfoBarDismissed() {
|
| - SetPermission(false, DISMISSED);
|
| -}
|
| -
|
| PermissionInfoBarDelegate*
|
| PermissionInfoBarDelegate::AsPermissionInfoBarDelegate() {
|
| return this;
|
| }
|
|
|
| -base::string16 PermissionInfoBarDelegate::GetButtonLabel(
|
| - InfoBarButton button) const {
|
| - return l10n_util::GetStringUTF16((button == BUTTON_OK) ?
|
| - IDS_PERMISSION_ALLOW : IDS_PERMISSION_DENY);
|
| -}
|
| -
|
| -bool PermissionInfoBarDelegate::Accept() {
|
| - bool update_content_setting = true;
|
| - if (ShouldShowPersistenceToggle()) {
|
| - update_content_setting = persist_;
|
| - PermissionUmaUtil::PermissionPromptAcceptedWithPersistenceToggle(
|
| - permission_type_, persist_);
|
| - }
|
| -
|
| - SetPermission(update_content_setting, GRANTED);
|
| - return true;
|
| -}
|
| -
|
| -bool PermissionInfoBarDelegate::Cancel() {
|
| - bool update_content_setting = true;
|
| - if (ShouldShowPersistenceToggle()) {
|
| - update_content_setting = persist_;
|
| - PermissionUmaUtil::PermissionPromptDeniedWithPersistenceToggle(
|
| - permission_type_, persist_);
|
| - }
|
| -
|
| - SetPermission(update_content_setting, DENIED);
|
| - return true;
|
| -}
|
| -
|
| void PermissionInfoBarDelegate::SetPermission(bool update_content_setting,
|
| PermissionAction decision) {
|
| action_taken_ = true;
|
|
|