1 // Copyright (c) 2012 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_TOPLEVEL_WINDOW_H_ 6 #define ASH_TEST_TOPLEVEL_WINDOW_H_ 7 8 #include "base/macros.h" 9 #include "ui/views/widget/widget_delegate.h" 10 11 namespace ash { 12 namespace shell { 13 14 class ToplevelWindow : public views::WidgetDelegateView { 15 public: 16 struct CreateParams { 17 CreateParams(); 18 19 bool can_resize; 20 bool can_maximize; 21 bool use_saved_placement; 22 }; 23 static views::Widget* CreateToplevelWindow(const CreateParams& params); 24 25 // Clears saved show state and bounds used to position 26 // a new window. 27 static void ClearSavedStateForTest(); 28 29 private: 30 explicit ToplevelWindow(const CreateParams& params); 31 ~ToplevelWindow() override; 32 33 // Overridden from views::View: 34 void OnPaint(gfx::Canvas* canvas) override; 35 36 // Overridden from views::WidgetDelegate: 37 void SaveWindowPlacement(const gfx::Rect& bounds, 38 ui::WindowShowState show_state) override; 39 bool GetSavedWindowPlacement(const views::Widget* widget, 40 gfx::Rect* bounds, 41 ui::WindowShowState* show_state) const override; 42 43 bool use_saved_placement_ = true; 44 45 DISALLOW_COPY_AND_ASSIGN(ToplevelWindow); 46 }; 47 48 } // namespace shell 49 } // namespace ash 50 51 #endif // ASH_TEST_TOPLEVEL_WINDOW_H_ 52