Home | History | Annotate | Download | only in status_icons
      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 "base/string_util.h"
      6 #include "base/utf_string_conversions.h"
      7 #include "chrome/browser/status_icons/status_icon.h"
      8 #include "chrome/browser/status_icons/status_tray.h"
      9 #include "testing/gmock/include/gmock/gmock.h"
     10 #include "testing/gtest/include/gtest/gtest.h"
     11 
     12 using testing::Return;
     13 
     14 class MockStatusIcon : public StatusIcon {
     15   virtual void SetImage(const SkBitmap& image) {}
     16   virtual void SetPressedImage(const SkBitmap& image) {}
     17   virtual void SetToolTip(const string16& tool_tip) {}
     18   virtual void DisplayBalloon(const string16& title,
     19                               const string16& contents) {}
     20   virtual void UpdatePlatformContextMenu(ui::MenuModel* menu) {}
     21   virtual void AddObserver(StatusIcon::Observer* observer) {}
     22   virtual void RemoveObserver(StatusIcon::Observer* observer) {}
     23 };
     24 
     25 class TestStatusTray : public StatusTray {
     26  public:
     27   MOCK_METHOD0(CreatePlatformStatusIcon, StatusIcon*());
     28   MOCK_METHOD1(UpdatePlatformContextMenu, void(ui::MenuModel*));
     29 };
     30 
     31 TEST(StatusTrayTest, Create) {
     32   // Check for creation and leaks.
     33   TestStatusTray tray;
     34   EXPECT_CALL(tray,
     35       CreatePlatformStatusIcon()).WillOnce(Return(new MockStatusIcon()));
     36   tray.CreateStatusIcon();
     37 }
     38 
     39 // Make sure that removing an icon removes it from the list.
     40 TEST(StatusTrayTest, CreateRemove) {
     41   TestStatusTray tray;
     42   EXPECT_CALL(tray,
     43       CreatePlatformStatusIcon()).WillOnce(Return(new MockStatusIcon()));
     44   StatusIcon* icon = tray.CreateStatusIcon();
     45   EXPECT_EQ(1U, tray.status_icons_.size());
     46   tray.RemoveStatusIcon(icon);
     47   EXPECT_EQ(0U, tray.status_icons_.size());
     48   // Calling again should do nothing.
     49   tray.RemoveStatusIcon(icon);
     50 }
     51