Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1905)

Unified Diff: chrome/browser/notifications/extension_welcome_notification.h

Issue 580093003: Factor Google Now welcome notifications out of DesktopNotificationService. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/browser/notifications/extension_welcome_notification.h
diff --git a/chrome/browser/notifications/extension_welcome_notification.h b/chrome/browser/notifications/extension_welcome_notification.h
deleted file mode 100644
index 65bdea032b04c0da634425f3644cc9f585c6525c..0000000000000000000000000000000000000000
--- a/chrome/browser/notifications/extension_welcome_notification.h
+++ /dev/null
@@ -1,165 +0,0 @@
-// 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.
-
-#ifndef CHROME_BROWSER_NOTIFICATIONS_EXTENSION_WELCOME_NOTIFICATION_H_
-#define CHROME_BROWSER_NOTIFICATIONS_EXTENSION_WELCOME_NOTIFICATION_H_
-
-#include <string>
-
-#include "base/memory/scoped_ptr.h"
-#include "base/prefs/pref_member.h"
-#include "base/timer/timer.h"
-#include "chrome/browser/prefs/pref_service_syncable_observer.h"
-#include "ui/message_center/notifier_settings.h"
-
-namespace base {
-typedef Callback<void(void)> Closure;
-}
-
-namespace message_center {
-class MessageCenter;
-}
-
-namespace tracked_objects {
-class Location;
-}
-
-namespace user_prefs {
-class PrefRegistrySyncable;
-}
-
-class Notification;
-class Profile;
-
-// ExtensionWelcomeNotification is a part of DesktopNotificationService and
-// manages showing and hiding a welcome notification for built-in components
-// that show notifications. The Welcome Notification presumes network
-// connectivity since it relies on synced preferences to work. This is generally
-// fine since the current consumers on the welcome notification also presume
-// network connectivity.
-// This class expects to be created and called from the UI thread.
-class ExtensionWelcomeNotification : public PrefServiceSyncableObserver {
- public:
- // Allows for overriding global calls.
- class Delegate {
- public:
- Delegate() {}
- virtual ~Delegate() {}
- virtual message_center::MessageCenter* GetMessageCenter() = 0;
- virtual base::Time GetCurrentTime() = 0;
- virtual void PostTask(
- const tracked_objects::Location& from_here,
- const base::Closure& task) = 0;
- private:
- DISALLOW_COPY_AND_ASSIGN(Delegate);
- };
-
- // Requested time from showing the welcome notification to expiration.
- static const int kRequestedShowTimeDays;
-
- virtual ~ExtensionWelcomeNotification();
-
- // To workaround the lack of delegating constructors prior to C++11, we use
- // static Create methods.
- // Creates an ExtensionWelcomeNotification owned by the specified
- // extension id with the default delegate.
- static scoped_ptr<ExtensionWelcomeNotification> Create(
- const std::string& extension_id,
- Profile* const profile);
-
- // Creates an ExtensionWelcomeNotification owned by the specified
- // extension id with the specified delegate.
- static scoped_ptr<ExtensionWelcomeNotification> Create(
- const std::string& extension_id,
- Profile* const profile,
- Delegate* const delegate);
-
- // PrefServiceSyncableObserver
- virtual void OnIsSyncingChanged() OVERRIDE;
-
- // Adds in the welcome notification if required for components built
- // into Chrome that show notifications like Chrome Now.
- void ShowWelcomeNotificationIfNecessary(const Notification& notification);
-
- // Handles Preference Registration for the Welcome Notification.
- static void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* prefs);
-
- private:
- enum PopUpRequest { POP_UP_HIDDEN = 0, POP_UP_SHOWN = 1, };
-
- ExtensionWelcomeNotification(
- const std::string& extension_id,
- Profile* const profile,
- ExtensionWelcomeNotification::Delegate* const delegate);
-
- // Gets the message center from the delegate.
- message_center::MessageCenter* GetMessageCenter() const;
-
- // Unconditionally shows the welcome notification.
- void ShowWelcomeNotification(const base::string16& display_source,
- const PopUpRequest pop_up_request);
-
- // Hides the welcome notification.
- void HideWelcomeNotification();
-
- // Whether the notification has been dismissed.
- bool UserHasDismissedWelcomeNotification() const;
-
- // Called when the Welcome Notification Dismissed pref has been changed.
- void OnWelcomeNotificationDismissedChanged();
-
- // Starts the welcome notification expiration timer.
- void StartExpirationTimer();
-
- // Stops the welcome notification expiration timer.
- void StopExpirationTimer();
-
- // Expires the welcome notification by hiding it and marking it dismissed.
- void ExpireWelcomeNotification();
-
- // Gets the expiration timestamp or a null time is there is none.
- base::Time GetExpirationTimestamp() const;
-
- // Sets the expiration timestamp from now.
- void SetExpirationTimestampFromNow();
-
- // True if the welcome notification has expired, false otherwise.
- bool IsWelcomeNotificationExpired() const;
-
- // Prefs listener for welcome_notification_dismissed.
- BooleanPrefMember welcome_notification_dismissed_pref_;
-
- // Prefs listener for welcome_notification_dismissed_local.
- // Dismissal flag migrated from a synced pref to a local one.
- BooleanPrefMember welcome_notification_dismissed_local_pref_;
-
- // The notifier for the extension that we're listening for.
- message_center::NotifierId notifier_id_;
-
- // The profile which owns this object.
- Profile* profile_;
-
- // Notification ID of the Welcome Notification.
- std::string welcome_notification_id_;
-
- // If the preferences are still syncing, store the last notification here
- // so we can replay ShowWelcomeNotificationIfNecessary once the sync finishes.
- // Simplifying Assumption: The delayed notification has passed the
- // extension ID check. This means we do not need to store all of the
- // notifications that may also show a welcome notification.
- scoped_ptr<Notification> delayed_notification_;
-
- // If the welcome notification is shown, this timer tracks when to hide the
- // welcome notification.
- scoped_ptr<base::OneShotTimer<ExtensionWelcomeNotification> >
- expiration_timer_;
-
- // Delegate for Chrome global calls like base::Time::GetTime() for
- // testability.
- scoped_ptr<Delegate> delegate_;
-
- DISALLOW_COPY_AND_ASSIGN(ExtensionWelcomeNotification);
-};
-
-#endif // CHROME_BROWSER_NOTIFICATIONS_EXTENSION_WELCOME_NOTIFICATION_H_

Powered by Google App Engine
This is Rietveld 408576698