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