1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 #ifndef CHROME_BROWSER_NOTIFICATIONS_NOTIFICATION_TEST_UTIL_H_
6 #define CHROME_BROWSER_NOTIFICATIONS_NOTIFICATION_TEST_UTIL_H_
11 #include "chrome/browser/notifications/notification.h"
12 #include "chrome/browser/notifications/notification_object_proxy.h"
13 #include "chrome/browser/notifications/notification_ui_manager.h"
14 #include "chrome/browser/notifications/sync_notifier/chrome_notifier_service.h"
15 #include "chrome/browser/profiles/profile.h"
16 #include "ui/gfx/size.h"
18 // NotificationDelegate which does nothing, useful for testing when
19 // the notification events are not important.
20 class MockNotificationDelegate
: public NotificationDelegate
{
22 explicit MockNotificationDelegate(const std::string
& id
);
24 // NotificationDelegate interface.
25 virtual void Display() OVERRIDE
{}
26 virtual void Error() OVERRIDE
{}
27 virtual void Close(bool by_user
) OVERRIDE
{}
28 virtual void Click() OVERRIDE
{}
29 virtual std::string
id() const OVERRIDE
;
30 virtual content::WebContents
* GetWebContents() const OVERRIDE
;
33 virtual ~MockNotificationDelegate();
37 DISALLOW_COPY_AND_ASSIGN(MockNotificationDelegate
);
40 // Mock implementation of Javascript object proxy which logs events that
41 // would have been fired on it. Useful for tests where the sequence of
42 // notification events needs to be verified.
44 // |Logger| class provided in template must implement method
45 // static void log(string);
46 template<class Logger
>
47 class LoggingNotificationDelegate
: public NotificationDelegate
{
49 explicit LoggingNotificationDelegate(std::string id
)
50 : notification_id_(id
) {
53 // NotificationObjectProxy override
54 virtual void Display() OVERRIDE
{
55 Logger::log("notification displayed\n");
57 virtual void Error() OVERRIDE
{
58 Logger::log("notification error\n");
60 virtual void Click() OVERRIDE
{
61 Logger::log("notification clicked\n");
63 virtual void ButtonClick(int index
) OVERRIDE
{
64 Logger::log("notification button clicked\n");
66 virtual void Close(bool by_user
) OVERRIDE
{
68 Logger::log("notification closed by user\n");
70 Logger::log("notification closed by script\n");
72 virtual std::string
id() const OVERRIDE
{
73 return notification_id_
;
75 virtual content::WebContents
* GetWebContents() const OVERRIDE
{
80 std::string notification_id_
;
82 DISALLOW_COPY_AND_ASSIGN(LoggingNotificationDelegate
);
85 class StubNotificationUIManager
: public NotificationUIManager
{
87 explicit StubNotificationUIManager(const GURL
& welcome_origin
);
88 virtual ~StubNotificationUIManager();
90 // Adds a notification to be displayed. Virtual for unit test override.
91 virtual void Add(const Notification
& notification
, Profile
* profile
) OVERRIDE
;
92 virtual bool Update(const Notification
& notification
,
93 Profile
* profile
) OVERRIDE
;
95 // Returns NULL if no notifications match the supplied ID, either currently
96 // displayed or in the queue.
97 virtual const Notification
* FindById(const std::string
& id
) const OVERRIDE
;
99 // Removes any notifications matching the supplied ID, either currently
100 // displayed or in the queue. Returns true if anything was removed.
101 virtual bool CancelById(const std::string
& notification_id
) OVERRIDE
;
103 // Adds the notification_id for each outstanding notification to the set
104 // |notification_ids| (must not be NULL).
105 virtual std::set
<std::string
> GetAllIdsByProfileAndSourceOrigin(
107 const GURL
& source
) OVERRIDE
;
109 // Removes notifications matching the |source_origin| (which could be an
110 // extension ID). Returns true if anything was removed.
111 virtual bool CancelAllBySourceOrigin(const GURL
& source_origin
) OVERRIDE
;
113 // Removes notifications matching |profile|. Returns true if any were removed.
114 virtual bool CancelAllByProfile(Profile
* profile
) OVERRIDE
;
116 // Cancels all pending notifications and closes anything currently showing.
117 // Used when the app is terminating.
118 virtual void CancelAll() OVERRIDE
;
120 // Test hook to get the notification so we can check it
121 const Notification
& notification() const { return notification_
; }
123 // Test hook to check the ID of the last notification cancelled.
124 std::string
& dismissed_id() { return dismissed_id_
; }
126 size_t added_notifications() const { return added_notifications_
; }
127 bool welcomed() const { return welcomed_
; }
130 DISALLOW_COPY_AND_ASSIGN(StubNotificationUIManager
);
131 Notification notification_
;
133 std::string dismissed_id_
;
134 GURL welcome_origin_
;
136 size_t added_notifications_
;
139 #endif // CHROME_BROWSER_NOTIFICATIONS_NOTIFICATION_TEST_UTIL_H_