summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorerg@chromium.org <erg@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-12-05 09:00:44 +0000
committererg@chromium.org <erg@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-12-05 09:00:44 +0000
commit5209d23549608b1cd758cfc2f26961908bcd83e5 (patch)
tree4814b92b8c4be6e14c51006654fca74c9628f561
parent678c036ef6be9f5e845f2e75a8b1bbd76985768d (diff)
downloadchromium_src-5209d23549608b1cd758cfc2f26961908bcd83e5.zip
chromium_src-5209d23549608b1cd758cfc2f26961908bcd83e5.tar.gz
chromium_src-5209d23549608b1cd758cfc2f26961908bcd83e5.tar.bz2
Desktop aura: Continue threading context through views.
These threads a .context parameter through most tests in views_unittests to widget creation (the handful that remain are Hard and will be addressed in a separate patch; I'm trying to keep these more manageable.) BUG=161882 Review URL: https://chromiumcodereview.appspot.com/11416251 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@171196 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r--ui/views/accessible_pane_view_unittest.cc9
-rw-r--r--ui/views/bubble/bubble_delegate_unittest.cc30
-rw-r--r--ui/views/bubble/bubble_frame_view_unittest.cc15
-rw-r--r--ui/views/controls/combobox/native_combobox_views_unittest.cc4
-rw-r--r--ui/views/controls/native/native_view_host_unittest.cc4
-rw-r--r--ui/views/controls/scrollbar/scrollbar_unittest.cc2
-rw-r--r--ui/views/controls/tabbed_pane/tabbed_pane_unittest.cc3
-rw-r--r--ui/views/controls/textfield/native_textfield_views_unittest.cc2
-rw-r--r--ui/views/focus/focus_manager_test.cc9
-rw-r--r--ui/views/focus/focus_manager_unittest.cc4
-rw-r--r--ui/views/test/views_test_base.cc11
-rw-r--r--ui/views/test/views_test_base.h5
-rw-r--r--ui/views/view_unittest.cc67
-rw-r--r--ui/views/views.gyp3
-rw-r--r--ui/views/widget/native_widget_aura.cc5
-rw-r--r--ui/views/widget/native_widget_aura_unittest.cc5
-rw-r--r--ui/views/widget/native_widget_unittest.cc31
-rw-r--r--ui/views/widget/widget.h14
-rw-r--r--ui/views/widget/widget_unittest.cc117
19 files changed, 208 insertions, 132 deletions
diff --git a/ui/views/accessible_pane_view_unittest.cc b/ui/views/accessible_pane_view_unittest.cc
index 7ae35f7..379bda3 100644
--- a/ui/views/accessible_pane_view_unittest.cc
+++ b/ui/views/accessible_pane_view_unittest.cc
@@ -71,8 +71,7 @@ View* TestBarView::GetDefaultFocusableChild() {
TEST_F(AccessiblePaneViewTest, SimpleSetPaneFocus) {
TestBarView* test_view = new TestBarView();
scoped_ptr<Widget> widget(new Widget());
- Widget::InitParams params(Widget::InitParams::TYPE_POPUP);
- params.ownership = views::Widget::InitParams::WIDGET_OWNS_NATIVE_WIDGET;
+ Widget::InitParams params = CreateParams(Widget::InitParams::TYPE_POPUP);
params.bounds = gfx::Rect(50, 50, 650, 650);
widget->Init(params);
View* root = widget->GetRootView();
@@ -100,8 +99,7 @@ TEST_F(AccessiblePaneViewTest, TwoSetPaneFocus) {
TestBarView* test_view = new TestBarView();
TestBarView* test_view_2 = new TestBarView();
scoped_ptr<Widget> widget(new Widget());
- Widget::InitParams params(Widget::InitParams::TYPE_POPUP);
- params.ownership = views::Widget::InitParams::WIDGET_OWNS_NATIVE_WIDGET;
+ Widget::InitParams params = CreateParams(Widget::InitParams::TYPE_POPUP);
params.bounds = gfx::Rect(50, 50, 650, 650);
widget->Init(params);
View* root = widget->GetRootView();
@@ -130,8 +128,7 @@ TEST_F(AccessiblePaneViewTest, PaneFocusTraversal) {
TestBarView* test_view = new TestBarView();
TestBarView* original_test_view = new TestBarView();
scoped_ptr<Widget> widget(new Widget());
- Widget::InitParams params(Widget::InitParams::TYPE_POPUP);
- params.ownership = views::Widget::InitParams::WIDGET_OWNS_NATIVE_WIDGET;
+ Widget::InitParams params = CreateParams(Widget::InitParams::TYPE_POPUP);
params.bounds = gfx::Rect(50, 50, 650, 650);
widget->Init(params);
View* root = widget->GetRootView();
diff --git a/ui/views/bubble/bubble_delegate_unittest.cc b/ui/views/bubble/bubble_delegate_unittest.cc
index af3096c..36a52cd 100644
--- a/ui/views/bubble/bubble_delegate_unittest.cc
+++ b/ui/views/bubble/bubble_delegate_unittest.cc
@@ -43,7 +43,7 @@ void TestWidgetObserver::OnWidgetClosing(Widget* widget) {
class TestBubbleDelegateView : public BubbleDelegateView {
public:
- TestBubbleDelegateView();
+ TestBubbleDelegateView(View* anchor_view);
virtual ~TestBubbleDelegateView();
virtual View* GetInitiallyFocusedView() OVERRIDE;
@@ -52,7 +52,9 @@ class TestBubbleDelegateView : public BubbleDelegateView {
View* view_;
};
-TestBubbleDelegateView::TestBubbleDelegateView() : view_(new View()) {
+TestBubbleDelegateView::TestBubbleDelegateView(View* anchor_view)
+ : BubbleDelegateView(anchor_view, BubbleBorder::TOP_LEFT),
+ view_(new View()) {
view_->set_focusable(true);
AddChildView(view_);
}
@@ -68,8 +70,15 @@ View* TestBubbleDelegateView::GetInitiallyFocusedView() {
typedef ViewsTestBase BubbleDelegateTest;
TEST_F(BubbleDelegateTest, CreateDelegate) {
+ // Create the anchor and parent widgets.
+ Widget::InitParams params = CreateParams(Widget::InitParams::TYPE_WINDOW);
+ scoped_ptr<Widget> anchor_widget(new Widget);
+ anchor_widget->Init(params);
+ anchor_widget->Show();
+
BubbleDelegateView* bubble_delegate =
- new BubbleDelegateView(NULL, BubbleBorder::NONE);
+ new BubbleDelegateView(anchor_widget->GetContentsView(),
+ BubbleBorder::NONE);
bubble_delegate->set_color(SK_ColorGREEN);
Widget* bubble_widget(
BubbleDelegateView::CreateBubble(bubble_delegate));
@@ -90,8 +99,7 @@ TEST_F(BubbleDelegateTest, CreateDelegate) {
TEST_F(BubbleDelegateTest, CloseAnchorWidget) {
// Create the anchor widget.
- Widget::InitParams params(Widget::InitParams::TYPE_WINDOW);
- params.ownership = views::Widget::InitParams::WIDGET_OWNS_NATIVE_WIDGET;
+ Widget::InitParams params = CreateParams(Widget::InitParams::TYPE_WINDOW);
scoped_ptr<Widget> anchor_widget(new Widget);
anchor_widget->Init(params);
anchor_widget->Show();
@@ -129,8 +137,7 @@ TEST_F(BubbleDelegateTest, CloseAnchorWidget) {
TEST_F(BubbleDelegateTest, ResetAnchorWidget) {
// Create the anchor and parent widgets.
- Widget::InitParams params(Widget::InitParams::TYPE_WINDOW);
- params.ownership = views::Widget::InitParams::WIDGET_OWNS_NATIVE_WIDGET;
+ Widget::InitParams params = CreateParams(Widget::InitParams::TYPE_WINDOW);
scoped_ptr<Widget> anchor_widget(new Widget);
anchor_widget->Init(params);
anchor_widget->Show();
@@ -183,7 +190,14 @@ TEST_F(BubbleDelegateTest, ResetAnchorWidget) {
}
TEST_F(BubbleDelegateTest, InitiallyFocusedView) {
- TestBubbleDelegateView* bubble_delegate = new TestBubbleDelegateView();
+ // Create the anchor and parent widgets.
+ Widget::InitParams params = CreateParams(Widget::InitParams::TYPE_WINDOW);
+ scoped_ptr<Widget> anchor_widget(new Widget);
+ anchor_widget->Init(params);
+ anchor_widget->Show();
+
+ TestBubbleDelegateView* bubble_delegate =
+ new TestBubbleDelegateView(anchor_widget->GetContentsView());
Widget* bubble_widget = BubbleDelegateView::CreateBubble(bubble_delegate);
bubble_widget->Show();
diff --git a/ui/views/bubble/bubble_frame_view_unittest.cc b/ui/views/bubble/bubble_frame_view_unittest.cc
index e2835a7..a922e80 100644
--- a/ui/views/bubble/bubble_frame_view_unittest.cc
+++ b/ui/views/bubble/bubble_frame_view_unittest.cc
@@ -24,7 +24,7 @@ const int kDefaultMargin = 6;
class SizedBubbleDelegateView : public BubbleDelegateView {
public:
- SizedBubbleDelegateView();
+ SizedBubbleDelegateView(View* anchor_view);
virtual ~SizedBubbleDelegateView();
// View overrides:
@@ -34,7 +34,9 @@ class SizedBubbleDelegateView : public BubbleDelegateView {
DISALLOW_COPY_AND_ASSIGN(SizedBubbleDelegateView);
};
-SizedBubbleDelegateView::SizedBubbleDelegateView() {}
+SizedBubbleDelegateView::SizedBubbleDelegateView(View* anchor_view)
+ : BubbleDelegateView(anchor_view, BubbleBorder::TOP_LEFT) {
+}
SizedBubbleDelegateView::~SizedBubbleDelegateView() {}
@@ -87,7 +89,14 @@ TEST_F(BubbleFrameViewTest, GetBoundsForClientView) {
}
TEST_F(BubbleFrameViewTest, NonClientHitTest) {
- BubbleDelegateView* delegate = new SizedBubbleDelegateView();
+ // Create the anchor and parent widgets.
+ Widget::InitParams params = CreateParams(Widget::InitParams::TYPE_WINDOW);
+ scoped_ptr<Widget> anchor_widget(new Widget);
+ anchor_widget->Init(params);
+ anchor_widget->Show();
+
+ BubbleDelegateView* delegate =
+ new SizedBubbleDelegateView(anchor_widget->GetContentsView());
Widget* widget(BubbleDelegateView::CreateBubble(delegate));
delegate->Show();
gfx::Point kPtInBound(100, 100);
diff --git a/ui/views/controls/combobox/native_combobox_views_unittest.cc b/ui/views/controls/combobox/native_combobox_views_unittest.cc
index ae4b6bf..0fe8bbb 100644
--- a/ui/views/controls/combobox/native_combobox_views_unittest.cc
+++ b/ui/views/controls/combobox/native_combobox_views_unittest.cc
@@ -102,7 +102,7 @@ class NativeComboboxViewsTest : public ViewsTestBase {
combobox_->set_id(1);
widget_ = new Widget;
- Widget::InitParams params(Widget::InitParams::TYPE_POPUP);
+ Widget::InitParams params = CreateParams(Widget::InitParams::TYPE_POPUP);
params.bounds = gfx::Rect(100, 100, 100, 100);
widget_->Init(params);
View* container = new View();
@@ -180,7 +180,7 @@ TEST_F(NativeComboboxViewsTest, DisabilityTest) {
ASSERT_FALSE(combobox_->GetNativeWrapperForTesting());
widget_ = new Widget;
- Widget::InitParams params(Widget::InitParams::TYPE_POPUP);
+ Widget::InitParams params = CreateParams(Widget::InitParams::TYPE_POPUP);
params.bounds = gfx::Rect(100, 100, 100, 100);
widget_->Init(params);
View* container = new View();
diff --git a/ui/views/controls/native/native_view_host_unittest.cc b/ui/views/controls/native/native_view_host_unittest.cc
index 63d9c8c..93e34c2 100644
--- a/ui/views/controls/native/native_view_host_unittest.cc
+++ b/ui/views/controls/native/native_view_host_unittest.cc
@@ -78,8 +78,8 @@ HWND GetNativeParent(HWND window) {
TEST_F(NativeViewHostTest, NativeViewHierarchyChanged) {
// Create the top level widget.
scoped_ptr<Widget> toplevel(new Widget);
- Widget::InitParams toplevel_params(Widget::InitParams::TYPE_WINDOW);
- toplevel_params.ownership = Widget::InitParams::WIDGET_OWNS_NATIVE_WIDGET;
+ Widget::InitParams toplevel_params =
+ CreateParams(Widget::InitParams::TYPE_POPUP);
toplevel->Init(toplevel_params);
toplevel->SetContentsView(new View);
diff --git a/ui/views/controls/scrollbar/scrollbar_unittest.cc b/ui/views/controls/scrollbar/scrollbar_unittest.cc
index 098acda..41c119e 100644
--- a/ui/views/controls/scrollbar/scrollbar_unittest.cc
+++ b/ui/views/controls/scrollbar/scrollbar_unittest.cc
@@ -64,7 +64,7 @@ class NativeScrollBarTest : public ViewsTestBase {
native_scrollbar_->set_controller(controller_.get());
widget_ = new Widget;
- Widget::InitParams params(Widget::InitParams::TYPE_POPUP);
+ Widget::InitParams params = CreateParams(Widget::InitParams::TYPE_POPUP);
params.bounds = gfx::Rect(0, 0, 100, 100);
widget_->Init(params);
View* container = new View();
diff --git a/ui/views/controls/tabbed_pane/tabbed_pane_unittest.cc b/ui/views/controls/tabbed_pane/tabbed_pane_unittest.cc
index 3127d21..388ce63 100644
--- a/ui/views/controls/tabbed_pane/tabbed_pane_unittest.cc
+++ b/ui/views/controls/tabbed_pane/tabbed_pane_unittest.cc
@@ -55,8 +55,7 @@ class TabbedPaneTest : public ViewsTestBase {
void TabbedPaneTest::SetUp() {
ViewsTestBase::SetUp();
widget_.reset(new Widget());
- Widget::InitParams params(Widget::InitParams::TYPE_POPUP);
- params.ownership = views::Widget::InitParams::WIDGET_OWNS_NATIVE_WIDGET;
+ Widget::InitParams params = CreateParams(Widget::InitParams::TYPE_POPUP);
params.bounds = gfx::Rect(0, 0, 100, 100);
widget_->Init(params);
tabbed_pane_ = new TabbedPane();
diff --git a/ui/views/controls/textfield/native_textfield_views_unittest.cc b/ui/views/controls/textfield/native_textfield_views_unittest.cc
index 74f3ee0d..e599e7c 100644
--- a/ui/views/controls/textfield/native_textfield_views_unittest.cc
+++ b/ui/views/controls/textfield/native_textfield_views_unittest.cc
@@ -161,7 +161,7 @@ class NativeTextfieldViewsTest : public ViewsTestBase,
textfield_ = new TestTextfield(style);
textfield_->SetController(this);
widget_ = new Widget;
- Widget::InitParams params(Widget::InitParams::TYPE_POPUP);
+ Widget::InitParams params = CreateParams(Widget::InitParams::TYPE_POPUP);
params.bounds = gfx::Rect(100, 100, 100, 100);
widget_->Init(params);
View* container = new View();
diff --git a/ui/views/focus/focus_manager_test.cc b/ui/views/focus/focus_manager_test.cc
index 4344f12..2868112 100644
--- a/ui/views/focus/focus_manager_test.cc
+++ b/ui/views/focus/focus_manager_test.cc
@@ -30,8 +30,13 @@ FocusManager* FocusManagerTest::GetFocusManager() {
void FocusManagerTest::SetUp() {
ViewsTestBase::SetUp();
- Widget* widget =
- Widget::CreateWindowWithBounds(this, gfx::Rect(0, 0, 1024, 768));
+
+ Widget* widget = new Widget;
+ Widget::InitParams params = CreateParams(Widget::InitParams::TYPE_WINDOW);
+ params.delegate = this;
+ params.bounds = gfx::Rect(0, 0, 1024, 768);
+ widget->Init(params);
+
InitContentView();
widget->Show();
}
diff --git a/ui/views/focus/focus_manager_unittest.cc b/ui/views/focus/focus_manager_unittest.cc
index 5c5dcf7..6b7bef6 100644
--- a/ui/views/focus/focus_manager_unittest.cc
+++ b/ui/views/focus/focus_manager_unittest.cc
@@ -136,9 +136,7 @@ TEST_F(FocusManagerTest, WidgetFocusChangeListener) {
TestWidgetFocusChangeListener widget_listener;
AddWidgetFocusChangeListener(&widget_listener);
- Widget::InitParams params;
- params.type = views::Widget::InitParams::TYPE_WINDOW;
- params.ownership = views::Widget::InitParams::WIDGET_OWNS_NATIVE_WIDGET;
+ Widget::InitParams params = CreateParams(Widget::InitParams::TYPE_WINDOW);
params.bounds = gfx::Rect(10, 10, 100, 100);
params.parent_widget = GetWidget();
diff --git a/ui/views/test/views_test_base.cc b/ui/views/test/views_test_base.cc
index 3d3fe64..ac0b497 100644
--- a/ui/views/test/views_test_base.cc
+++ b/ui/views/test/views_test_base.cc
@@ -9,6 +9,7 @@
#if defined(USE_AURA)
#include "ui/aura/env.h"
+#include "ui/aura/root_window.h"
#include "ui/aura/test/aura_test_helper.h"
#endif
@@ -59,4 +60,14 @@ void ViewsTestBase::RunPendingMessages() {
run_loop.RunUntilIdle();
}
+Widget::InitParams ViewsTestBase::CreateParams(
+ Widget::InitParams::Type type) {
+ Widget::InitParams params(type);
+ params.ownership = views::Widget::InitParams::WIDGET_OWNS_NATIVE_WIDGET;
+#if defined(USE_AURA)
+ params.context = aura_test_helper_->root_window();
+#endif
+ return params;
+}
+
} // namespace views
diff --git a/ui/views/test/views_test_base.h b/ui/views/test/views_test_base.h
index 267cc31..6866f06 100644
--- a/ui/views/test/views_test_base.h
+++ b/ui/views/test/views_test_base.h
@@ -44,6 +44,11 @@ class ViewsTestBase : public testing::Test {
MessageLoop* message_loop() { return &message_loop_; }
+ // Creates a widget of |type| with any platform specific data for use in
+ // cross-platform tests. Will also set WIDGET_OWNS_NATIVE_WIDGET, which most
+ // unit tests want.
+ Widget::InitParams CreateParams(Widget::InitParams::Type type);
+
private:
MessageLoopForUI message_loop_;
scoped_ptr<TestViewsDelegate> views_delegate_;
diff --git a/ui/views/view_unittest.cc b/ui/views/view_unittest.cc
index 2e0a98b..abe5545 100644
--- a/ui/views/view_unittest.cc
+++ b/ui/views/view_unittest.cc
@@ -390,8 +390,7 @@ TEST_F(ViewTest, MouseEvent) {
v2->SetBoundsRect(gfx::Rect(100, 100, 100, 100));
scoped_ptr<Widget> widget(new Widget);
- Widget::InitParams params(Widget::InitParams::TYPE_POPUP);
- params.ownership = views::Widget::InitParams::WIDGET_OWNS_NATIVE_WIDGET;
+ Widget::InitParams params = CreateParams(Widget::InitParams::TYPE_POPUP);
params.bounds = gfx::Rect(50, 50, 650, 650);
widget->Init(params);
internal::RootView* root =
@@ -452,8 +451,7 @@ TEST_F(ViewTest, DeleteOnPressed) {
v2->Reset();
scoped_ptr<Widget> widget(new Widget);
- Widget::InitParams params(Widget::InitParams::TYPE_POPUP);
- params.ownership = views::Widget::InitParams::WIDGET_OWNS_NATIVE_WIDGET;
+ Widget::InitParams params = CreateParams(Widget::InitParams::TYPE_POPUP);
params.bounds = gfx::Rect(50, 50, 650, 650);
widget->Init(params);
View* root = widget->GetRootView();
@@ -508,8 +506,7 @@ TEST_F(ViewTest, TouchEvent) {
v3->SetBoundsRect(gfx::Rect(0, 0, 100, 100));
scoped_ptr<Widget> widget(new Widget());
- Widget::InitParams params(Widget::InitParams::TYPE_POPUP);
- params.ownership = views::Widget::InitParams::WIDGET_OWNS_NATIVE_WIDGET;
+ Widget::InitParams params = CreateParams(Widget::InitParams::TYPE_POPUP);
params.bounds = gfx::Rect(50, 50, 650, 650);
widget->Init(params);
internal::RootView* root =
@@ -608,8 +605,7 @@ TEST_F(ViewTest, GestureEvent) {
v3->SetBoundsRect(gfx::Rect(0, 0, 100, 100));
scoped_ptr<Widget> widget(new Widget());
- Widget::InitParams params(Widget::InitParams::TYPE_POPUP);
- params.ownership = views::Widget::InitParams::WIDGET_OWNS_NATIVE_WIDGET;
+ Widget::InitParams params = CreateParams(Widget::InitParams::TYPE_POPUP);
params.bounds = gfx::Rect(50, 50, 650, 650);
widget->Init(params);
internal::RootView* root =
@@ -674,8 +670,7 @@ TEST_F(ViewTest, ScrollGestureEvent) {
v3->SetBoundsRect(gfx::Rect(0, 0, 100, 100));
scoped_ptr<Widget> widget(new Widget());
- Widget::InitParams params(Widget::InitParams::TYPE_POPUP);
- params.ownership = views::Widget::InitParams::WIDGET_OWNS_NATIVE_WIDGET;
+ Widget::InitParams params = CreateParams(Widget::InitParams::TYPE_POPUP);
params.bounds = gfx::Rect(50, 50, 650, 650);
widget->Init(params);
internal::RootView* root =
@@ -983,7 +978,8 @@ void RotateClockwise(gfx::Transform* transform) {
TEST_F(ViewTest, HitTestMasks) {
Widget* widget = new Widget;
- widget->Init(Widget::InitParams(Widget::InitParams::TYPE_POPUP));
+ Widget::InitParams params = CreateParams(Widget::InitParams::TYPE_POPUP);
+ widget->Init(params);
View* root_view = widget->GetRootView();
root_view->SetBoundsRect(gfx::Rect(0, 0, 500, 500));
@@ -1039,7 +1035,8 @@ TEST_F(ViewTest, HitTestMasks) {
TEST_F(ViewTest, NotifyEnterExitOnChild) {
Widget* widget = new Widget;
- widget->Init(Widget::InitParams(Widget::InitParams::TYPE_POPUP));
+ Widget::InitParams params = CreateParams(Widget::InitParams::TYPE_POPUP);
+ widget->Init(params);
View* root_view = widget->GetRootView();
root_view->SetBoundsRect(gfx::Rect(0, 0, 500, 500));
@@ -1174,7 +1171,7 @@ TEST_F(ViewTest, Textfield) {
const string16 kEmptyString;
Widget* widget = new Widget;
- Widget::InitParams params(Widget::InitParams::TYPE_POPUP);
+ Widget::InitParams params = CreateParams(Widget::InitParams::TYPE_POPUP);
params.bounds = gfx::Rect(0, 0, 100, 100);
widget->Init(params);
View* root_view = widget->GetRootView();
@@ -1212,7 +1209,7 @@ TEST_F(ViewTest, TextfieldCutCopyPaste) {
ui::Clipboard* clipboard = ui::Clipboard::GetForCurrentThread();
Widget* widget = new Widget;
- Widget::InitParams params(Widget::InitParams::TYPE_POPUP);
+ Widget::InitParams params = CreateParams(Widget::InitParams::TYPE_POPUP);
params.bounds = gfx::Rect(0, 0, 100, 100);
widget->Init(params);
View* root_view = widget->GetRootView();
@@ -1334,8 +1331,7 @@ TEST_F(ViewTest, ActivateAccelerator) {
// Create a window and add the view as its child.
scoped_ptr<Widget> widget(new Widget);
- Widget::InitParams params(Widget::InitParams::TYPE_POPUP);
- params.ownership = views::Widget::InitParams::WIDGET_OWNS_NATIVE_WIDGET;
+ Widget::InitParams params = CreateParams(Widget::InitParams::TYPE_POPUP);
params.bounds = gfx::Rect(0, 0, 100, 100);
widget->Init(params);
View* root = widget->GetRootView();
@@ -1399,8 +1395,7 @@ TEST_F(ViewTest, HiddenViewWithAccelerator) {
EXPECT_EQ(view->accelerator_count_map_[return_accelerator], 0);
scoped_ptr<Widget> widget(new Widget);
- Widget::InitParams params(Widget::InitParams::TYPE_POPUP);
- params.ownership = views::Widget::InitParams::WIDGET_OWNS_NATIVE_WIDGET;
+ Widget::InitParams params = CreateParams(Widget::InitParams::TYPE_POPUP);
params.bounds = gfx::Rect(0, 0, 100, 100);
widget->Init(params);
View* root = widget->GetRootView();
@@ -1429,8 +1424,7 @@ TEST_F(ViewTest, ViewInHiddenWidgetWithAccelerator) {
EXPECT_EQ(view->accelerator_count_map_[return_accelerator], 0);
scoped_ptr<Widget> widget(new Widget);
- Widget::InitParams params(Widget::InitParams::TYPE_POPUP);
- params.ownership = views::Widget::InitParams::WIDGET_OWNS_NATIVE_WIDGET;
+ Widget::InitParams params = CreateParams(Widget::InitParams::TYPE_POPUP);
params.bounds = gfx::Rect(0, 0, 100, 100);
widget->Init(params);
View* root = widget->GetRootView();
@@ -1700,8 +1694,13 @@ class DefaultButtonTest : public ViewTest {
virtual void SetUp() OVERRIDE {
ViewTest::SetUp();
test_dialog_ = new TestDialog(NULL);
- Widget* window =
- Widget::CreateWindowWithBounds(test_dialog_, gfx::Rect(0, 0, 100, 100));
+
+ Widget* window = new Widget;
+ Widget::InitParams params = CreateParams(Widget::InitParams::TYPE_WINDOW);
+ params.delegate = test_dialog_;
+ params.bounds = gfx::Rect(0, 0, 100, 100);
+ window->Init(params);
+
test_dialog_->widget_ = window;
window->Show();
focus_manager_ = test_dialog_->contents_->GetFocusManager();
@@ -1811,8 +1810,13 @@ class ButtonDropDownTest : public ViewTest {
virtual void SetUp() OVERRIDE {
ViewTest::SetUp();
test_dialog_ = new TestDialog(new MockMenuModel());
- Widget* window =
- Widget::CreateWindowWithBounds(test_dialog_, gfx::Rect(0, 0, 100, 100));
+
+ Widget* window = new Widget;
+ Widget::InitParams params = CreateParams(Widget::InitParams::TYPE_WINDOW);
+ params.delegate = test_dialog_;
+ params.bounds = gfx::Rect(0, 0, 100, 100);
+ window->Init(params);
+
test_dialog_->widget_ = window;
window->Show();
test_dialog_->button_drop_->SetBoundsRect(gfx::Rect(0, 0, 100, 100));
@@ -2038,7 +2042,7 @@ TEST_F(ViewTest, TransformPaint) {
v2->SetBoundsRect(gfx::Rect(100, 100, 200, 100));
Widget* widget = new Widget;
- Widget::InitParams params(Widget::InitParams::TYPE_POPUP);
+ Widget::InitParams params = CreateParams(Widget::InitParams::TYPE_POPUP);
params.bounds = gfx::Rect(50, 50, 650, 650);
widget->Init(params);
widget->Show();
@@ -2077,7 +2081,7 @@ TEST_F(ViewTest, TransformEvent) {
v2->SetBoundsRect(gfx::Rect(100, 100, 200, 100));
Widget* widget = new Widget;
- Widget::InitParams params(Widget::InitParams::TYPE_POPUP);
+ Widget::InitParams params = CreateParams(Widget::InitParams::TYPE_POPUP);
params.bounds = gfx::Rect(50, 50, 650, 650);
widget->Init(params);
View* root = widget->GetRootView();
@@ -2214,8 +2218,7 @@ TEST_F(ViewTest, TransformVisibleBound) {
gfx::Rect viewport_bounds(0, 0, 100, 100);
scoped_ptr<Widget> widget(new Widget);
- Widget::InitParams params(Widget::InitParams::TYPE_POPUP);
- params.ownership = views::Widget::InitParams::WIDGET_OWNS_NATIVE_WIDGET;
+ Widget::InitParams params = CreateParams(Widget::InitParams::TYPE_POPUP);
params.bounds = viewport_bounds;
widget->Init(params);
widget->GetRootView()->SetBoundsRect(viewport_bounds);
@@ -2273,8 +2276,7 @@ TEST_F(ViewTest, OnVisibleBoundsChanged) {
gfx::Rect viewport_bounds(0, 0, 100, 100);
scoped_ptr<Widget> widget(new Widget);
- Widget::InitParams params(Widget::InitParams::TYPE_POPUP);
- params.ownership = views::Widget::InitParams::WIDGET_OWNS_NATIVE_WIDGET;
+ Widget::InitParams params = CreateParams(Widget::InitParams::TYPE_POPUP);
params.bounds = viewport_bounds;
widget->Init(params);
widget->GetRootView()->SetBoundsRect(viewport_bounds);
@@ -2448,8 +2450,7 @@ TEST_F(ViewTest, ConvertPointToViewWithTransform) {
// Tests conversion methods for rectangles.
TEST_F(ViewTest, ConvertRectWithTransform) {
scoped_ptr<Widget> widget(new Widget);
- Widget::InitParams params(Widget::InitParams::TYPE_POPUP);
- params.ownership = views::Widget::InitParams::WIDGET_OWNS_NATIVE_WIDGET;
+ Widget::InitParams params = CreateParams(Widget::InitParams::TYPE_POPUP);
params.bounds = gfx::Rect(50, 50, 650, 650);
widget->Init(params);
View* root = widget->GetRootView();
@@ -2920,7 +2921,7 @@ class ViewLayerTest : public ViewsTestBase {
View::set_use_acceleration_when_possible(true);
widget_ = new Widget;
- Widget::InitParams params(Widget::InitParams::TYPE_POPUP);
+ Widget::InitParams params = CreateParams(Widget::InitParams::TYPE_POPUP);
params.bounds = gfx::Rect(50, 50, 200, 200);
widget_->Init(params);
widget_->Show();
diff --git a/ui/views/views.gyp b/ui/views/views.gyp
index 9fe7274..d7d4101 100644
--- a/ui/views/views.gyp
+++ b/ui/views/views.gyp
@@ -692,9 +692,6 @@
'view_model_utils_unittest.cc',
'view_unittest.cc',
'widget/native_widget_aura_unittest.cc',
- 'widget/native_widget_test_utils.h',
- 'widget/native_widget_test_utils_aura.cc',
- 'widget/native_widget_test_utils_win.cc',
'widget/native_widget_unittest.cc',
'widget/native_widget_win_unittest.cc',
'widget/widget_unittest.cc',
diff --git a/ui/views/widget/native_widget_aura.cc b/ui/views/widget/native_widget_aura.cc
index 0d804a6..8efbcea 100644
--- a/ui/views/widget/native_widget_aura.cc
+++ b/ui/views/widget/native_widget_aura.cc
@@ -131,6 +131,11 @@ void NativeWidgetAura::InitNativeWidget(const Widget::InitParams& params) {
if (parent) {
parent->AddChild(window_);
} else {
+ // TODO(erg): Once I've threaded context through chrome, uncomment this
+ // check, which currently fails on the NULL == NULL case.
+ //
+ // DCHECK_NE(params.GetParent(), params.context);
+
// TODO(erg): Remove this NULL check once we've made everything in views
// actually pass us a context.
aura::RootWindow* root_window =
diff --git a/ui/views/widget/native_widget_aura_unittest.cc b/ui/views/widget/native_widget_aura_unittest.cc
index 7e06b79..ffa4cba 100644
--- a/ui/views/widget/native_widget_aura_unittest.cc
+++ b/ui/views/widget/native_widget_aura_unittest.cc
@@ -172,6 +172,7 @@ TEST_F(NativeWidgetAuraTest, ShowMaximizedDoesntBounceAround) {
Widget::InitParams params(Widget::InitParams::TYPE_WINDOW);
params.ownership = views::Widget::InitParams::WIDGET_OWNS_NATIVE_WIDGET;
params.parent = NULL;
+ params.context = root_window();
params.show_state = ui::SHOW_STATE_MAXIMIZED;
params.bounds = gfx::Rect(10, 10, 100, 200);
widget->Init(params);
@@ -183,6 +184,7 @@ TEST_F(NativeWidgetAuraTest, GetClientAreaScreenBounds) {
// Create a widget.
Widget::InitParams params(Widget::InitParams::TYPE_WINDOW);
params.ownership = views::Widget::InitParams::WIDGET_OWNS_NATIVE_WIDGET;
+ params.context = root_window();
params.bounds.SetRect(10, 20, 300, 400);
scoped_ptr<Widget> widget(new Widget());
widget->Init(params);
@@ -247,6 +249,7 @@ TEST_F(NativeWidgetAuraTest, DontCaptureOnGesture) {
scoped_ptr<TestWidget> widget(new TestWidget());
Widget::InitParams params(Widget::InitParams::TYPE_WINDOW);
params.ownership = views::Widget::InitParams::WIDGET_OWNS_NATIVE_WIDGET;
+ params.context = root_window();
params.bounds = gfx::Rect(0, 0, 100, 200);
widget->Init(params);
widget->SetContentsView(view);
@@ -282,6 +285,7 @@ TEST_F(NativeWidgetAuraTest, ReleaseCaptureOnTouchRelease) {
scoped_ptr<TestWidget> widget(new TestWidget());
Widget::InitParams params(Widget::InitParams::TYPE_WINDOW);
params.ownership = views::Widget::InitParams::WIDGET_OWNS_NATIVE_WIDGET;
+ params.context = root_window();
params.bounds = gfx::Rect(0, 0, 100, 200);
widget->Init(params);
widget->SetContentsView(view);
@@ -318,6 +322,7 @@ TEST_F(NativeWidgetAuraTest, PreferViewLayersToChildWindows) {
Widget::InitParams parent_params(Widget::InitParams::TYPE_WINDOW_FRAMELESS);
parent_params.ownership =
views::Widget::InitParams::WIDGET_OWNS_NATIVE_WIDGET;
+ parent_params.context = root_window();
parent->Init(parent_params);
parent->SetContentsView(parent_root);
parent->SetBounds(gfx::Rect(0, 0, 400, 400));
diff --git a/ui/views/widget/native_widget_unittest.cc b/ui/views/widget/native_widget_unittest.cc
index 1e2d197..133f8be0 100644
--- a/ui/views/widget/native_widget_unittest.cc
+++ b/ui/views/widget/native_widget_unittest.cc
@@ -7,7 +7,6 @@
#include "ui/views/test/views_test_base.h"
#include "ui/views/view.h"
#include "ui/views/widget/native_widget_private.h"
-#include "ui/views/widget/native_widget_test_utils.h"
#include "ui/views/widget/widget.h"
namespace views {
@@ -38,17 +37,36 @@ class NativeWidgetTest : public ViewsTestBase {
NativeWidgetTest() {}
virtual ~NativeWidgetTest() {}
+ internal::NativeWidgetPrivate* CreateNativeWidgetOfType(
+ Widget::InitParams::Type type) {
+ Widget* widget = new Widget;
+ Widget::InitParams params = CreateParams(type);
+ params.ownership = views::Widget::InitParams::NATIVE_WIDGET_OWNS_WIDGET;
+ params.child = false; // Implicitly set to true by ctor with TYPE_CONTROL.
+ params.bounds = gfx::Rect(10, 10, 200, 200);
+ widget->Init(params);
+ return widget->native_widget_private();
+ }
+
+ internal::NativeWidgetPrivate* CreateNativeWidget() {
+ return CreateNativeWidgetOfType(Widget::InitParams::TYPE_POPUP);
+ }
+
+ internal::NativeWidgetPrivate* CreateNativeSubWidget() {
+ return CreateNativeWidgetOfType(Widget::InitParams::TYPE_CONTROL);
+ }
+
private:
DISALLOW_COPY_AND_ASSIGN(NativeWidgetTest);
};
TEST_F(NativeWidgetTest, CreateNativeWidget) {
- ScopedTestWidget widget(internal::CreateNativeWidget());
+ ScopedTestWidget widget(CreateNativeWidget());
EXPECT_TRUE(widget->GetWidget()->GetNativeView() != NULL);
}
TEST_F(NativeWidgetTest, GetNativeWidgetForNativeView) {
- ScopedTestWidget widget(internal::CreateNativeWidget());
+ ScopedTestWidget widget(CreateNativeWidget());
EXPECT_EQ(widget.get(),
internal::NativeWidgetPrivate::GetNativeWidgetForNativeView(
widget->GetWidget()->GetNativeView()));
@@ -56,7 +74,7 @@ TEST_F(NativeWidgetTest, GetNativeWidgetForNativeView) {
// |widget| has the toplevel NativeWidget.
TEST_F(NativeWidgetTest, GetTopLevelNativeWidget1) {
- ScopedTestWidget widget(internal::CreateNativeWidget());
+ ScopedTestWidget widget(CreateNativeWidget());
EXPECT_EQ(widget.get(),
internal::NativeWidgetPrivate::GetTopLevelNativeWidget(
widget->GetWidget()->GetNativeView()));
@@ -64,15 +82,14 @@ TEST_F(NativeWidgetTest, GetTopLevelNativeWidget1) {
// |toplevel_widget| has the toplevel NativeWidget.
TEST_F(NativeWidgetTest, GetTopLevelNativeWidget2) {
- ScopedTestWidget toplevel_widget(internal::CreateNativeWidget());
+ ScopedTestWidget toplevel_widget(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();
+ internal::NativeWidgetPrivate* child_widget = CreateNativeSubWidget();
child_host->Attach(child_widget->GetWidget()->GetNativeView());
EXPECT_EQ(toplevel_widget.get(),
diff --git a/ui/views/widget/widget.h b/ui/views/widget/widget.h
index 3daac12..136ae6f 100644
--- a/ui/views/widget/widget.h
+++ b/ui/views/widget/widget.h
@@ -145,6 +145,10 @@ class VIEWS_EXPORT Widget : public internal::NativeWidgetDelegate,
// |parent| is returned.
gfx::NativeView GetParent() const;
+ // Will return the first of the following that isn't NULL: the native view,
+ // |parent|, |context|.
+ gfx::NativeView GetContext() const;
+
Type type;
// If NULL, a default implementation will be constructed.
WidgetDelegate* delegate;
@@ -191,9 +195,13 @@ class VIEWS_EXPORT Widget : public internal::NativeWidgetDelegate,
// Only used by NativeWidgetAura. Specifies the type of layer for the
// aura::Window. Default is LAYER_TEXTURED.
ui::LayerType layer_type;
- // Only used by Aura. Provides additional context (generally a RootWindow)
- // during creation to allow the widget to determine which desktop type it
- // will belong to. NULL is not allowed if you are using aura.
+ // Only used by Aura. Provides a context window whose RootWindow we be
+ // consulted during widget creation to determine where in the Window
+ // hierarchy this widget should be placed. (This is separate from |parent|;
+ // if you pass a RootWindow to |parent|, your window will be parented to
+ // |parent|. If you pass a RootWindow to |context|, we ask that RootWindow
+ // where it wants your window placed.) NULL is not allowed if you are using
+ // aura.
gfx::NativeView context;
};
diff --git a/ui/views/widget/widget_unittest.cc b/ui/views/widget/widget_unittest.cc
index f4d9381..5076137 100644
--- a/ui/views/widget/widget_unittest.cc
+++ b/ui/views/widget/widget_unittest.cc
@@ -137,65 +137,73 @@ class GestureCaptureView : public View {
DISALLOW_COPY_AND_ASSIGN(GestureCaptureView);
};
-typedef ViewsTestBase WidgetTest;
+class WidgetTest : public ViewsTestBase {
+ public:
+ WidgetTest() {}
+ virtual ~WidgetTest() {}
-NativeWidget* CreatePlatformNativeWidget(
- internal::NativeWidgetDelegate* delegate) {
- return new NativeWidgetPlatformForTest(delegate);
-}
+ NativeWidget* CreatePlatformNativeWidget(
+ internal::NativeWidgetDelegate* delegate) {
+ return new NativeWidgetPlatformForTest(delegate);
+ }
-Widget* CreateTopLevelPlatformWidget() {
- Widget* toplevel = new Widget;
- Widget::InitParams toplevel_params(Widget::InitParams::TYPE_WINDOW);
- toplevel_params.native_widget = CreatePlatformNativeWidget(toplevel);
- toplevel->Init(toplevel_params);
- return toplevel;
-}
+ Widget* CreateTopLevelPlatformWidget() {
+ Widget* toplevel = new Widget;
+ Widget::InitParams toplevel_params =
+ CreateParams(Widget::InitParams::TYPE_WINDOW);
+ toplevel_params.native_widget = CreatePlatformNativeWidget(toplevel);
+ toplevel->Init(toplevel_params);
+ return toplevel;
+ }
-Widget* CreateChildPlatformWidget(gfx::NativeView parent_native_view) {
- Widget* child = new Widget;
- Widget::InitParams child_params(Widget::InitParams::TYPE_CONTROL);
- child_params.native_widget = CreatePlatformNativeWidget(child);
- child_params.parent = parent_native_view;
- child->Init(child_params);
- child->SetContentsView(new View);
- return child;
-}
+ Widget* CreateChildPlatformWidget(gfx::NativeView parent_native_view) {
+ Widget* child = new Widget;
+ Widget::InitParams child_params =
+ CreateParams(Widget::InitParams::TYPE_CONTROL);
+ child_params.native_widget = CreatePlatformNativeWidget(child);
+ child_params.parent = parent_native_view;
+ child->Init(child_params);
+ child->SetContentsView(new View);
+ return child;
+ }
#if defined(OS_WIN) && !defined(USE_AURA)
-// On Windows, it is possible for us to have a child window that is TYPE_POPUP.
-Widget* CreateChildPopupPlatformWidget(gfx::NativeView parent_native_view) {
- Widget* child = new Widget;
- Widget::InitParams child_params(Widget::InitParams::TYPE_POPUP);
- child_params.child = true;
- child_params.native_widget = CreatePlatformNativeWidget(child);
- child_params.parent = parent_native_view;
- child->Init(child_params);
- child->SetContentsView(new View);
- return child;
-}
+ // On Windows, it is possible for us to have a child window that is
+ // TYPE_POPUP.
+ Widget* CreateChildPopupPlatformWidget(gfx::NativeView parent_native_view) {
+ Widget* child = new Widget;
+ Widget::InitParams child_params =
+ CreateParams(Widget::InitParams::TYPE_POPUP);
+ child_params.child = true;
+ child_params.native_widget = CreatePlatformNativeWidget(child);
+ child_params.parent = parent_native_view;
+ child->Init(child_params);
+ child->SetContentsView(new View);
+ return child;
+ }
#endif
-Widget* CreateTopLevelNativeWidget() {
- Widget* toplevel = new Widget;
- Widget::InitParams params(Widget::InitParams::TYPE_WINDOW);
- toplevel->Init(params);
- toplevel->SetContentsView(new View);
- return toplevel;
-}
+ Widget* CreateTopLevelNativeWidget() {
+ Widget* toplevel = new Widget;
+ Widget::InitParams params = CreateParams(Widget::InitParams::TYPE_WINDOW);
+ toplevel->Init(params);
+ toplevel->SetContentsView(new View);
+ return toplevel;
+ }
-Widget* CreateChildNativeWidgetWithParent(Widget* parent) {
- Widget* child = new Widget;
- Widget::InitParams params(Widget::InitParams::TYPE_CONTROL);
- params.parent_widget = parent;
- child->Init(params);
- child->SetContentsView(new View);
- return child;
-}
+ Widget* CreateChildNativeWidgetWithParent(Widget* parent) {
+ Widget* child = new Widget;
+ Widget::InitParams params = CreateParams(Widget::InitParams::TYPE_CONTROL);
+ params.parent_widget = parent;
+ child->Init(params);
+ child->SetContentsView(new View);
+ return child;
+ }
-Widget* CreateChildNativeWidget() {
- return CreateChildNativeWidgetWithParent(NULL);
-}
+ Widget* CreateChildNativeWidget() {
+ return CreateChildNativeWidgetWithParent(NULL);
+ }
+};
bool WidgetHasMouseCapture(const Widget* widget) {
return static_cast<const internal::NativeWidgetPrivate*>(widget->
@@ -524,10 +532,9 @@ TEST_F(WidgetOwnershipTest, Ownership_WidgetOwnsPlatformNativeWidget) {
OwnershipTestState state;
scoped_ptr<Widget> widget(new OwnershipTestWidget(&state));
- Widget::InitParams params(Widget::InitParams::TYPE_POPUP);
+ Widget::InitParams params = CreateParams(Widget::InitParams::TYPE_POPUP);
params.native_widget =
new OwnershipTestNativeWidgetPlatform(widget.get(), &state);
- params.ownership = Widget::InitParams::WIDGET_OWNS_NATIVE_WIDGET;
widget->Init(params);
// Now delete the Widget, which should delete the NativeWidget.
@@ -545,10 +552,9 @@ TEST_F(WidgetOwnershipTest, Ownership_WidgetOwnsViewsNativeWidget) {
OwnershipTestState state;
scoped_ptr<Widget> widget(new OwnershipTestWidget(&state));
- Widget::InitParams params(Widget::InitParams::TYPE_POPUP);
+ Widget::InitParams params = CreateParams(Widget::InitParams::TYPE_POPUP);
params.native_widget =
new OwnershipTestNativeWidgetPlatform(widget.get(), &state);
- params.ownership = Widget::InitParams::WIDGET_OWNS_NATIVE_WIDGET;
widget->Init(params);
// Now delete the Widget, which should delete the NativeWidget.
@@ -570,11 +576,10 @@ TEST_F(WidgetOwnershipTest,
Widget* toplevel = CreateTopLevelPlatformWidget();
scoped_ptr<Widget> widget(new OwnershipTestWidget(&state));
- Widget::InitParams params(Widget::InitParams::TYPE_POPUP);
+ Widget::InitParams params = CreateParams(Widget::InitParams::TYPE_POPUP);
params.native_widget =
new OwnershipTestNativeWidgetPlatform(widget.get(), &state);
params.parent_widget = toplevel;
- params.ownership = Widget::InitParams::WIDGET_OWNS_NATIVE_WIDGET;
widget->Init(params);
// Now close the toplevel, which deletes the view hierarchy.