blob: 0ab2a1f1f96b4c14523dfe5a438bee511e1b01b0 [file] [log] [blame]
[email protected]baf5a3442012-04-21 22:48:321// Copyright (c) 2012 The Chromium Authors. All rights reserved.
[email protected]ccb55cf52010-03-06 22:02:042// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
[email protected]a25fd452011-10-26 10:45:085#include "base/compiler_specific.h"
[email protected]ccb55cf52010-03-06 22:02:046#include "chrome/browser/status_icons/status_icon.h"
7#include "chrome/browser/status_icons/status_tray.h"
[email protected]ccb55cf52010-03-06 22:02:048#include "testing/gtest/include/gtest/gtest.h"
[email protected]b6c510aa2013-07-31 23:36:149#include "ui/gfx/image/image_skia.h"
mgiuca8367e722015-11-25 06:53:4810#include "ui/gfx/image/image_unittest_util.h"
johnme92956172015-10-15 16:54:1211#include "ui/message_center/notifier_settings.h"
[email protected]ccb55cf52010-03-06 22:02:0412
mgiuca8367e722015-11-25 06:53:4813namespace {
14
[email protected]ccb55cf52010-03-06 22:02:0415class MockStatusIcon : public StatusIcon {
Daniel Chenga542fca2014-10-21 09:51:2916 void SetImage(const gfx::ImageSkia& image) override {}
17 void SetToolTip(const base::string16& tool_tip) override {}
18 void DisplayBalloon(const gfx::ImageSkia& icon,
19 const base::string16& title,
johnme92956172015-10-15 16:54:1220 const base::string16& contents,
21 const message_center::NotifierId& notifier_id) override {}
Daniel Chenga542fca2014-10-21 09:51:2922 void UpdatePlatformContextMenu(StatusIconMenuModel* menu) override {}
[email protected]ccb55cf52010-03-06 22:02:0423};
24
[email protected]a24642a2010-03-24 21:29:0525class TestStatusTray : public StatusTray {
[email protected]ccb55cf52010-03-06 22:02:0426 public:
Daniel Chenga542fca2014-10-21 09:51:2927 StatusIcon* CreatePlatformStatusIcon(
[email protected]b6c510aa2013-07-31 23:36:1428 StatusIconType type,
29 const gfx::ImageSkia& image,
mostynbfb66cb4f2014-10-07 09:15:4230 const base::string16& tool_tip) override {
[email protected]b6c510aa2013-07-31 23:36:1431 return new MockStatusIcon();
32 }
[email protected]4b49fb0c2013-07-18 09:51:2533
34 const StatusIcons& GetStatusIconsForTest() const { return status_icons(); }
[email protected]ccb55cf52010-03-06 22:02:0435};
36
mgiuca8367e722015-11-25 06:53:4837StatusIcon* CreateStatusIcon(StatusTray* tray) {
38 // Just create a dummy icon image; the actual image is irrelevant.
39 return tray->CreateStatusIcon(StatusTray::OTHER_ICON,
40 gfx::test::CreateImageSkia(16, 16),
41 base::string16());
42}
43
44} // namespace
45
[email protected]ccb55cf52010-03-06 22:02:0446TEST(StatusTrayTest, Create) {
47 // Check for creation and leaks.
[email protected]a24642a2010-03-24 21:29:0548 TestStatusTray tray;
mgiuca8367e722015-11-25 06:53:4849 CreateStatusIcon(&tray);
[email protected]b6c510aa2013-07-31 23:36:1450 EXPECT_EQ(1U, tray.GetStatusIconsForTest().size());
[email protected]ccb55cf52010-03-06 22:02:0451}
52
[email protected]4c793f02010-08-18 20:55:4553// Make sure that removing an icon removes it from the list.
54TEST(StatusTrayTest, CreateRemove) {
[email protected]a24642a2010-03-24 21:29:0555 TestStatusTray tray;
mgiuca8367e722015-11-25 06:53:4856 StatusIcon* icon = CreateStatusIcon(&tray);
[email protected]4b49fb0c2013-07-18 09:51:2557 EXPECT_EQ(1U, tray.GetStatusIconsForTest().size());
[email protected]4c793f02010-08-18 20:55:4558 tray.RemoveStatusIcon(icon);
[email protected]4b49fb0c2013-07-18 09:51:2559 EXPECT_EQ(0U, tray.GetStatusIconsForTest().size());
[email protected]ccb55cf52010-03-06 22:02:0460}