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