158537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)// Copyright 2013 The Chromium Authors. All rights reserved. 258537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 358537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)// found in the LICENSE file. 458537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 558537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)#ifndef UI_VIEWS_TEST_WIDGET_TEST_H_ 658537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)#define UI_VIEWS_TEST_WIDGET_TEST_H_ 758537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 858537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)#include "ui/gfx/native_widget_types.h" 958537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)#include "ui/views/test/views_test_base.h" 106d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) 116d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles)#if defined(USE_AURA) 1258537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)#include "ui/views/widget/native_widget_aura.h" 136d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles)#if !defined(OS_CHROMEOS) 146d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles)#include "ui/views/widget/desktop_aura/desktop_native_widget_aura.h" 156d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles)#endif 166d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles)#elif defined(OS_MACOSX) 176d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles)#include "ui/views/widget/native_widget_mac.h" 186d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles)#endif 196d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) 206d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles)namespace ui { 216d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles)class EventProcessor; 226d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles)} 2358537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 2458537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)namespace views { 2558537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 2658537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)class NativeWidget; 2758537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)class Widget; 2858537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 296d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles)#if defined(USE_AURA) 306d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles)typedef NativeWidgetAura PlatformNativeWidget; 316d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles)#if !defined(OS_CHROMEOS) 326d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles)typedef DesktopNativeWidgetAura PlatformDesktopNativeWidget; 336d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles)#endif 346d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles)#elif defined(OS_MACOSX) 356d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles)typedef NativeWidgetMac PlatformNativeWidget; 366d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles)typedef NativeWidgetMac PlatformDesktopNativeWidget; 376d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles)#endif 386d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) 3958537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)namespace internal { 4058537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 4158537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)class RootView; 4258537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 4358537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)} // namespace internal 4458537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 4558537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)namespace test { 4658537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 4758537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)// A widget that assumes mouse capture always works. It won't on Aura in 4858537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)// testing, so we mock it. 496d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles)class NativeWidgetCapture : public PlatformNativeWidget { 5058537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) public: 5158537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) explicit NativeWidgetCapture(internal::NativeWidgetDelegate* delegate); 5258537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) virtual ~NativeWidgetCapture(); 5358537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 5458537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) virtual void SetCapture() OVERRIDE; 5558537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) virtual void ReleaseCapture() OVERRIDE; 5658537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) virtual bool HasCapture() const OVERRIDE; 5758537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 5858537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) private: 5958537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) bool mouse_capture_; 6058537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 6158537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(NativeWidgetCapture); 6258537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)}; 6358537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 6458537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)class WidgetTest : public ViewsTestBase { 6558537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) public: 6658537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) WidgetTest(); 6758537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) virtual ~WidgetTest(); 6858537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 6958537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) NativeWidget* CreatePlatformNativeWidget( 7058537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) internal::NativeWidgetDelegate* delegate); 7158537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 7258537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) Widget* CreateTopLevelPlatformWidget(); 7358537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 7458537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) Widget* CreateTopLevelFramelessPlatformWidget(); 7558537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 7658537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) Widget* CreateChildPlatformWidget(gfx::NativeView parent_native_view); 7758537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 7858537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) Widget* CreateTopLevelNativeWidget(); 7958537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 8058537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) Widget* CreateChildNativeWidgetWithParent(Widget* parent); 8158537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 8258537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) Widget* CreateChildNativeWidget(); 8358537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 8458537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) View* GetMousePressedHandler(internal::RootView* root_view); 8558537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 8658537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) View* GetMouseMoveHandler(internal::RootView* root_view); 8758537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 8858537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) View* GetGestureHandler(internal::RootView* root_view); 8958537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 906d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) // Simulate a OS-level destruction of the native widget held by |widget|. 916d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) static void SimulateNativeDestroy(Widget* widget); 926d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) 936d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) // Return true if |window| is visible according to the native platform. 946d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) static bool IsNativeWindowVisible(gfx::NativeWindow window); 956d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) 966d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) // Return the event processor for |widget|. On aura platforms, this is an 976d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) // aura::WindowEventDispatcher. Otherwise, it is a bridge to the OS event 986d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) // processor. 996d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) static ui::EventProcessor* GetEventProcessor(Widget* widget); 1006d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) 10158537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) private: 10258537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(WidgetTest); 10358537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)}; 10458537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 10558537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)} // namespace test 10658537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)} // namespace views 10758537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 10858537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)#endif // UI_VIEWS_TEST_WIDGET_TEST_H_ 109