| // Copyright 2014 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #include "chrome/browser/notifications/persistent_notification_delegate.h" |
| |
| #include "base/bind.h" |
| #include "base/guid.h" |
| #include "chrome/browser/notifications/notification_common.h" |
| #include "chrome/browser/notifications/platform_notification_service_impl.h" |
| #include "content/public/common/persistent_notification_status.h" |
| |
| PersistentNotificationDelegate::PersistentNotificationDelegate( |
| content::BrowserContext* browser_context, |
| int64_t persistent_notification_id, |
| const GURL& origin, |
| int notification_settings_index) |
| : browser_context_(browser_context), |
| persistent_notification_id_(persistent_notification_id), |
| origin_(origin), |
| id_(base::GenerateGUID()), |
| notification_settings_index_(notification_settings_index) {} |
| |
| PersistentNotificationDelegate::~PersistentNotificationDelegate() {} |
| |
| void PersistentNotificationDelegate::Display() {} |
| |
| void PersistentNotificationDelegate::Close(bool by_user) { |
| PlatformNotificationServiceImpl::GetInstance()->OnPersistentNotificationClose( |
| browser_context_, |
| persistent_notification_id_, |
| origin_, |
| by_user); |
| } |
| |
| void PersistentNotificationDelegate::Click() { |
| PlatformNotificationServiceImpl::GetInstance()->OnPersistentNotificationClick( |
| browser_context_, |
| persistent_notification_id_, |
| origin_, |
| -1 /* action_index */); |
| } |
| |
| void PersistentNotificationDelegate::ButtonClick(int button_index) { |
| DCHECK_GE(button_index, 0); |
| if (button_index == notification_settings_index_) { |
| NotificationCommon::OpenNotificationSettings(browser_context_); |
| return; |
| } |
| |
| PlatformNotificationServiceImpl::GetInstance()->OnPersistentNotificationClick( |
| browser_context_, |
| persistent_notification_id_, |
| origin_, |
| button_index); |
| } |
| |
| void PersistentNotificationDelegate::SettingsClick() { |
| NotificationCommon::OpenNotificationSettings(browser_context_); |
| return; |
| } |
| |
| bool PersistentNotificationDelegate::ShouldDisplaySettingsButton() { |
| return true; |
| } |
| |
| std::string PersistentNotificationDelegate::id() const { |
| return id_; |
| } |