opaque_browser_frame_view_layout_delegate.h revision 8bcbed890bc3ce4d7a057a8f32cab53fa534672e
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_OPAQUE_BROWSER_FRAME_VIEW_LAYOUT_DELEGATE_H_
6#define CHROME_BROWSER_UI_VIEWS_FRAME_OPAQUE_BROWSER_FRAME_VIEW_LAYOUT_DELEGATE_H_
7
8namespace gfx {
9class Size;
10}
11
12// Delegate interface to control layout decisions without having to depend on
13// Browser{,Frame,View}.
14class OpaqueBrowserFrameViewLayoutDelegate {
15 public:
16  // Controls the visual placement of the window icon/title in non-tabstrip
17  // mode.
18  virtual bool ShouldShowWindowIcon() const = 0;
19  virtual bool ShouldShowWindowTitle() const = 0;
20  virtual string16 GetWindowTitle() const = 0;
21
22  // Returns the size of the window icon. This can be platform dependent
23  // because of differences in fonts, so its part of the interface.
24  virtual int GetIconSize() const = 0;
25
26  // Returns true if we should leave any offset at the frame caption. Typically
27  // when the frame is maximized/full screen we want to leave no offset at the
28  // top.
29  virtual bool ShouldLeaveOffsetNearTopBorder() const = 0;
30
31  // Returns the browser's minimum view size. Used because we need to calculate
32  // the minimum size for the entire non-client area.
33  virtual gfx::Size GetBrowserViewMinimumSize() const = 0;
34
35  // Controls the visualization of the avatar
36  virtual bool ShouldShowAvatar() const = 0;
37
38  // Returns true if in guest mode or a non off the record session.
39  virtual bool IsRegularOrGuestSession() const = 0;
40
41  // We don't have a ThemeProvider in the layout manager, so plumb in the icon
42  // source here.
43  virtual gfx::ImageSkia GetOTRAvatarIcon() const = 0;
44
45  // Controls window state.
46  virtual bool IsMaximized() const = 0;
47  virtual bool IsMinimized() const = 0;
48  virtual bool IsFullscreen() const = 0;
49
50  virtual bool IsTabStripVisible() const = 0;
51  virtual int GetTabStripHeight() const = 0;
52
53  // Various platforms need to be able to add more space to the
54  // tabstrip. Windows 8 metro mode uses this to account for the window
55  // switcher button.
56  virtual int GetAdditionalReservedSpaceInTabStrip() const = 0;
57
58  // Returns the tabstrips preferred size so the frame layout can work around
59  // it.
60  virtual gfx::Size GetTabstripPreferredSize() const = 0;
61
62 protected:
63  virtual ~OpaqueBrowserFrameViewLayoutDelegate() {}
64};
65
66#endif  // CHROME_BROWSER_UI_VIEWS_FRAME_OPAQUE_BROWSER_FRAME_VIEW_LAYOUT_DELEGATE_H_
67