diff options
author | erg@chromium.org <erg@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-12-05 09:00:44 +0000 |
---|---|---|
committer | erg@chromium.org <erg@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-12-05 09:00:44 +0000 |
commit | 5209d23549608b1cd758cfc2f26961908bcd83e5 (patch) | |
tree | 4814b92b8c4be6e14c51006654fca74c9628f561 | |
parent | 678c036ef6be9f5e845f2e75a8b1bbd76985768d (diff) | |
download | chromium_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
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. |