status_tray_win_unittest.cc revision 4a5e2dc747d50c653511c68ccb2cfbfb740bd5a7
1// Copyright (c) 2010 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 "app/menus/simple_menu_model.h" 6#include "app/resource_bundle.h" 7#include "base/string_util.h" 8#include "base/utf_string_conversions.h" 9#include "chrome/browser/views/status_icons/status_icon_win.h" 10#include "chrome/browser/views/status_icons/status_tray_win.h" 11#include "grit/browser_resources.h" 12#include "grit/theme_resources.h" 13#include "testing/gmock/include/gmock/gmock.h" 14#include "testing/gtest/include/gtest/gtest.h" 15 16class SkBitmap; 17 18class MockStatusIconObserver : public StatusIcon::Observer { 19 public: 20 MOCK_METHOD0(OnClicked, void()); 21}; 22 23TEST(StatusTrayWinTest, CreateTray) { 24 // Just tests creation/destruction. 25 StatusTrayWin tray; 26} 27 28TEST(StatusTrayWinTest, CreateIconAndMenu) { 29 // Create an icon, set the images, tooltip, and context menu, then shut it 30 // down. 31 StatusTrayWin tray; 32 StatusIcon* icon = tray.CreateStatusIcon(); 33 SkBitmap* bitmap = ResourceBundle::GetSharedInstance().GetBitmapNamed( 34 IDR_STATUS_TRAY_ICON); 35 icon->SetImage(*bitmap); 36 icon->SetPressedImage(*bitmap); 37 icon->SetToolTip(ASCIIToUTF16("tool tip")); 38 menus::SimpleMenuModel* menu = new menus::SimpleMenuModel(NULL); 39 menu->AddItem(0, L"foo"); 40 icon->SetContextMenu(menu); 41} 42 43TEST(StatusTrayWinTest, ClickOnIcon) { 44 // Create an icon, send a fake click event, make sure observer is called. 45 StatusTrayWin tray; 46 StatusIconWin* icon = static_cast<StatusIconWin*>(tray.CreateStatusIcon()); 47 MockStatusIconObserver observer; 48 icon->AddObserver(&observer); 49 EXPECT_CALL(observer, OnClicked()); 50 // Mimic a click. 51 tray.WndProc(NULL, icon->message_id(), icon->icon_id(), WM_LBUTTONDOWN); 52 // Mimic a right-click - observer should not be called. 53 tray.WndProc(NULL, icon->message_id(), icon->icon_id(), WM_RBUTTONDOWN); 54 icon->RemoveObserver(&observer); 55} 56