Home | History | Annotate | Download | only in test
      1 // Copyright 2014 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 ASH_TEST_CHILD_MODAL_WINDOW_H_
      6 #define ASH_TEST_CHILD_MODAL_WINDOW_H_
      7 
      8 #include "ui/views/controls/button/button.h"
      9 #include "ui/views/widget/widget_delegate.h"
     10 #include "ui/views/widget/widget_observer.h"
     11 
     12 namespace views {
     13 class LabelButton;
     14 class NativeViewHost;
     15 class Textfield;
     16 class View;
     17 class Widget;
     18 }
     19 
     20 namespace ash {
     21 namespace test {
     22 
     23 void CreateChildModalParent(gfx::NativeView context);
     24 
     25 class ChildModalParent : public views::WidgetDelegateView,
     26                          public views::ButtonListener,
     27                          public views::WidgetObserver {
     28  public:
     29   ChildModalParent(gfx::NativeView context);
     30   virtual ~ChildModalParent();
     31 
     32   void ShowChild();
     33   gfx::NativeWindow GetModalParent() const;
     34   gfx::NativeWindow GetChild() const;
     35 
     36  private:
     37   views::Widget* CreateChild();
     38 
     39   // Overridden from views::WidgetDelegate:
     40   virtual View* GetContentsView() OVERRIDE;
     41   virtual base::string16 GetWindowTitle() const OVERRIDE;
     42   virtual bool CanResize() const OVERRIDE;
     43   virtual void DeleteDelegate() OVERRIDE;
     44 
     45   // Overridden from views::View:
     46   virtual void Layout() OVERRIDE;
     47   virtual void ViewHierarchyChanged(
     48       const ViewHierarchyChangedDetails& details) OVERRIDE;
     49 
     50   // Overridden from ButtonListener:
     51   virtual void ButtonPressed(views::Button* sender,
     52                              const ui::Event& event) OVERRIDE;
     53 
     54   // Overridden from WidgetObserver:
     55   virtual void OnWidgetDestroying(views::Widget* widget) OVERRIDE;
     56 
     57   // The button to toggle showing and hiding the child window. The child window
     58   // does not block input to this button.
     59   views::LabelButton* button_;
     60 
     61   // The text field to indicate the keyboard focus.
     62   views::Textfield* textfield_;
     63 
     64   // The host for the modal parent.
     65   views::NativeViewHost* host_;
     66 
     67   // The modal parent of the child window. The child window blocks input to this
     68   // view.
     69   gfx::NativeWindow modal_parent_;
     70 
     71   // The child window.
     72   views::Widget* child_;
     73 
     74   DISALLOW_COPY_AND_ASSIGN(ChildModalParent);
     75 };
     76 
     77 }  // namespace test
     78 }  // namespace ash
     79 
     80 #endif  // ASH_TEST_CHILD_MODAL_WINDOW_H_
     81