Chromium Code Reviews| Index: chrome/browser/notifications/desktop_notification_service.cc |
| diff --git a/chrome/browser/notifications/desktop_notification_service.cc b/chrome/browser/notifications/desktop_notification_service.cc |
| index 2d605f819ea3475e513bbbbad2f9711825e2c61b..541b4d23b051b60ac5ce53c5a970924238387efe 100644 |
| --- a/chrome/browser/notifications/desktop_notification_service.cc |
| +++ b/chrome/browser/notifications/desktop_notification_service.cc |
| @@ -14,7 +14,6 @@ |
| #include "chrome/browser/content_settings/content_settings_details.h" |
| #include "chrome/browser/content_settings/content_settings_provider.h" |
| #include "chrome/browser/content_settings/host_content_settings_map.h" |
| -#include "chrome/browser/infobars/infobar_service.h" |
| #include "chrome/browser/notifications/desktop_notification_service_factory.h" |
| #include "chrome/browser/notifications/notification.h" |
| #include "chrome/browser/notifications/notification_object_proxy.h" |
| @@ -23,14 +22,10 @@ |
| #include "chrome/browser/notifications/sync_notifier/chrome_notifier_service_factory.h" |
| #include "chrome/browser/profiles/profile.h" |
| #include "chrome/browser/ui/browser.h" |
| -#include "chrome/browser/ui/website_settings/permission_bubble_manager.h" |
| -#include "chrome/browser/ui/website_settings/permission_bubble_request.h" |
| #include "chrome/common/content_settings.h" |
| #include "chrome/common/content_settings_pattern.h" |
| #include "chrome/common/pref_names.h" |
| #include "chrome/common/url_constants.h" |
| -#include "components/infobars/core/confirm_infobar_delegate.h" |
| -#include "components/infobars/core/infobar.h" |
| #include "components/pref_registry/pref_registry_syncable.h" |
| #include "content/public/browser/browser_thread.h" |
| #include "content/public/browser/notification_service.h" |
| @@ -71,226 +66,6 @@ namespace { |
| const char kChromeNowExtensionID[] = "pafkbggdmjlpgkdkcbjmhmfcdpncadgh"; |
| -// NotificationPermissionRequest --------------------------------------- |
| - |
| -class NotificationPermissionRequest : public PermissionBubbleRequest { |
| - public: |
| - NotificationPermissionRequest( |
| - DesktopNotificationService* notification_service, |
| - const GURL& origin, |
| - base::string16 display_name, |
| - const base::Closure& callback); |
| - virtual ~NotificationPermissionRequest(); |
| - |
| - // PermissionBubbleDelegate: |
| - virtual int GetIconID() const OVERRIDE; |
| - virtual base::string16 GetMessageText() const OVERRIDE; |
| - virtual base::string16 GetMessageTextFragment() const OVERRIDE; |
| - virtual bool HasUserGesture() const OVERRIDE; |
| - virtual GURL GetRequestingHostname() const OVERRIDE; |
| - virtual void PermissionGranted() OVERRIDE; |
| - virtual void PermissionDenied() OVERRIDE; |
| - virtual void Cancelled() OVERRIDE; |
| - virtual void RequestFinished() OVERRIDE; |
| - |
| - private: |
| - // The notification service to be used. |
| - DesktopNotificationService* notification_service_; |
| - |
| - // The origin we are asking for permissions on. |
| - GURL origin_; |
| - |
| - // The display name for the origin to be displayed. Will be different from |
| - // origin_ for extensions. |
| - base::string16 display_name_; |
| - |
| - // The callback information that tells us how to respond to javascript. |
| - base::Closure callback_; |
| - |
| - // Whether the user clicked one of the buttons. |
| - bool action_taken_; |
| - |
| - DISALLOW_COPY_AND_ASSIGN(NotificationPermissionRequest); |
| -}; |
| - |
| -NotificationPermissionRequest::NotificationPermissionRequest( |
| - DesktopNotificationService* notification_service, |
| - const GURL& origin, |
| - base::string16 display_name, |
| - const base::Closure& callback) |
| - : notification_service_(notification_service), |
| - origin_(origin), |
| - display_name_(display_name), |
| - callback_(callback), |
| - action_taken_(false) {} |
| - |
| -NotificationPermissionRequest::~NotificationPermissionRequest() {} |
| - |
| -int NotificationPermissionRequest::GetIconID() const { |
| - return IDR_INFOBAR_DESKTOP_NOTIFICATIONS; |
| -} |
| - |
| -base::string16 NotificationPermissionRequest::GetMessageText() const { |
| - return l10n_util::GetStringFUTF16(IDS_NOTIFICATION_PERMISSIONS, |
| - display_name_); |
| -} |
| - |
| -base::string16 |
| -NotificationPermissionRequest::GetMessageTextFragment() const { |
| - return l10n_util::GetStringUTF16(IDS_NOTIFICATION_PERMISSIONS_FRAGMENT); |
| -} |
| - |
| -bool NotificationPermissionRequest::HasUserGesture() const { |
| - // Currently notification permission requests are only issued on |
| - // user gesture. |
| - return true; |
| -} |
| - |
| -GURL NotificationPermissionRequest::GetRequestingHostname() const { |
| - return origin_; |
| -} |
| - |
| -void NotificationPermissionRequest::PermissionGranted() { |
| - action_taken_ = true; |
| - UMA_HISTOGRAM_COUNTS("NotificationPermissionRequest.Allowed", 1); |
| - notification_service_->GrantPermission(origin_); |
| -} |
| - |
| -void NotificationPermissionRequest::PermissionDenied() { |
| - action_taken_ = true; |
| - UMA_HISTOGRAM_COUNTS("NotificationPermissionRequest.Denied", 1); |
| - notification_service_->DenyPermission(origin_); |
| -} |
| - |
| -void NotificationPermissionRequest::Cancelled() { |
| -} |
| - |
| -void NotificationPermissionRequest::RequestFinished() { |
| - if (!action_taken_) |
| - UMA_HISTOGRAM_COUNTS("NotificationPermissionRequest.Ignored", 1); |
| - |
| - callback_.Run(); |
| - |
| - delete this; |
| -} |
| - |
| - |
| -// NotificationPermissionInfoBarDelegate -------------------------------------- |
| - |
| -// The delegate for the infobar shown when an origin requests notification |
| -// permissions. |
| -class NotificationPermissionInfoBarDelegate : public ConfirmInfoBarDelegate { |
| - public: |
| - // Creates a notification permission infobar and delegate and adds the infobar |
| - // to |infobar_service|. |
| - static void Create(InfoBarService* infobar_service, |
| - DesktopNotificationService* notification_service, |
| - const GURL& origin, |
| - const base::string16& display_name, |
| - const base::Closure& callback); |
| - |
| - private: |
| - NotificationPermissionInfoBarDelegate( |
| - DesktopNotificationService* notification_service, |
| - const GURL& origin, |
| - const base::string16& display_name, |
| - const base::Closure& callback); |
| - virtual ~NotificationPermissionInfoBarDelegate(); |
| - |
| - // ConfirmInfoBarDelegate: |
| - virtual int GetIconID() const OVERRIDE; |
| - virtual Type GetInfoBarType() const OVERRIDE; |
| - virtual base::string16 GetMessageText() const OVERRIDE; |
| - virtual base::string16 GetButtonLabel(InfoBarButton button) const OVERRIDE; |
| - virtual bool Accept() OVERRIDE; |
| - virtual bool Cancel() OVERRIDE; |
| - |
| - // The origin we are asking for permissions on. |
| - GURL origin_; |
| - |
| - // The display name for the origin to be displayed. Will be different from |
| - // origin_ for extensions. |
| - base::string16 display_name_; |
| - |
| - // The notification service to be used. |
| - DesktopNotificationService* notification_service_; |
| - |
| - // The callback information that tells us how to respond to javascript. |
| - base::Closure callback_; |
| - |
| - // Whether the user clicked one of the buttons. |
| - bool action_taken_; |
| - |
| - DISALLOW_COPY_AND_ASSIGN(NotificationPermissionInfoBarDelegate); |
| -}; |
| - |
| -// static |
| -void NotificationPermissionInfoBarDelegate::Create( |
| - InfoBarService* infobar_service, |
| - DesktopNotificationService* notification_service, |
| - const GURL& origin, |
| - const base::string16& display_name, |
| - const base::Closure& callback) { |
| - infobar_service->AddInfoBar(ConfirmInfoBarDelegate::CreateInfoBar( |
| - scoped_ptr<ConfirmInfoBarDelegate>( |
| - new NotificationPermissionInfoBarDelegate( |
| - notification_service, origin, display_name, callback)))); |
| -} |
| - |
| -NotificationPermissionInfoBarDelegate::NotificationPermissionInfoBarDelegate( |
| - DesktopNotificationService* notification_service, |
| - const GURL& origin, |
| - const base::string16& display_name, |
| - const base::Closure& callback) |
| - : ConfirmInfoBarDelegate(), |
| - origin_(origin), |
| - display_name_(display_name), |
| - notification_service_(notification_service), |
| - callback_(callback), |
| - action_taken_(false) { |
| -} |
| - |
| -NotificationPermissionInfoBarDelegate:: |
| - ~NotificationPermissionInfoBarDelegate() { |
| - if (!action_taken_) |
| - UMA_HISTOGRAM_COUNTS("NotificationPermissionRequest.Ignored", 1); |
|
Peter Beverloo
2014/07/10 11:29:39
We seem to lose this UMA coverage, but I've heard
Miguel Garcia
2014/07/17 17:24:48
I think we will, I decided to drop it since it onl
|
| - |
| - callback_.Run(); |
| -} |
| - |
| -int NotificationPermissionInfoBarDelegate::GetIconID() const { |
| - return IDR_INFOBAR_DESKTOP_NOTIFICATIONS; |
| -} |
| - |
| -infobars::InfoBarDelegate::Type |
| -NotificationPermissionInfoBarDelegate::GetInfoBarType() const { |
| - return PAGE_ACTION_TYPE; |
| -} |
| - |
| -base::string16 NotificationPermissionInfoBarDelegate::GetMessageText() const { |
| - return l10n_util::GetStringFUTF16(IDS_NOTIFICATION_PERMISSIONS, |
| - display_name_); |
| -} |
| - |
| -base::string16 NotificationPermissionInfoBarDelegate::GetButtonLabel( |
| - InfoBarButton button) const { |
| - return l10n_util::GetStringUTF16((button == BUTTON_OK) ? |
| - IDS_NOTIFICATION_PERMISSION_YES : IDS_NOTIFICATION_PERMISSION_NO); |
| -} |
| - |
| -bool NotificationPermissionInfoBarDelegate::Accept() { |
| - UMA_HISTOGRAM_COUNTS("NotificationPermissionRequest.Allowed", 1); |
| - notification_service_->GrantPermission(origin_); |
| - action_taken_ = true; |
| - return true; |
| -} |
| - |
| -bool NotificationPermissionInfoBarDelegate::Cancel() { |
| - UMA_HISTOGRAM_COUNTS("NotificationPermissionRequest.Denied", 1); |
| - notification_service_->DenyPermission(origin_); |
| - action_taken_ = true; |
| - return true; |
| -} |
| void CancelNotification(const std::string& id) { |
| g_browser_process->notification_ui_manager()->CancelById(id); |
| @@ -386,7 +161,8 @@ std::string DesktopNotificationService::AddIconNotification( |
| DesktopNotificationService::DesktopNotificationService( |
| Profile* profile, |
| NotificationUIManager* ui_manager) |
| - : profile_(profile), |
| + : PermissionContextBase(profile, CONTENT_SETTINGS_TYPE_NOTIFICATIONS), |
| + profile_(profile), |
| ui_manager_(ui_manager) { |
| OnStringListPrefChanged( |
| prefs::kMessageCenterDisabledExtensionIds, &disabled_extension_ids_); |
| @@ -439,23 +215,6 @@ void DesktopNotificationService::DenyPermission(const GURL& origin) { |
| CONTENT_SETTING_BLOCK); |
| } |
| -ContentSetting DesktopNotificationService::GetDefaultContentSetting( |
| - std::string* provider_id) { |
| - return profile_->GetHostContentSettingsMap()->GetDefaultContentSetting( |
| - CONTENT_SETTINGS_TYPE_NOTIFICATIONS, provider_id); |
| -} |
| - |
| -void DesktopNotificationService::SetDefaultContentSetting( |
| - ContentSetting setting) { |
| - profile_->GetHostContentSettingsMap()->SetDefaultContentSetting( |
| - CONTENT_SETTINGS_TYPE_NOTIFICATIONS, setting); |
| -} |
| - |
| -void DesktopNotificationService::ResetToDefaultContentSetting() { |
| - profile_->GetHostContentSettingsMap()->SetDefaultContentSetting( |
| - CONTENT_SETTINGS_TYPE_NOTIFICATIONS, CONTENT_SETTING_DEFAULT); |
| -} |
| - |
| void DesktopNotificationService::GetNotificationsSettings( |
| ContentSettingsForOneType* settings) { |
| profile_->GetHostContentSettingsMap()->GetSettingsForOneType( |
| @@ -464,21 +223,6 @@ void DesktopNotificationService::GetNotificationsSettings( |
| settings); |
| } |
| -void DesktopNotificationService::ClearSetting( |
| - const ContentSettingsPattern& pattern) { |
| - profile_->GetHostContentSettingsMap()->SetContentSetting( |
| - pattern, |
| - ContentSettingsPattern::Wildcard(), |
| - CONTENT_SETTINGS_TYPE_NOTIFICATIONS, |
| - NO_RESOURCE_IDENTIFIER, |
| - CONTENT_SETTING_DEFAULT); |
| -} |
| - |
| -void DesktopNotificationService::ResetAllOrigins() { |
|
Peter Beverloo
2014/07/10 11:29:39
This is still used in notification_browsertest.cc.
Miguel Garcia
2014/07/17 17:24:48
Yeah there were two tests broken, fixed them now.
|
| - profile_->GetHostContentSettingsMap()->ClearSettingsForOneType( |
| - CONTENT_SETTINGS_TYPE_NOTIFICATIONS); |
| -} |
| - |
| ContentSetting DesktopNotificationService::GetContentSetting( |
| const GURL& origin) { |
| return profile_->GetHostContentSettingsMap()->GetContentSetting( |
| @@ -488,52 +232,6 @@ ContentSetting DesktopNotificationService::GetContentSetting( |
| NO_RESOURCE_IDENTIFIER); |
| } |
| -void DesktopNotificationService::RequestPermission( |
| - const GURL& origin, |
| - content::RenderFrameHost* render_frame_host, |
| - const base::Closure& callback) { |
| - // If |origin| hasn't been seen before and the default content setting for |
| - // notifications is "ask", show an infobar. |
| - // The cache can only answer queries on the IO thread once it's initialized, |
| - // so don't ask the cache. |
| - WebContents* web_contents = WebContents::FromRenderFrameHost( |
| - render_frame_host); |
| - ContentSetting setting = GetContentSetting(origin); |
| - if (setting == CONTENT_SETTING_ASK) { |
| - if (PermissionBubbleManager::Enabled()) { |
| - PermissionBubbleManager* bubble_manager = |
| - PermissionBubbleManager::FromWebContents(web_contents); |
| - if (bubble_manager) { |
| - bubble_manager->AddRequest(new NotificationPermissionRequest( |
| - this, |
| - origin, |
| - DisplayNameForOriginInProcessId( |
| - origin, render_frame_host->GetProcess()->GetID()), |
| - callback)); |
| - } |
| - return; |
| - } |
| - |
| - // Show an info bar requesting permission. |
| - InfoBarService* infobar_service = |
| - InfoBarService::FromWebContents(web_contents); |
| - // |infobar_service| may be NULL, e.g., if this request originated in a |
| - // browser action popup, extension background page, or any HTML that runs |
| - // outside of a tab. |
| - if (infobar_service) { |
| - NotificationPermissionInfoBarDelegate::Create( |
| - infobar_service, this, origin, |
| - DisplayNameForOriginInProcessId( |
| - origin, render_frame_host->GetProcess()->GetID()), |
| - callback); |
| - return; |
| - } |
| - } |
| - |
| - // Notify renderer immediately. |
| - callback.Run(); |
| -} |
| - |
| void DesktopNotificationService::ShowDesktopNotification( |
| const content::ShowDesktopNotificationHostMsgParams& params, |
| content::RenderFrameHost* render_frame_host, |
| @@ -583,13 +281,6 @@ base::string16 DesktopNotificationService::DisplayNameForOriginInProcessId( |
| return base::UTF8ToUTF16(origin.host()); |
| } |
| -void DesktopNotificationService::NotifySettingsChange() { |
| - content::NotificationService::current()->Notify( |
| - chrome::NOTIFICATION_DESKTOP_NOTIFICATION_SETTINGS_CHANGED, |
| - content::Source<DesktopNotificationService>(this), |
| - content::NotificationService::NoDetails()); |
| -} |
| - |
| NotificationUIManager* DesktopNotificationService::GetUIManager() { |
| // We defer setting ui_manager_ to the global singleton until we need it |
| // in order to avoid UI dependent construction during startup. |