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