summaryrefslogtreecommitdiffstats
path: root/ui/views/widget/native_widget_win_unittest.cc
diff options
context:
space:
mode:
Diffstat (limited to 'ui/views/widget/native_widget_win_unittest.cc')
-rw-r--r--ui/views/widget/native_widget_win_unittest.cc92
1 files changed, 92 insertions, 0 deletions
diff --git a/ui/views/widget/native_widget_win_unittest.cc b/ui/views/widget/native_widget_win_unittest.cc
new file mode 100644
index 0000000..b5cdf04
--- /dev/null
+++ b/ui/views/widget/native_widget_win_unittest.cc
@@ -0,0 +1,92 @@
+// Copyright (c) 2011 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "testing/gtest/include/gtest/gtest.h"
+#include "ui/base/win/window_impl.h"
+#include "ui/views/view.h"
+#include "ui/views/widget/native_widget.h"
+#include "ui/views/widget/widget.h"
+
+namespace ui {
+
+class NativeWidgetTest : public testing::Test {
+ public:
+ NativeWidgetTest() {}
+ virtual ~NativeWidgetTest() {}
+
+ Widget* CreateWidget() const {
+ Widget* widget = new Widget(new View);
+ widget->set_delete_on_destroy(false);
+ widget->InitWithNativeViewParent(NULL, gfx::Rect(10, 10, 200, 200));
+ return widget;
+ }
+
+ private:
+ DISALLOW_COPY_AND_ASSIGN(NativeWidgetTest);
+};
+
+class TestWindowImpl : public WindowImpl {
+ public:
+ TestWindowImpl() {}
+ virtual ~TestWindowImpl() {}
+
+ virtual BOOL ProcessWindowMessage(HWND window,
+ UINT message,
+ WPARAM w_param,
+ LPARAM l_param,
+ LRESULT& result,
+ DWORD msg_mad_id = 0) {
+ return FALSE;
+ }
+
+ private:
+ DISALLOW_COPY_AND_ASSIGN(TestWindowImpl);
+};
+
+TEST_F(NativeWidgetTest, CreateNativeWidget) {
+ scoped_ptr<Widget> widget(CreateWidget());
+ EXPECT_TRUE(widget->native_widget()->GetNativeView() != NULL);
+}
+
+TEST_F(NativeWidgetTest, GetNativeWidgetForNativeView) {
+ scoped_ptr<Widget> widget(CreateWidget());
+ NativeWidget* a = widget->native_widget();
+ HWND nv = widget->native_widget()->GetNativeView();
+ NativeWidget* b = NativeWidget::GetNativeWidgetForNativeView(nv);
+ EXPECT_EQ(a, b);
+}
+
+// |widget| has the toplevel NativeWidget.
+TEST_F(NativeWidgetTest, GetTopLevelNativeWidget1) {
+ scoped_ptr<Widget> widget(CreateWidget());
+ EXPECT_EQ(widget->native_widget(),
+ NativeWidget::GetTopLevelNativeWidget(
+ widget->native_widget()->GetNativeView()));
+}
+
+// |toplevel_widget| has the toplevel NativeWidget.
+TEST_F(NativeWidgetTest, GetTopLevelNativeWidget2) {
+ scoped_ptr<Widget> child_widget(CreateWidget());
+ scoped_ptr<Widget> toplevel_widget(CreateWidget());
+ SetParent(child_widget->native_widget()->GetNativeView(),
+ toplevel_widget->native_widget()->GetNativeView());
+ EXPECT_EQ(toplevel_widget->native_widget(),
+ NativeWidget::GetTopLevelNativeWidget(
+ child_widget->native_widget()->GetNativeView()));
+}
+
+// |child_widget| has the toplevel NativeWidget.
+TEST_F(NativeWidgetTest, GetTopLevelNativeWidget3) {
+ scoped_ptr<Widget> child_widget(CreateWidget());
+
+ TestWindowImpl toplevel;
+ toplevel.Init(NULL, gfx::Rect(10, 10, 100, 100));
+
+ SetParent(child_widget->native_widget()->GetNativeView(), toplevel.hwnd());
+ EXPECT_EQ(child_widget->native_widget(),
+ NativeWidget::GetTopLevelNativeWidget(
+ child_widget->native_widget()->GetNativeView()));
+}
+
+} // namespace ui