Upstream version 7.36.149.0
[platform/framework/web/crosswalk.git] / src / chrome / browser / ui / views / status_icons / status_tray_win_unittest.cc
index 5502430..d302690 100644 (file)
 #include "ui/base/resource/resource_bundle.h"
 #include "ui/gfx/image/image_skia.h"
 
+class FakeStatusTrayStateChangerProxy : public StatusTrayStateChangerProxy {
+ public:
+  FakeStatusTrayStateChangerProxy()
+      : enqueue_called_(false), icon_id_(0), window_(NULL) {}
+
+  virtual void EnqueueChange(UINT icon_id, HWND window) {
+    enqueue_called_ = true;
+    icon_id_ = icon_id;
+    window_ = window;
+  }
+
+  bool enqueue_called() { return enqueue_called_; }
+  UINT icon_id() { return icon_id_; }
+  HWND window() { return window_; }
+
+ private:
+  bool enqueue_called_;
+  UINT icon_id_;
+  HWND window_;
+
+  DISALLOW_COPY_AND_ASSIGN(FakeStatusTrayStateChangerProxy);
+};
+
 class FakeStatusIconObserver : public StatusIconObserver {
  public:
   FakeStatusIconObserver()
@@ -104,3 +127,21 @@ TEST(StatusTrayWinTest, HandleOldIconId) {
   tray.WndProc(NULL, message_id, icon_id, WM_LBUTTONDOWN);
 }
 #endif  // !defined(USE_AURA)
+
+TEST(StatusTrayWinTest, EnsureVisibleTest) {
+  StatusTrayWin tray;
+  ui::ResourceBundle& rb = ui::ResourceBundle::GetSharedInstance();
+  gfx::ImageSkia* image = rb.GetImageSkiaNamed(IDR_STATUS_TRAY_ICON);
+
+  FakeStatusTrayStateChangerProxy* proxy =
+      new FakeStatusTrayStateChangerProxy();
+  tray.SetStatusTrayStateChangerProxyForTest(make_scoped_ptr(proxy));
+
+  StatusIconWin* icon = static_cast<StatusIconWin*>(tray.CreateStatusIcon(
+      StatusTray::OTHER_ICON, *image, base::ASCIIToUTF16("tool tip")));
+
+  icon->ForceVisible();
+  EXPECT_TRUE(proxy->enqueue_called());
+  EXPECT_EQ(proxy->window(), icon->window());
+  EXPECT_EQ(proxy->icon_id(), icon->icon_id());
+}