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 CHROME_BROWSER_UI_VIEWS_FRAME_BROWSER_FRAME_ASH_H_
6#define CHROME_BROWSER_UI_VIEWS_FRAME_BROWSER_FRAME_ASH_H_
7
8#include "base/basictypes.h"
9#include "base/memory/scoped_ptr.h"
10#include "chrome/browser/ui/views/frame/native_browser_frame.h"
11#include "ui/views/widget/native_widget_aura.h"
12
13class BrowserFrame;
14class BrowserView;
15
16////////////////////////////////////////////////////////////////////////////////
17//  BrowserFrameAsh
18//
19//  BrowserFrameAsh is a NativeWidgetAura subclass that provides the window
20//  frame for the Chrome browser window.
21//
22class BrowserFrameAsh : public views::NativeWidgetAura,
23                        public NativeBrowserFrame {
24 public:
25  static const char kWindowName[];
26
27  BrowserFrameAsh(BrowserFrame* browser_frame, BrowserView* browser_view);
28
29  BrowserView* browser_view() const { return browser_view_; }
30
31 protected:
32  // Overridden from views::NativeWidgetAura:
33  virtual void OnWindowDestroying(aura::Window* window) OVERRIDE;
34  virtual void OnWindowTargetVisibilityChanged(bool visible) OVERRIDE;
35
36  // Overridden from NativeBrowserFrame:
37  virtual views::NativeWidget* AsNativeWidget() OVERRIDE;
38  virtual const views::NativeWidget* AsNativeWidget() const OVERRIDE;
39  virtual bool UsesNativeSystemMenu() const OVERRIDE;
40  virtual int GetMinimizeButtonOffset() const OVERRIDE;
41  virtual bool ShouldSaveWindowPlacement() const OVERRIDE;
42  virtual void GetWindowPlacement(
43      gfx::Rect* bounds,
44      ui::WindowShowState* show_state) const OVERRIDE;
45
46
47  virtual ~BrowserFrameAsh();
48
49 private:
50  class WindowPropertyWatcher;
51
52  // Set the window into the auto managed mode.
53  void SetWindowAutoManaged();
54
55  // The BrowserView is our ClientView. This is a pointer to it.
56  BrowserView* browser_view_;
57
58  DISALLOW_COPY_AND_ASSIGN(BrowserFrameAsh);
59};
60
61#endif  // CHROME_BROWSER_UI_VIEWS_FRAME_BROWSER_FRAME_ASH_H_
62