Home | History | Annotate | Download | only in test
      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 #ifndef UI_VIEWS_TEST_WIDGET_TEST_H_
      6 #define UI_VIEWS_TEST_WIDGET_TEST_H_
      7 
      8 #include "ui/gfx/native_widget_types.h"
      9 #include "ui/views/test/views_test_base.h"
     10 
     11 #if defined(USE_AURA)
     12 #include "ui/views/widget/native_widget_aura.h"
     13 #elif defined(OS_WIN)
     14 #include "ui/views/widget/native_widget_win.h"
     15 #endif
     16 
     17 namespace views {
     18 
     19 class NativeWidget;
     20 class Widget;
     21 
     22 namespace internal {
     23 
     24 class RootView;
     25 
     26 }  // namespace internal
     27 
     28 namespace test {
     29 
     30 #if defined(USE_AURA)
     31 // A typedef that inserts our mock-capture NativeWidget implementation for
     32 // relevant platforms.
     33 typedef NativeWidgetAura NativeWidgetPlatform;
     34 
     35 // A widget that assumes mouse capture always works. It won't on Aura in
     36 // testing, so we mock it.
     37 class NativeWidgetCapture : public NativeWidgetPlatform {
     38  public:
     39   explicit NativeWidgetCapture(internal::NativeWidgetDelegate* delegate);
     40   virtual ~NativeWidgetCapture();
     41 
     42   virtual void SetCapture() OVERRIDE;
     43   virtual void ReleaseCapture() OVERRIDE;
     44   virtual bool HasCapture() const OVERRIDE;
     45 
     46  private:
     47   bool mouse_capture_;
     48 
     49   DISALLOW_COPY_AND_ASSIGN(NativeWidgetCapture);
     50 };
     51 
     52 // A generic typedef to pick up relevant NativeWidget implementations.
     53 typedef NativeWidgetCapture NativeWidgetPlatformForTest;
     54 #elif defined(OS_WIN)
     55 typedef NativeWidgetWin NativeWidgetPlatform;
     56 typedef NativeWidgetWin NativeWidgetPlatformForTest;
     57 #endif
     58 
     59 class WidgetTest : public ViewsTestBase {
     60  public:
     61   WidgetTest();
     62   virtual ~WidgetTest();
     63 
     64   NativeWidget* CreatePlatformNativeWidget(
     65       internal::NativeWidgetDelegate* delegate);
     66 
     67   Widget* CreateTopLevelPlatformWidget();
     68 
     69   Widget* CreateTopLevelFramelessPlatformWidget();
     70 
     71   Widget* CreateChildPlatformWidget(gfx::NativeView parent_native_view);
     72 
     73 #if defined(OS_WIN) && !defined(USE_AURA)
     74   // On Windows, it is possible for us to have a child window that is
     75   // TYPE_POPUP.
     76   Widget* CreateChildPopupPlatformWidget(gfx::NativeView parent_native_view);
     77 #endif
     78 
     79   Widget* CreateTopLevelNativeWidget();
     80 
     81   Widget* CreateChildNativeWidgetWithParent(Widget* parent);
     82 
     83   Widget* CreateChildNativeWidget();
     84 
     85   View* GetMousePressedHandler(internal::RootView* root_view);
     86 
     87   View* GetMouseMoveHandler(internal::RootView* root_view);
     88 
     89   View* GetGestureHandler(internal::RootView* root_view);
     90 
     91  private:
     92   DISALLOW_COPY_AND_ASSIGN(WidgetTest);
     93 };
     94 
     95 }  // namespace test
     96 }  // namespace views
     97 
     98 #endif  // UI_VIEWS_TEST_WIDGET_TEST_H_
     99