• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Copyright (c) 2011 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.
4 
5 #ifndef CHROME_BROWSER_NOTIFICATIONS_NOTIFICATION_TEST_UTIL_H_
6 #define CHROME_BROWSER_NOTIFICATIONS_NOTIFICATION_TEST_UTIL_H_
7 #pragma once
8 
9 #include <string>
10 
11 #include "chrome/browser/notifications/notification_object_proxy.h"
12 #include "chrome/browser/notifications/balloon.h"
13 #include "ui/gfx/size.h"
14 
15 // NotificationDelegate which does nothing, useful for testing when
16 // the notification events are not important.
17 class MockNotificationDelegate : public NotificationDelegate {
18  public:
19   explicit MockNotificationDelegate(const std::string& id);
20   virtual ~MockNotificationDelegate();
21 
22   // NotificationDelegate interface.
Display()23   virtual void Display() {}
Error()24   virtual void Error() {}
Close(bool by_user)25   virtual void Close(bool by_user) {}
Click()26   virtual void Click() {}
27   virtual std::string id() const;
28 
29  private:
30   std::string id_;
31 
32   DISALLOW_COPY_AND_ASSIGN(MockNotificationDelegate);
33 };
34 
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.
38 //
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:
LoggingNotificationDelegate(std::string id)44   explicit LoggingNotificationDelegate(std::string id)
45       : notification_id_(id) {
46   }
47 
48   // NotificationObjectProxy override
Display()49   virtual void Display() {
50     Logger::log("notification displayed\n");
51   }
Error()52   virtual void Error() {
53     Logger::log("notification error\n");
54   }
Click()55   virtual void Click() {
56     Logger::log("notification clicked\n");
57   }
Close(bool by_user)58   virtual void Close(bool by_user) {
59     if (by_user)
60       Logger::log("notification closed by user\n");
61     else
62       Logger::log("notification closed by script\n");
63   }
id()64   virtual std::string id() const {
65     return notification_id_;
66   }
67  private:
68   std::string notification_id_;
69 
70   DISALLOW_COPY_AND_ASSIGN(LoggingNotificationDelegate);
71 };
72 
73 // Test version of a balloon view which doesn't do anything
74 // viewable, but does know how to close itself the same as a regular
75 // BalloonView.
76 class MockBalloonView : public BalloonView {
77  public:
MockBalloonView(Balloon * balloon)78   explicit MockBalloonView(Balloon * balloon) :
79       balloon_(balloon) {}
80 
81   // BalloonView:
Show(Balloon * balloon)82   virtual void Show(Balloon* balloon) {}
Update()83   virtual void Update() {}
RepositionToBalloon()84   virtual void RepositionToBalloon() {}
85   virtual void Close(bool by_user);
86   virtual gfx::Size GetSize() const;
87   virtual BalloonHost* GetHost() const;
88 
89  private:
90   // Non-owned pointer.
91   Balloon* balloon_;
92 };
93 
94 #endif  // CHROME_BROWSER_NOTIFICATIONS_NOTIFICATION_TEST_UTIL_H_
95