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