| // Copyright 2015 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/download/notification/download_notification.h" |
| |
| #include "base/macros.h" |
| #include "chrome/browser/download/notification/download_notification_manager.h" |
| |
| namespace { |
| |
| /////////////////////////////////////////////////////////////////////////////// |
| // NotificationWatcher class: |
| /////////////////////////////////////////////////////////////////////////////// |
| |
| class NotificationWatcher : public NotificationDelegate { |
| public: |
| explicit NotificationWatcher(DownloadNotification* item) : item_(item) {} |
| |
| // NotificationDelegate overrides: |
| void Close(bool by_user) override { |
| item_->OnNotificationClose(); |
| } |
| |
| void Click() override { |
| item_->OnNotificationClick(); |
| } |
| |
| bool HasClickedListener() override { |
| return item_->HasNotificationClickedListener(); |
| } |
| |
| void ButtonClick(int button_index) override { |
| item_->OnNotificationButtonClick(button_index); |
| } |
| |
| std::string id() const override { |
| return item_->GetNotificationId(); |
| } |
| |
| private: |
| ~NotificationWatcher() override {} |
| |
| DownloadNotification* item_; |
| |
| DISALLOW_COPY_AND_ASSIGN(NotificationWatcher); |
| }; |
| |
| } // anonymous namespace |
| |
| /////////////////////////////////////////////////////////////////////////////// |
| // DownloadNotification implementation: |
| /////////////////////////////////////////////////////////////////////////////// |
| |
| // static |
| const char DownloadNotification::kDownloadNotificationOrigin[] = |
| "chrome://downloads"; |
| |
| DownloadNotification::DownloadNotification() |
| : watcher_(new NotificationWatcher(this)) {} |
| |
| DownloadNotification::~DownloadNotification() {} |
| |
| bool DownloadNotification::HasNotificationClickedListener() { |
| // True by default. |
| return true; |
| } |
| |
| NotificationDelegate* DownloadNotification::watcher() const { |
| return watcher_.get(); |
| } |
| |
| void DownloadNotification::InvokeUnsafeForceNotificationFlush( |
| message_center::MessageCenter* message_center, const std::string& id) { |
| DCHECK(message_center); |
| message_center->ForceNotificationFlush(id); |
| } |