| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 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 | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #ifndef CHROME_BROWSER_UI_VIEWS_FRAME_BROWSER_VIEW_LAYOUT_H_ | 5 #ifndef CHROME_BROWSER_UI_VIEWS_FRAME_BROWSER_VIEW_LAYOUT_H_ |
| 6 #define CHROME_BROWSER_UI_VIEWS_FRAME_BROWSER_VIEW_LAYOUT_H_ | 6 #define CHROME_BROWSER_UI_VIEWS_FRAME_BROWSER_VIEW_LAYOUT_H_ |
| 7 | 7 |
| 8 #include "base/basictypes.h" | 8 #include "base/basictypes.h" |
| 9 #include "base/compiler_specific.h" | 9 #include "base/compiler_specific.h" |
| 10 #include "base/gtest_prod_util.h" |
| 10 #include "base/memory/scoped_ptr.h" | 11 #include "base/memory/scoped_ptr.h" |
| 11 #include "ui/gfx/rect.h" | 12 #include "ui/gfx/rect.h" |
| 12 #include "ui/views/layout/layout_manager.h" | 13 #include "ui/views/layout/layout_manager.h" |
| 13 | 14 |
| 14 class BookmarkBarView; | 15 class BookmarkBarView; |
| 15 class Browser; | 16 class Browser; |
| 16 class BrowserView; | 17 class BrowserView; |
| 17 class ContentsContainer; | 18 class ContentsContainer; |
| 18 class DownloadShelfView; | 19 class DownloadShelfView; |
| 19 class TabContentsContainer; | 20 class TabContentsContainer; |
| 20 class TabStrip; | 21 class TabStrip; |
| 21 class ToolbarView; | 22 class ToolbarView; |
| 22 class WebContentsModalDialogHost; | 23 class WebContentsModalDialogHost; |
| 23 | 24 |
| 24 namespace gfx { | 25 namespace gfx { |
| 25 class Point; | 26 class Point; |
| 26 class Size; | 27 class Size; |
| 27 } | 28 } |
| 28 | 29 |
| 29 namespace views { | 30 namespace views { |
| 30 class SingleSplitView; | 31 class SingleSplitView; |
| 31 } | 32 } |
| 32 | 33 |
| 33 // The layout manager used in chrome browser. | 34 // The layout manager used in chrome browser. |
| 34 class BrowserViewLayout : public views::LayoutManager { | 35 class BrowserViewLayout : public views::LayoutManager { |
| 35 public: | 36 public: |
| 36 // The vertical overlap between the TabStrip and the Toolbar. | 37 // The vertical overlap between the TabStrip and the Toolbar. |
| 37 static const int kToolbarTabStripVerticalOverlap; | 38 static const int kToolbarTabStripVerticalOverlap; |
| 38 | 39 |
| 39 BrowserViewLayout(); | 40 explicit BrowserViewLayout(Browser* browser); |
| 40 virtual ~BrowserViewLayout(); | 41 virtual ~BrowserViewLayout(); |
| 41 | 42 |
| 42 WebContentsModalDialogHost* GetWebContentsModalDialogHost(); | 43 WebContentsModalDialogHost* GetWebContentsModalDialogHost(); |
| 43 | 44 |
| 44 // Returns the minimum size of the browser view. | 45 // Returns the minimum size of the browser view. |
| 45 gfx::Size GetMinimumSize(); | 46 gfx::Size GetMinimumSize(); |
| 46 | 47 |
| 47 // Returns the bounding box for the find bar. | 48 // Returns the bounding box for the find bar. |
| 48 gfx::Rect GetFindBarBoundingBox() const; | 49 gfx::Rect GetFindBarBoundingBox() const; |
| 49 | 50 |
| 50 // Returns true if the specified point(BrowserView coordinates) is in | 51 // Returns true if the specified point(BrowserView coordinates) is in |
| 51 // in the window caption area of the browser window. | 52 // in the window caption area of the browser window. |
| 52 bool IsPositionInWindowCaption(const gfx::Point& point); | 53 bool IsPositionInWindowCaption(const gfx::Point& point); |
| 53 | 54 |
| 54 // Tests to see if the specified |point| (in nonclient view's coordinates) | 55 // Tests to see if the specified |point| (in nonclient view's coordinates) |
| 55 // is within the views managed by the laymanager. Returns one of | 56 // is within the views managed by the laymanager. Returns one of |
| 56 // HitTestCompat enum defined in ui/base/hit_test.h. | 57 // HitTestCompat enum defined in ui/base/hit_test.h. |
| 57 // See also ClientView::NonClientHitTest. | 58 // See also ClientView::NonClientHitTest. |
| 58 int NonClientHitTest(const gfx::Point& point); | 59 int NonClientHitTest(const gfx::Point& point); |
| 59 | 60 |
| 60 // views::LayoutManager overrides: | 61 // views::LayoutManager overrides: |
| 61 virtual void Installed(views::View* host) OVERRIDE; | 62 virtual void Installed(views::View* host) OVERRIDE; |
| 62 virtual void Uninstalled(views::View* host) OVERRIDE; | 63 virtual void Uninstalled(views::View* host) OVERRIDE; |
| 63 virtual void ViewAdded(views::View* host, views::View* view) OVERRIDE; | 64 virtual void ViewAdded(views::View* host, views::View* view) OVERRIDE; |
| 64 virtual void Layout(views::View* host) OVERRIDE; | 65 virtual void Layout(views::View* host) OVERRIDE; |
| 65 virtual gfx::Size GetPreferredSize(views::View* host) OVERRIDE; | 66 virtual gfx::Size GetPreferredSize(views::View* host) OVERRIDE; |
| 66 | 67 |
| 67 private: | 68 private: |
| 69 FRIEND_TEST_ALL_PREFIXES(BrowserViewLayoutTest, BrowserViewLayout); |
| 70 FRIEND_TEST_ALL_PREFIXES(BrowserViewLayoutTest, Layout); |
| 68 class WebContentsModalDialogHostViews; | 71 class WebContentsModalDialogHostViews; |
| 69 | 72 |
| 70 enum InstantUIState { | 73 enum InstantUIState { |
| 71 // No instant suggestions are being shown. | 74 // No instant suggestions are being shown. |
| 72 kInstantUINone, | 75 kInstantUINone, |
| 73 // Instant suggestions are displayed in a overlay overlapping the tab | 76 // Instant suggestions are displayed in a overlay overlapping the tab |
| 74 // contents. | 77 // contents. |
| 75 kInstantUIOverlay, | 78 kInstantUIOverlay, |
| 76 // Instant suggestions are displayed in the main tab contents. | 79 // Instant suggestions are displayed in the main tab contents. |
| 77 kInstantUIFullPageResults, | 80 kInstantUIFullPageResults, |
| 78 }; | 81 }; |
| 79 | 82 |
| 80 Browser* browser(); | 83 Browser* browser() { return browser_; } |
| 81 const Browser* browser() const; | |
| 82 | 84 |
| 83 // Layout the tab strip region, returns the coordinate of the bottom of the | 85 // Layout the tab strip region, returns the coordinate of the bottom of the |
| 84 // TabStrip, for laying out subsequent controls. | 86 // TabStrip, for laying out subsequent controls. |
| 85 int LayoutTabStripRegion(); | 87 int LayoutTabStripRegion(); |
| 86 | 88 |
| 87 // Layout the following controls, starting at |top|, returns the coordinate | 89 // Layout the following controls, starting at |top|, returns the coordinate |
| 88 // of the bottom of the control, for laying out the next control. | 90 // of the bottom of the control, for laying out the next control. |
| 89 int LayoutToolbar(int top); | 91 int LayoutToolbar(int top); |
| 90 int LayoutBookmarkAndInfoBars(int top); | 92 int LayoutBookmarkAndInfoBars(int top); |
| 91 int LayoutBookmarkBar(int top); | 93 int LayoutBookmarkBar(int top); |
| (...skipping 26 matching lines...) Expand all Loading... |
| 118 // Returns the state of instant extended suggestions. | 120 // Returns the state of instant extended suggestions. |
| 119 InstantUIState GetInstantUIState(); | 121 InstantUIState GetInstantUIState(); |
| 120 | 122 |
| 121 // Layout the Download Shelf, returns the coordinate of the top of the | 123 // Layout the Download Shelf, returns the coordinate of the top of the |
| 122 // control, for laying out the previous control. | 124 // control, for laying out the previous control. |
| 123 int LayoutDownloadShelf(int bottom); | 125 int LayoutDownloadShelf(int bottom); |
| 124 | 126 |
| 125 // Returns true if an infobar is showing. | 127 // Returns true if an infobar is showing. |
| 126 bool InfobarVisible() const; | 128 bool InfobarVisible() const; |
| 127 | 129 |
| 130 // The browser from the owning BrowserView. |
| 131 Browser* browser_; |
| 132 |
| 128 // Child views that the layout manager manages. | 133 // Child views that the layout manager manages. |
| 129 views::SingleSplitView* contents_split_; | 134 views::SingleSplitView* contents_split_; |
| 130 ContentsContainer* contents_container_; | 135 ContentsContainer* contents_container_; |
| 131 DownloadShelfView* download_shelf_; | 136 DownloadShelfView* download_shelf_; |
| 132 | 137 |
| 133 BrowserView* browser_view_; | 138 BrowserView* browser_view_; |
| 134 | 139 |
| 135 // The bounds within which the vertically-stacked contents of the BrowserView | 140 // The bounds within which the vertically-stacked contents of the BrowserView |
| 136 // should be laid out within. This is just the local bounds of the | 141 // should be laid out within. This is just the local bounds of the |
| 137 // BrowserView. | 142 // BrowserView. |
| 138 // TODO(jamescook): Remove this and just use browser_view_->GetLocalBounds(). | 143 // TODO(jamescook): Remove this and just use browser_view_->GetLocalBounds(). |
| 139 gfx::Rect vertical_layout_rect_; | 144 gfx::Rect vertical_layout_rect_; |
| 140 | 145 |
| 141 // The distance the FindBar is from the top of the window, in pixels. | 146 // The distance the FindBar is from the top of the window, in pixels. |
| 142 int find_bar_y_; | 147 int find_bar_y_; |
| 143 | 148 |
| 144 // The host for use in positioning the web contents modal dialog. | 149 // The host for use in positioning the web contents modal dialog. |
| 145 scoped_ptr<WebContentsModalDialogHostViews> dialog_host_; | 150 scoped_ptr<WebContentsModalDialogHostViews> dialog_host_; |
| 146 | 151 |
| 147 // The distance the web contents modal dialog is from the top of the window, | 152 // The distance the web contents modal dialog is from the top of the window, |
| 148 // in pixels. | 153 // in pixels. |
| 149 int web_contents_modal_dialog_top_y_; | 154 int web_contents_modal_dialog_top_y_; |
| 150 | 155 |
| 151 DISALLOW_COPY_AND_ASSIGN(BrowserViewLayout); | 156 DISALLOW_COPY_AND_ASSIGN(BrowserViewLayout); |
| 152 }; | 157 }; |
| 153 | 158 |
| 154 #endif // CHROME_BROWSER_UI_VIEWS_FRAME_BROWSER_VIEW_LAYOUT_H_ | 159 #endif // CHROME_BROWSER_UI_VIEWS_FRAME_BROWSER_VIEW_LAYOUT_H_ |
| OLD | NEW |