diff options
author | tfarina@chromium.org <tfarina@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-11-21 17:18:14 +0000 |
---|---|---|
committer | tfarina@chromium.org <tfarina@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-11-21 17:18:14 +0000 |
commit | d57afa518d4ad5192b5a2d0f7227b2ddebd21ab9 (patch) | |
tree | 0f26ebcbcb4708db3b4520ba46929bc6a3727d1d /ui/views/widget/native_widget_unittest.cc | |
parent | c999f81499325506e3be3e373b1637bc3d71e85e (diff) | |
download | chromium_src-d57afa518d4ad5192b5a2d0f7227b2ddebd21ab9.zip chromium_src-d57afa518d4ad5192b5a2d0f7227b2ddebd21ab9.tar.gz chromium_src-d57afa518d4ad5192b5a2d0f7227b2ddebd21ab9.tar.bz2 |
views: Move widget/ directory to ui/views.
BUG=104039
R=ben@chromium.org
Review URL: http://codereview.chromium.org/8598031
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@110949 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'ui/views/widget/native_widget_unittest.cc')
-rw-r--r-- | ui/views/widget/native_widget_unittest.cc | 83 |
1 files changed, 83 insertions, 0 deletions
diff --git a/ui/views/widget/native_widget_unittest.cc b/ui/views/widget/native_widget_unittest.cc new file mode 100644 index 0000000..5af3a3f --- /dev/null +++ b/ui/views/widget/native_widget_unittest.cc @@ -0,0 +1,83 @@ +// 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/views/test/views_test_base.h" +#include "ui/views/widget/native_widget_private.h" +#include "ui/views/widget/native_widget_test_utils.h" +#include "ui/views/widget/widget.h" +#include "views/controls/native/native_view_host.h" +#include "views/view.h" + +namespace views { + +class ScopedTestWidget { + public: + ScopedTestWidget(internal::NativeWidgetPrivate* native_widget) + : native_widget_(native_widget) { + } + ~ScopedTestWidget() { + // |CloseNow| deletes both |native_widget_| and its associated + // |Widget|. + native_widget_->GetWidget()->CloseNow(); + } + + internal::NativeWidgetPrivate* operator->() const { + return native_widget_; + } + internal::NativeWidgetPrivate* get() const { return native_widget_; } + + private: + internal::NativeWidgetPrivate* native_widget_; + DISALLOW_COPY_AND_ASSIGN(ScopedTestWidget); +}; + +class NativeWidgetTest : public ViewsTestBase { + public: + NativeWidgetTest() {} + virtual ~NativeWidgetTest() {} + + private: + DISALLOW_COPY_AND_ASSIGN(NativeWidgetTest); +}; + +TEST_F(NativeWidgetTest, CreateNativeWidget) { + ScopedTestWidget widget(internal::CreateNativeWidget()); + EXPECT_TRUE(widget->GetWidget()->GetNativeView() != NULL); +} + +TEST_F(NativeWidgetTest, GetNativeWidgetForNativeView) { + ScopedTestWidget widget(internal::CreateNativeWidget()); + EXPECT_EQ(widget.get(), + internal::NativeWidgetPrivate::GetNativeWidgetForNativeView( + widget->GetWidget()->GetNativeView())); +} + +// |widget| has the toplevel NativeWidget. +TEST_F(NativeWidgetTest, GetTopLevelNativeWidget1) { + ScopedTestWidget widget(internal::CreateNativeWidget()); + EXPECT_EQ(widget.get(), + internal::NativeWidgetPrivate::GetTopLevelNativeWidget( + widget->GetWidget()->GetNativeView())); +} + +// |toplevel_widget| has the toplevel NativeWidget. +TEST_F(NativeWidgetTest, GetTopLevelNativeWidget2) { + ScopedTestWidget toplevel_widget(internal::CreateNativeWidget()); + + // |toplevel_widget| owns |child_host|. + NativeViewHost* child_host = new NativeViewHost; + toplevel_widget->GetWidget()->SetContentsView(child_host); + + // |child_host| owns |child_widget|. + internal::NativeWidgetPrivate* child_widget = + internal::CreateNativeSubWidget(); + child_host->Attach(child_widget->GetWidget()->GetNativeView()); + + EXPECT_EQ(toplevel_widget.get(), + internal::NativeWidgetPrivate::GetTopLevelNativeWidget( + child_widget->GetWidget()->GetNativeView())); +} + +} // namespace views |