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 std::string
id() const override
;
28 ~MockNotificationDelegate() override
;
32 DISALLOW_COPY_AND_ASSIGN(MockNotificationDelegate
);
35 // Mock implementation of Javascript object proxy which logs events that
36 // would have been fired on it. Useful for tests where the sequence of
37 // notification events needs to be verified.
39 // |Logger| class provided in template must implement method
40 // static void log(string);
41 template<class Logger
>
42 class LoggingNotificationDelegate
: public NotificationDelegate
{
44 explicit LoggingNotificationDelegate(std::string id
) : notification_id_(id
) {}
46 // NotificationObjectProxy override
47 virtual void Display() override
{
48 Logger::log("notification displayed\n");
50 virtual void Click() override
{
51 Logger::log("notification clicked\n");
53 virtual void ButtonClick(int index
) override
{
54 Logger::log("notification button clicked\n");
56 virtual void Close(bool by_user
) override
{
58 Logger::log("notification closed by user\n");
60 Logger::log("notification closed by script\n");
62 virtual std::string
id() const override
{
63 return notification_id_
;
67 std::string notification_id_
;
69 DISALLOW_COPY_AND_ASSIGN(LoggingNotificationDelegate
);
72 class StubNotificationUIManager
: public NotificationUIManager
{
74 explicit StubNotificationUIManager(const GURL
& welcome_origin
);
75 ~StubNotificationUIManager() override
;
77 // Adds a notification to be displayed. Virtual for unit test override.
78 void Add(const Notification
& notification
, Profile
* profile
) override
;
79 bool Update(const Notification
& notification
, Profile
* profile
) override
;
81 // Returns NULL if no notifications match the supplied ID, either currently
82 // displayed or in the queue.
83 const Notification
* FindById(const std::string
& delegate_id
,
84 ProfileID profile_id
) const override
;
86 // Removes any notifications matching the supplied ID, either currently
87 // displayed or in the queue. Returns true if anything was removed.
88 bool CancelById(const std::string
& delegate_id
,
89 ProfileID profile_id
) override
;
91 // Adds the delegate_id for each outstanding notification to the set
92 // |delegate_ids| (must not be NULL).
93 std::set
<std::string
> GetAllIdsByProfileAndSourceOrigin(
95 const GURL
& source
) override
;
97 // Removes notifications matching the |source_origin| (which could be an
98 // extension ID). Returns true if anything was removed.
99 bool CancelAllBySourceOrigin(const GURL
& source_origin
) override
;
101 // Removes notifications matching |profile|. Returns true if any were removed.
102 bool CancelAllByProfile(ProfileID profile_id
) override
;
104 // Cancels all pending notifications and closes anything currently showing.
105 // Used when the app is terminating.
106 void CancelAll() override
;
108 // Test hook to get the notification so we can check it
109 const Notification
& notification() const { return notification_
; }
111 // Test hook to check the ID of the last notification cancelled.
112 std::string
& dismissed_id() { return dismissed_id_
; }
114 size_t added_notifications() const { return added_notifications_
; }
115 bool welcomed() const { return welcomed_
; }
118 DISALLOW_COPY_AND_ASSIGN(StubNotificationUIManager
);
119 Notification notification_
;
121 std::string dismissed_id_
;
122 GURL welcome_origin_
;
124 size_t added_notifications_
;
127 #endif // CHROME_BROWSER_NOTIFICATIONS_NOTIFICATION_TEST_UTIL_H_