15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved.
25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file.
45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifndef ASH_SHELL_TOPLEVEL_WINDOW_H_
65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define ASH_SHELL_TOPLEVEL_WINDOW_H_
75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/views/widget/widget_delegate.h"
95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace ash {
115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace shell {
125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class ToplevelWindow : public views::WidgetDelegateView {
145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public:
155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  struct CreateParams {
165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    CreateParams();
175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    bool can_resize;
195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    bool can_maximize;
205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  };
211e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  static views::Widget* CreateToplevelWindow(
221e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)      const CreateParams& params);
231e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)
241e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  // Clears saved show state and bounds used to position
251e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  // a new window.
261e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  static void ClearSavedStateForTest();
275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) private:
295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  explicit ToplevelWindow(const CreateParams& params);
305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual ~ToplevelWindow();
315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Overridden from views::View:
335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void OnPaint(gfx::Canvas* canvas) OVERRIDE;
345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Overridden from views::WidgetDelegate:
36c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  virtual base::string16 GetWindowTitle() const OVERRIDE;
374e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  virtual void SaveWindowPlacement(
384e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)      const gfx::Rect& bounds,
394e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)      ui::WindowShowState show_state) OVERRIDE;
404e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  virtual bool GetSavedWindowPlacement(
410f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)      const views::Widget* widget,
424e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)      gfx::Rect* bounds,
434e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)      ui::WindowShowState* show_state) const OVERRIDE;
445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual View* GetContentsView() OVERRIDE;
455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual bool CanResize() const OVERRIDE;
465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual bool CanMaximize() const OVERRIDE;
471320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  virtual bool CanMinimize() const OVERRIDE;
485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  const CreateParams params_;
505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  DISALLOW_COPY_AND_ASSIGN(ToplevelWindow);
525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}  // namespace shell
555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}  // namespace ash
565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif  // ASH_SHELL_TOPLEVEL_WINDOW_H_
58