Chromium Code Reviews| Index: chrome/browser/notifications/message_center_notification_manager.h |
| diff --git a/chrome/browser/notifications/message_center_notification_manager.h b/chrome/browser/notifications/message_center_notification_manager.h |
| index ae5fc9ad0e1c4e098c128d839817c872c93375c7..b21eba4511fb96ba550bceabfc74ed8dce6495a0 100644 |
| --- a/chrome/browser/notifications/message_center_notification_manager.h |
| +++ b/chrome/browser/notifications/message_center_notification_manager.h |
| @@ -9,6 +9,10 @@ |
| #include <string> |
| #include "base/memory/scoped_ptr.h" |
| +#include "base/memory/weak_ptr.h" |
| +#include "base/prefs/pref_member.h" |
| +#include "base/time.h" |
| +#include "base/timer.h" |
| #include "chrome/browser/notifications/notification.h" |
| #include "chrome/browser/notifications/notification_ui_manager.h" |
| #include "chrome/browser/notifications/notification_ui_manager_impl.h" |
| @@ -18,6 +22,7 @@ |
| class MessageCenterSettingsController; |
| class Notification; |
| +class PrefService; |
| class Profile; |
| // This class extends NotificationUIManagerImpl and delegates actual display |
| @@ -28,9 +33,17 @@ class MessageCenterNotificationManager |
| public message_center::MessageCenterObserver { |
| public: |
| explicit MessageCenterNotificationManager( |
| - message_center::MessageCenter* message_center); |
| + message_center::MessageCenter* message_center, |
| + PrefService* local_state); |
| virtual ~MessageCenterNotificationManager(); |
| +#if defined(OS_WIN) |
| + // Called when the pref changes for the first run balloon. The first run |
| + // balloon is only displayed on Windows, since the visibility of the tray |
| + // icon is limited. |
| + void DisplayFirstRunBalloon(); |
| +#endif |
| + |
| // NotificationUIManager |
| virtual bool DoesIdExist(const std::string& notification_id) OVERRIDE; |
| virtual bool CancelById(const std::string& notification_id) OVERRIDE; |
| @@ -59,6 +72,13 @@ class MessageCenterNotificationManager |
| virtual void OnNotificationRemoved(const std::string& notification_id, |
| bool by_user) OVERRIDE; |
| virtual void OnNotificationCenterClosed() OVERRIDE; |
| + virtual void OnNotificationUpdated(const std::string& notification_id) |
| + OVERRIDE; |
| + |
| + // Takes ownership of |delegate|. |
| + void SetMessageCenterTrayDelegateForTest( |
| + message_center::MessageCenterTrayDelegate* delegate); |
| + void SetFirstRunTimeoutForTest(base::TimeDelta timeout); |
| private: |
| class ImageDownloadsObserver { |
| @@ -171,6 +191,28 @@ class MessageCenterNotificationManager |
| // notification is found. |
| ProfileNotification* FindProfileNotification(const std::string& id) const; |
| +#if defined(OS_WIN) |
| + // This function is run on update to ensure that the notification balloon is |
| + // shown only when there are no popups present. |
| + void CheckFirstRunTimer(); |
| +#endif |
| + |
| + // |first_run_pref_| is used to keep track of whether we've ever shown the |
| + // first run balloon before, even across restarts. |
| + BooleanPrefMember first_run_pref_; |
| + |
| + // The timer after which we will show the first run balloon. This timer is |
| + // restarted every time the message center is closed and every time the last |
| + // popup disappears from the screen. |
| + base::OneShotTimer<MessageCenterNotificationManager> first_run_balloon_timer_; |
|
Andrew T Wilson (Slow)
2013/06/20 21:08:59
So all this stuff is windows-only -- can we #if th
dewittj
2013/06/21 21:56:51
Done.
|
| + |
| + // The first-run balloon will be shown |first_run_idle_timeout_| after all |
| + // popups go away and the user has notifications in the message center. |
| + base::TimeDelta first_run_idle_timeout_; |
| + |
| + // Provides weak pointers for the purpose of the first run timer. |
| + base::WeakPtrFactory<MessageCenterNotificationManager> weak_factory_; |
| + |
| DISALLOW_COPY_AND_ASSIGN(MessageCenterNotificationManager); |
| }; |