1// Copyright 2013 The Chromium Authors. All rights reserved. 2// Use of this source code is governed by a BSD-style license that can be 3// found in the LICENSE file. 4 5#include "ui/views/test/widget_test.h" 6 7#include "ui/gfx/native_widget_types.h" 8#include "ui/views/widget/root_view.h" 9 10namespace views { 11namespace test { 12 13// A widget that assumes mouse capture always works. It won't in testing, so we 14// mock it. 15NativeWidgetCapture::NativeWidgetCapture( 16 internal::NativeWidgetDelegate* delegate) 17 : PlatformNativeWidget(delegate), 18 mouse_capture_(false) {} 19 20NativeWidgetCapture::~NativeWidgetCapture() {} 21 22void NativeWidgetCapture::SetCapture() { 23 mouse_capture_ = true; 24} 25 26void NativeWidgetCapture::ReleaseCapture() { 27 if (mouse_capture_) 28 delegate()->OnMouseCaptureLost(); 29 mouse_capture_ = false; 30} 31 32bool NativeWidgetCapture::HasCapture() const { 33 return mouse_capture_; 34} 35 36WidgetTest::WidgetTest() {} 37WidgetTest::~WidgetTest() {} 38 39NativeWidget* WidgetTest::CreatePlatformNativeWidget( 40 internal::NativeWidgetDelegate* delegate) { 41 return new NativeWidgetCapture(delegate); 42} 43 44Widget* WidgetTest::CreateTopLevelPlatformWidget() { 45 Widget* toplevel = new Widget; 46 Widget::InitParams toplevel_params = 47 CreateParams(Widget::InitParams::TYPE_WINDOW); 48 toplevel_params.native_widget = CreatePlatformNativeWidget(toplevel); 49 toplevel->Init(toplevel_params); 50 return toplevel; 51} 52 53Widget* WidgetTest::CreateTopLevelFramelessPlatformWidget() { 54 Widget* toplevel = new Widget; 55 Widget::InitParams toplevel_params = 56 CreateParams(Widget::InitParams::TYPE_WINDOW_FRAMELESS); 57 toplevel_params.native_widget = CreatePlatformNativeWidget(toplevel); 58 toplevel->Init(toplevel_params); 59 return toplevel; 60} 61 62Widget* WidgetTest::CreateChildPlatformWidget( 63 gfx::NativeView parent_native_view) { 64 Widget* child = new Widget; 65 Widget::InitParams child_params = 66 CreateParams(Widget::InitParams::TYPE_CONTROL); 67 child_params.native_widget = CreatePlatformNativeWidget(child); 68 child_params.parent = parent_native_view; 69 child->Init(child_params); 70 child->SetContentsView(new View); 71 return child; 72} 73 74Widget* WidgetTest::CreateTopLevelNativeWidget() { 75 Widget* toplevel = new Widget; 76 Widget::InitParams params = CreateParams(Widget::InitParams::TYPE_WINDOW); 77 toplevel->Init(params); 78 return toplevel; 79} 80 81Widget* WidgetTest::CreateChildNativeWidgetWithParent(Widget* parent) { 82 Widget* child = new Widget; 83 Widget::InitParams params = CreateParams(Widget::InitParams::TYPE_CONTROL); 84 params.parent = parent->GetNativeView(); 85 child->Init(params); 86 child->SetContentsView(new View); 87 return child; 88} 89 90Widget* WidgetTest::CreateChildNativeWidget() { 91 return CreateChildNativeWidgetWithParent(NULL); 92} 93 94View* WidgetTest::GetMousePressedHandler(internal::RootView* root_view) { 95 return root_view->mouse_pressed_handler_; 96} 97 98View* WidgetTest::GetMouseMoveHandler(internal::RootView* root_view) { 99 return root_view->mouse_move_handler_; 100} 101 102View* WidgetTest::GetGestureHandler(internal::RootView* root_view) { 103 return root_view->gesture_handler_; 104} 105 106} // namespace test 107} // namespace views 108