• 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 #include "chrome/browser/status_icons/status_icon.h"
6 #include "testing/gmock/include/gmock/gmock.h"
7 #include "testing/gtest/include/gtest/gtest.h"
8 
9 class MockStatusIconObserver : public StatusIcon::Observer {
10  public:
11   MOCK_METHOD0(OnClicked, void());
12 };
13 
14 // Define pure virtual functions so we can test base class functionality.
15 class TestStatusIcon : public StatusIcon {
16  public:
TestStatusIcon()17   TestStatusIcon() {}
SetImage(const SkBitmap & image)18   virtual void SetImage(const SkBitmap& image) {}
SetPressedImage(const SkBitmap & image)19   virtual void SetPressedImage(const SkBitmap& image) {}
SetToolTip(const string16 & tool_tip)20   virtual void SetToolTip(const string16& tool_tip) {}
UpdatePlatformContextMenu(ui::MenuModel * menu)21   virtual void UpdatePlatformContextMenu(ui::MenuModel* menu) {}
DisplayBalloon(const string16 & title,const string16 & contents)22   virtual void DisplayBalloon(const string16& title,
23                               const string16& contents) {}
24 };
25 
TEST(StatusIconTest,ObserverAdd)26 TEST(StatusIconTest, ObserverAdd) {
27   // Make sure that observers are invoked when we click items.
28   TestStatusIcon icon;
29   MockStatusIconObserver observer, observer2;
30   EXPECT_CALL(observer, OnClicked()).Times(2);
31   EXPECT_CALL(observer2, OnClicked());
32   icon.AddObserver(&observer);
33   icon.DispatchClickEvent();
34   icon.AddObserver(&observer2);
35   icon.DispatchClickEvent();
36   icon.RemoveObserver(&observer);
37   icon.RemoveObserver(&observer2);
38 }
39 
TEST(StatusIconTest,ObserverRemove)40 TEST(StatusIconTest, ObserverRemove) {
41   // Make sure that observers are no longer invoked after they are removed.
42   TestStatusIcon icon;
43   MockStatusIconObserver observer;
44   EXPECT_CALL(observer, OnClicked());
45   icon.AddObserver(&observer);
46   icon.DispatchClickEvent();
47   icon.RemoveObserver(&observer);
48   icon.DispatchClickEvent();
49 }
50