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 CHROME_BROWSER_UI_VIEWS_FRAME_NATIVE_BROWSER_FRAME_H_
6#define CHROME_BROWSER_UI_VIEWS_FRAME_NATIVE_BROWSER_FRAME_H_
7
8#include "ui/base/ui_base_types.h"
9#include "ui/gfx/rect.h"
10
11class BrowserFrame;
12class BrowserView;
13
14namespace views {
15class NativeWidget;
16}
17
18class NativeBrowserFrame {
19 public:
20  virtual ~NativeBrowserFrame() {}
21
22  virtual views::NativeWidget* AsNativeWidget() = 0;
23  virtual const views::NativeWidget* AsNativeWidget() const = 0;
24
25  // Returns true if the OS takes care of showing the system menu. Returning
26  // false means BrowserFrame handles showing the system menu.
27  virtual bool UsesNativeSystemMenu() const = 0;
28
29  // Returns true when the window placement should be stored.
30  virtual bool ShouldSaveWindowPlacement() const = 0;
31
32  // Retrieves the window placement (show state and bounds) for restoring.
33  virtual void GetWindowPlacement(gfx::Rect* bounds,
34                                  ui::WindowShowState* show_state) const = 0;
35
36 protected:
37  friend class BrowserFrame;
38
39  // BrowserFrame pass-thrus ---------------------------------------------------
40  // See browser_frame.h for documentation:
41  virtual int GetMinimizeButtonOffset() const = 0;
42};
43
44#endif  // CHROME_BROWSER_UI_VIEWS_FRAME_NATIVE_BROWSER_FRAME_H_
45