| // 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. |
| |
| #ifndef UI_VIEWS_TEST_WIDGET_TEST_H_ |
| #define UI_VIEWS_TEST_WIDGET_TEST_H_ |
| |
| #include "ui/gfx/native_widget_types.h" |
| #include "ui/views/test/views_test_base.h" |
| |
| #if defined(USE_AURA) |
| #include "ui/views/widget/native_widget_aura.h" |
| #if !defined(OS_CHROMEOS) |
| #include "ui/views/widget/desktop_aura/desktop_native_widget_aura.h" |
| #endif |
| #elif defined(OS_MACOSX) |
| #include "ui/views/widget/native_widget_mac.h" |
| #endif |
| |
| namespace ui { |
| class EventProcessor; |
| } |
| |
| namespace views { |
| |
| class NativeWidget; |
| class Widget; |
| |
| #if defined(USE_AURA) |
| typedef NativeWidgetAura PlatformNativeWidget; |
| #if !defined(OS_CHROMEOS) |
| typedef DesktopNativeWidgetAura PlatformDesktopNativeWidget; |
| #endif |
| #elif defined(OS_MACOSX) |
| typedef NativeWidgetMac PlatformNativeWidget; |
| typedef NativeWidgetMac PlatformDesktopNativeWidget; |
| #endif |
| |
| namespace internal { |
| |
| class RootView; |
| |
| } // namespace internal |
| |
| namespace test { |
| |
| // A widget that assumes mouse capture always works. It won't on Aura in |
| // testing, so we mock it. |
| class NativeWidgetCapture : public PlatformNativeWidget { |
| public: |
| explicit NativeWidgetCapture(internal::NativeWidgetDelegate* delegate); |
| virtual ~NativeWidgetCapture(); |
| |
| virtual void SetCapture() OVERRIDE; |
| virtual void ReleaseCapture() OVERRIDE; |
| virtual bool HasCapture() const OVERRIDE; |
| |
| private: |
| bool mouse_capture_; |
| |
| DISALLOW_COPY_AND_ASSIGN(NativeWidgetCapture); |
| }; |
| |
| class WidgetTest : public ViewsTestBase { |
| public: |
| WidgetTest(); |
| virtual ~WidgetTest(); |
| |
| NativeWidget* CreatePlatformNativeWidget( |
| internal::NativeWidgetDelegate* delegate); |
| |
| Widget* CreateTopLevelPlatformWidget(); |
| |
| Widget* CreateTopLevelFramelessPlatformWidget(); |
| |
| Widget* CreateChildPlatformWidget(gfx::NativeView parent_native_view); |
| |
| Widget* CreateTopLevelNativeWidget(); |
| |
| Widget* CreateChildNativeWidgetWithParent(Widget* parent); |
| |
| Widget* CreateChildNativeWidget(); |
| |
| View* GetMousePressedHandler(internal::RootView* root_view); |
| |
| View* GetMouseMoveHandler(internal::RootView* root_view); |
| |
| View* GetGestureHandler(internal::RootView* root_view); |
| |
| // Simulate a OS-level destruction of the native widget held by |widget|. |
| static void SimulateNativeDestroy(Widget* widget); |
| |
| // Return true if |window| is visible according to the native platform. |
| static bool IsNativeWindowVisible(gfx::NativeWindow window); |
| |
| // Return the event processor for |widget|. On aura platforms, this is an |
| // aura::WindowEventDispatcher. Otherwise, it is a bridge to the OS event |
| // processor. |
| static ui::EventProcessor* GetEventProcessor(Widget* widget); |
| |
| private: |
| DISALLOW_COPY_AND_ASSIGN(WidgetTest); |
| }; |
| |
| } // namespace test |
| } // namespace views |
| |
| #endif // UI_VIEWS_TEST_WIDGET_TEST_H_ |