| // Copyright 2013 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 "ui/views/test/widget_test.h" |
| |
| #include "ui/gfx/native_widget_types.h" |
| #include "ui/views/widget/root_view.h" |
| |
| namespace views { |
| namespace test { |
| |
| // A widget that assumes mouse capture always works. It won't in testing, so we |
| // mock it. |
| NativeWidgetCapture::NativeWidgetCapture( |
| internal::NativeWidgetDelegate* delegate) |
| : PlatformNativeWidget(delegate), |
| mouse_capture_(false) {} |
| |
| NativeWidgetCapture::~NativeWidgetCapture() {} |
| |
| void NativeWidgetCapture::SetCapture() { |
| mouse_capture_ = true; |
| } |
| |
| void NativeWidgetCapture::ReleaseCapture() { |
| if (mouse_capture_) |
| delegate()->OnMouseCaptureLost(); |
| mouse_capture_ = false; |
| } |
| |
| bool NativeWidgetCapture::HasCapture() const { |
| return mouse_capture_; |
| } |
| |
| WidgetTest::WidgetTest() {} |
| WidgetTest::~WidgetTest() {} |
| |
| NativeWidget* WidgetTest::CreatePlatformNativeWidget( |
| internal::NativeWidgetDelegate* delegate) { |
| return new NativeWidgetCapture(delegate); |
| } |
| |
| Widget* WidgetTest::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* WidgetTest::CreateTopLevelFramelessPlatformWidget() { |
| Widget* toplevel = new Widget; |
| Widget::InitParams toplevel_params = |
| CreateParams(Widget::InitParams::TYPE_WINDOW_FRAMELESS); |
| toplevel_params.native_widget = CreatePlatformNativeWidget(toplevel); |
| toplevel->Init(toplevel_params); |
| return toplevel; |
| } |
| |
| Widget* WidgetTest::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; |
| } |
| |
| Widget* WidgetTest::CreateTopLevelNativeWidget() { |
| Widget* toplevel = new Widget; |
| Widget::InitParams params = CreateParams(Widget::InitParams::TYPE_WINDOW); |
| toplevel->Init(params); |
| return toplevel; |
| } |
| |
| Widget* WidgetTest::CreateChildNativeWidgetWithParent(Widget* parent) { |
| Widget* child = new Widget; |
| Widget::InitParams params = CreateParams(Widget::InitParams::TYPE_CONTROL); |
| params.parent = parent->GetNativeView(); |
| child->Init(params); |
| child->SetContentsView(new View); |
| return child; |
| } |
| |
| Widget* WidgetTest::CreateChildNativeWidget() { |
| return CreateChildNativeWidgetWithParent(NULL); |
| } |
| |
| View* WidgetTest::GetMousePressedHandler(internal::RootView* root_view) { |
| return root_view->mouse_pressed_handler_; |
| } |
| |
| View* WidgetTest::GetMouseMoveHandler(internal::RootView* root_view) { |
| return root_view->mouse_move_handler_; |
| } |
| |
| View* WidgetTest::GetGestureHandler(internal::RootView* root_view) { |
| return root_view->gesture_handler_; |
| } |
| |
| } // namespace test |
| } // namespace views |