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.
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"
15 class MockStatusIcon
: public StatusIcon
{
16 virtual void SetImage(const gfx::ImageSkia
& image
) OVERRIDE
{}
17 virtual void SetPressedImage(const gfx::ImageSkia
& image
) OVERRIDE
{}
18 virtual void SetToolTip(const base::string16
& tool_tip
) OVERRIDE
{}
19 virtual void DisplayBalloon(const gfx::ImageSkia
& icon
,
20 const base::string16
& title
,
21 const base::string16
& contents
) OVERRIDE
{}
22 virtual void UpdatePlatformContextMenu(
23 StatusIconMenuModel
* menu
) OVERRIDE
{}
26 class TestStatusTray
: public StatusTray
{
28 virtual StatusIcon
* CreatePlatformStatusIcon(
30 const gfx::ImageSkia
& image
,
31 const base::string16
& tool_tip
) OVERRIDE
{
32 return new MockStatusIcon();
35 const StatusIcons
& GetStatusIconsForTest() const { return status_icons(); }
38 TEST(StatusTrayTest
, Create
) {
39 // Check for creation and leaks.
41 ui::ResourceBundle
& rb
= ui::ResourceBundle::GetSharedInstance();
42 gfx::ImageSkia
* image
= rb
.GetImageSkiaNamed(IDR_STATUS_TRAY_ICON
);
43 tray
.CreateStatusIcon(
44 StatusTray::OTHER_ICON
, *image
, base::ASCIIToUTF16("tool tip"));
45 EXPECT_EQ(1U, tray
.GetStatusIconsForTest().size());
48 // Make sure that removing an icon removes it from the list.
49 TEST(StatusTrayTest
, CreateRemove
) {
51 ui::ResourceBundle
& rb
= ui::ResourceBundle::GetSharedInstance();
52 gfx::ImageSkia
* image
= rb
.GetImageSkiaNamed(IDR_STATUS_TRAY_ICON
);
53 StatusIcon
* icon
= tray
.CreateStatusIcon(
54 StatusTray::OTHER_ICON
, *image
, base::ASCIIToUTF16("tool tip"));
55 EXPECT_EQ(1U, tray
.GetStatusIconsForTest().size());
56 tray
.RemoveStatusIcon(icon
);
57 EXPECT_EQ(0U, tray
.GetStatusIconsForTest().size());