1 /* 2 * Copyright 2009 The WebRTC Project Authors. All rights reserved. 3 * 4 * Use of this source code is governed by a BSD-style license 5 * that can be found in the LICENSE file in the root of the source 6 * tree. An additional intellectual property rights grant can be found 7 * in the file PATENTS. All contributing project authors may 8 * be found in the AUTHORS file in the root of the source tree. 9 */ 10 11 #include "webrtc/base/gunit.h" 12 #include "webrtc/base/common.h" 13 #include "webrtc/base/win32window.h" 14 #include "webrtc/base/logging.h" 15 16 static LRESULT kDummyResult = 0x1234ABCD; 17 18 class TestWindow : public rtc::Win32Window { 19 public: 20 TestWindow() : destroyed_(false) { memset(&msg_, 0, sizeof(msg_)); } 21 const MSG& msg() const { return msg_; } 22 bool destroyed() const { return destroyed_; } 23 24 virtual bool OnMessage(UINT uMsg, WPARAM wParam, 25 LPARAM lParam, LRESULT& result) { 26 msg_.message = uMsg; 27 msg_.wParam = wParam; 28 msg_.lParam = lParam; 29 result = kDummyResult; 30 return true; 31 } 32 virtual void OnNcDestroy() { 33 destroyed_ = true; 34 } 35 36 private: 37 MSG msg_; 38 bool destroyed_; 39 }; 40 41 TEST(Win32WindowTest, Basics) { 42 TestWindow wnd; 43 EXPECT_TRUE(wnd.handle() == NULL); 44 EXPECT_FALSE(wnd.destroyed()); 45 EXPECT_TRUE(wnd.Create(0, L"Test", 0, 0, 0, 0, 100, 100)); 46 EXPECT_TRUE(wnd.handle() != NULL); 47 EXPECT_EQ(kDummyResult, ::SendMessage(wnd.handle(), WM_USER, 1, 2)); 48 EXPECT_EQ(WM_USER, wnd.msg().message); 49 EXPECT_EQ(1, wnd.msg().wParam); 50 EXPECT_EQ(2, wnd.msg().lParam); 51 wnd.Destroy(); 52 EXPECT_TRUE(wnd.handle() == NULL); 53 EXPECT_TRUE(wnd.destroyed()); 54 } 55 56 TEST(Win32WindowTest, MultipleWindows) { 57 TestWindow wnd1, wnd2; 58 EXPECT_TRUE(wnd1.Create(0, L"Test", 0, 0, 0, 0, 100, 100)); 59 EXPECT_TRUE(wnd2.Create(0, L"Test", 0, 0, 0, 0, 100, 100)); 60 EXPECT_TRUE(wnd1.handle() != NULL); 61 EXPECT_TRUE(wnd2.handle() != NULL); 62 wnd1.Destroy(); 63 wnd2.Destroy(); 64 EXPECT_TRUE(wnd2.handle() == NULL); 65 EXPECT_TRUE(wnd1.handle() == NULL); 66 } 67