| // Copyright (c) 2011 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_NOTIFICATION_TEST_UTIL_H_ |
| #define CHROME_BROWSER_NOTIFICATIONS_NOTIFICATION_TEST_UTIL_H_ |
| #pragma once |
| |
| #include <string> |
| |
| #include "chrome/browser/notifications/notification_object_proxy.h" |
| #include "chrome/browser/notifications/balloon.h" |
| #include "ui/gfx/size.h" |
| |
| // NotificationDelegate which does nothing, useful for testing when |
| // the notification events are not important. |
| class MockNotificationDelegate : public NotificationDelegate { |
| public: |
| explicit MockNotificationDelegate(const std::string& id); |
| virtual ~MockNotificationDelegate(); |
| |
| // NotificationDelegate interface. |
| virtual void Display() {} |
| virtual void Error() {} |
| virtual void Close(bool by_user) {} |
| virtual void Click() {} |
| virtual std::string id() const; |
| |
| private: |
| std::string id_; |
| |
| DISALLOW_COPY_AND_ASSIGN(MockNotificationDelegate); |
| }; |
| |
| // Mock implementation of Javascript object proxy which logs events that |
| // would have been fired on it. Useful for tests where the sequence of |
| // notification events needs to be verified. |
| // |
| // |Logger| class provided in template must implement method |
| // static void log(string); |
| template<class Logger> |
| class LoggingNotificationDelegate : public NotificationDelegate { |
| public: |
| explicit LoggingNotificationDelegate(std::string id) |
| : notification_id_(id) { |
| } |
| |
| // NotificationObjectProxy override |
| virtual void Display() { |
| Logger::log("notification displayed\n"); |
| } |
| virtual void Error() { |
| Logger::log("notification error\n"); |
| } |
| virtual void Click() { |
| Logger::log("notification clicked\n"); |
| } |
| virtual void Close(bool by_user) { |
| if (by_user) |
| Logger::log("notification closed by user\n"); |
| else |
| Logger::log("notification closed by script\n"); |
| } |
| virtual std::string id() const { |
| return notification_id_; |
| } |
| private: |
| std::string notification_id_; |
| |
| DISALLOW_COPY_AND_ASSIGN(LoggingNotificationDelegate); |
| }; |
| |
| // Test version of a balloon view which doesn't do anything |
| // viewable, but does know how to close itself the same as a regular |
| // BalloonView. |
| class MockBalloonView : public BalloonView { |
| public: |
| explicit MockBalloonView(Balloon * balloon) : |
| balloon_(balloon) {} |
| |
| // BalloonView: |
| virtual void Show(Balloon* balloon) {} |
| virtual void Update() {} |
| virtual void RepositionToBalloon() {} |
| virtual void Close(bool by_user); |
| virtual gfx::Size GetSize() const; |
| virtual BalloonHost* GetHost() const; |
| |
| private: |
| // Non-owned pointer. |
| Balloon* balloon_; |
| }; |
| |
| #endif // CHROME_BROWSER_NOTIFICATIONS_NOTIFICATION_TEST_UTIL_H_ |