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/ui/gtk/status_icons/status_icon_gtk.h"
      8 #include "chrome/browser/ui/gtk/status_icons/status_tray_gtk.h"
      9 #include "grit/theme_resources.h"
     10 #include "testing/gmock/include/gmock/gmock.h"
     11 #include "testing/gtest/include/gtest/gtest.h"
     12 #include "ui/base/models/simple_menu_model.h"
     13 #include "ui/base/resource/resource_bundle.h"
     14 
     15 namespace {
     16 
     17 class MockStatusIconObserver : public StatusIcon::Observer {
     18  public:
     19   MOCK_METHOD0(OnClicked, void());
     20 };
     21 
     22 TEST(StatusTrayGtkTest, CreateTray) {
     23   // Just tests creation/destruction.
     24   StatusTrayGtk tray;
     25 }
     26 
     27 TEST(StatusTrayGtkTest, CreateIcon) {
     28   // Create an icon, set the images and tooltip, then shut it down.
     29   StatusTrayGtk tray;
     30   StatusIcon* icon = tray.CreateStatusIcon();
     31   SkBitmap* bitmap = ResourceBundle::GetSharedInstance().GetBitmapNamed(
     32       IDR_STATUS_TRAY_ICON);
     33   icon->SetImage(*bitmap);
     34   icon->SetPressedImage(*bitmap);
     35   icon->SetToolTip(ASCIIToUTF16("tool tip"));
     36   ui::SimpleMenuModel* menu = new ui::SimpleMenuModel(NULL);
     37   menu->AddItem(0, ASCIIToUTF16("foo"));
     38   icon->SetContextMenu(menu);
     39 }
     40 
     41 TEST(StatusTrayGtkTest, ClickOnIcon) {
     42   // Create an icon, send a fake click event, make sure observer is called.
     43   StatusTrayGtk tray;
     44   StatusIconGtk* icon = static_cast<StatusIconGtk*>(tray.CreateStatusIcon());
     45   MockStatusIconObserver observer;
     46   icon->AddObserver(&observer);
     47   EXPECT_CALL(observer, OnClicked());
     48   // Mimic a click.
     49   icon->OnClick(NULL);
     50   icon->RemoveObserver(&observer);
     51 }
     52 
     53 }  // namespace
     54