Upstream version 5.34.92.0
[platform/framework/web/crosswalk.git] / src / chrome / browser / ui / views / frame / opaque_browser_frame_view_layout_delegate.h
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
8 namespace gfx {
9 class Size;
10 }
11
12 // Delegate interface to control layout decisions without having to depend on
13 // Browser{,Frame,View}.
14 class 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 base::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   // Whether we should show the (minimize,maximize,close) buttons. This can
36   // depend on the current state of the window (e.g., whether it is maximized).
37   virtual bool ShouldShowCaptionButtons() const = 0;
38
39   // Controls the visualization of the avatar
40   virtual bool ShouldShowAvatar() const = 0;
41
42   // Returns true if in guest mode or a non off the record session.
43   virtual bool IsRegularOrGuestSession() const = 0;
44
45   // We don't have a ThemeProvider in the layout manager, so plumb in the icon
46   // source here.
47   virtual gfx::ImageSkia GetOTRAvatarIcon() const = 0;
48
49   // Controls window state.
50   virtual bool IsMaximized() const = 0;
51   virtual bool IsMinimized() const = 0;
52   virtual bool IsFullscreen() const = 0;
53
54   virtual bool IsTabStripVisible() const = 0;
55   virtual int GetTabStripHeight() const = 0;
56
57   // Various platforms need to be able to add more space to the
58   // tabstrip. Windows 8 metro mode uses this to account for the window
59   // switcher button.
60   virtual int GetAdditionalReservedSpaceInTabStrip() const = 0;
61
62   // Returns the tabstrips preferred size so the frame layout can work around
63   // it.
64   virtual gfx::Size GetTabstripPreferredSize() const = 0;
65
66  protected:
67   virtual ~OpaqueBrowserFrameViewLayoutDelegate() {}
68 };
69
70 #endif  // CHROME_BROWSER_UI_VIEWS_FRAME_OPAQUE_BROWSER_FRAME_VIEW_LAYOUT_DELEGATE_H_