Home | History | Annotate | Download | only in status_icons
      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.
      4 
      5 #include "base/compiler_specific.h"
      6 #include "base/strings/string_util.h"
      7 #include "base/strings/utf_string_conversions.h"
      8 #include "chrome/browser/status_icons/status_icon.h"
      9 #include "chrome/browser/status_icons/status_tray.h"
     10 #include "grit/chrome_unscaled_resources.h"
     11 #include "testing/gtest/include/gtest/gtest.h"
     12 #include "ui/base/resource/resource_bundle.h"
     13 #include "ui/gfx/image/image_skia.h"
     14 
     15 class MockStatusIcon : public StatusIcon {
     16   virtual void SetImage(const gfx::ImageSkia& image) OVERRIDE {}
     17   virtual void SetToolTip(const base::string16& tool_tip) OVERRIDE {}
     18   virtual void DisplayBalloon(const gfx::ImageSkia& icon,
     19                               const base::string16& title,
     20                               const base::string16& contents) OVERRIDE {}
     21   virtual void UpdatePlatformContextMenu(
     22       StatusIconMenuModel* menu) OVERRIDE {}
     23 };
     24 
     25 class TestStatusTray : public StatusTray {
     26  public:
     27   virtual StatusIcon* CreatePlatformStatusIcon(
     28       StatusIconType type,
     29       const gfx::ImageSkia& image,
     30       const base::string16& tool_tip) OVERRIDE {
     31     return new MockStatusIcon();
     32   }
     33 
     34   const StatusIcons& GetStatusIconsForTest() const { return status_icons(); }
     35 };
     36 
     37 TEST(StatusTrayTest, Create) {
     38   // Check for creation and leaks.
     39   TestStatusTray tray;
     40   ui::ResourceBundle& rb = ui::ResourceBundle::GetSharedInstance();
     41   gfx::ImageSkia* image = rb.GetImageSkiaNamed(IDR_STATUS_TRAY_ICON);
     42   tray.CreateStatusIcon(
     43       StatusTray::OTHER_ICON, *image, base::ASCIIToUTF16("tool tip"));
     44   EXPECT_EQ(1U, tray.GetStatusIconsForTest().size());
     45 }
     46 
     47 // Make sure that removing an icon removes it from the list.
     48 TEST(StatusTrayTest, CreateRemove) {
     49   TestStatusTray tray;
     50   ui::ResourceBundle& rb = ui::ResourceBundle::GetSharedInstance();
     51   gfx::ImageSkia* image = rb.GetImageSkiaNamed(IDR_STATUS_TRAY_ICON);
     52   StatusIcon* icon = tray.CreateStatusIcon(
     53       StatusTray::OTHER_ICON, *image, base::ASCIIToUTF16("tool tip"));
     54   EXPECT_EQ(1U, tray.GetStatusIconsForTest().size());
     55   tray.RemoveStatusIcon(icon);
     56   EXPECT_EQ(0U, tray.GetStatusIconsForTest().size());
     57 }
     58