Roll src/third_party/WebKit bf18a82:a9cee16 (svn 185297:185304)
[chromium-blink-merge.git] / chrome / browser / notifications / notification_test_util.h
blob9b308f736539c21f9c6874d67563694874e62906
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_
8 #include <set>
9 #include <string>
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 {
21 public:
22 explicit MockNotificationDelegate(const std::string& id);
24 // NotificationDelegate interface.
25 std::string id() const override;
27 private:
28 ~MockNotificationDelegate() override;
30 std::string id_;
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 {
43 public:
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 {
57 if (by_user)
58 Logger::log("notification closed by user\n");
59 else
60 Logger::log("notification closed by script\n");
62 virtual std::string id() const override {
63 return notification_id_;
66 private:
67 std::string notification_id_;
69 DISALLOW_COPY_AND_ASSIGN(LoggingNotificationDelegate);
72 class StubNotificationUIManager : public NotificationUIManager {
73 public:
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(
94 Profile* profile,
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_; }
117 private:
118 DISALLOW_COPY_AND_ASSIGN(StubNotificationUIManager);
119 Notification notification_;
120 Profile* profile_;
121 std::string dismissed_id_;
122 GURL welcome_origin_;
123 bool welcomed_;
124 size_t added_notifications_;
127 #endif // CHROME_BROWSER_NOTIFICATIONS_NOTIFICATION_TEST_UTIL_H_