OLD | NEW |
1 // Copyright 2012 The Chromium Authors. All rights reserved. | 1 // Copyright 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 #include "chrome/browser/ui/views/frame/browser_view_layout.h" | 5 #include "chrome/browser/ui/views/frame/browser_view_layout.h" |
6 | 6 |
7 #include "base/observer_list.h" | 7 #include "base/observer_list.h" |
8 #include "chrome/browser/profiles/profile.h" | 8 #include "chrome/browser/profiles/profile.h" |
9 #include "chrome/browser/ui/browser.h" | 9 #include "chrome/browser/ui/browser.h" |
10 #include "chrome/browser/ui/browser_finder.h" | 10 #include "chrome/browser/ui/browser_finder.h" |
11 #include "chrome/browser/ui/browser_window.h" | 11 #include "chrome/browser/ui/browser_window.h" |
12 #include "chrome/browser/ui/find_bar/find_bar.h" | 12 #include "chrome/browser/ui/find_bar/find_bar.h" |
13 #include "chrome/browser/ui/find_bar/find_bar_controller.h" | 13 #include "chrome/browser/ui/find_bar/find_bar_controller.h" |
14 #include "chrome/browser/ui/search/search_model.h" | 14 #include "chrome/browser/ui/search/search_model.h" |
15 #include "chrome/browser/ui/views/bookmarks/bookmark_bar_view.h" | 15 #include "chrome/browser/ui/views/bookmarks/bookmark_bar_view.h" |
16 #include "chrome/browser/ui/views/download/download_shelf_view.h" | 16 #include "chrome/browser/ui/views/download/download_shelf_view.h" |
17 #include "chrome/browser/ui/views/exclusive_access_bubble_views.h" | 17 #include "chrome/browser/ui/views/exclusive_access_bubble_views.h" |
18 #include "chrome/browser/ui/views/frame/browser_view_layout_delegate.h" | 18 #include "chrome/browser/ui/views/frame/browser_view_layout_delegate.h" |
19 #include "chrome/browser/ui/views/frame/contents_layout_manager.h" | 19 #include "chrome/browser/ui/views/frame/contents_layout_manager.h" |
20 #include "chrome/browser/ui/views/frame/immersive_mode_controller.h" | 20 #include "chrome/browser/ui/views/frame/immersive_mode_controller.h" |
21 #include "chrome/browser/ui/views/frame/top_container_view.h" | 21 #include "chrome/browser/ui/views/frame/top_container_view.h" |
22 #include "chrome/browser/ui/views/infobars/infobar_container_view.h" | 22 #include "chrome/browser/ui/views/infobars/infobar_container_view.h" |
| 23 #include "chrome/browser/ui/views/layout_constants.h" |
23 #include "chrome/browser/ui/views/tabs/tab_strip.h" | 24 #include "chrome/browser/ui/views/tabs/tab_strip.h" |
24 #include "components/web_modal/web_contents_modal_dialog_host.h" | 25 #include "components/web_modal/web_contents_modal_dialog_host.h" |
25 #include "ui/base/hit_test.h" | 26 #include "ui/base/hit_test.h" |
26 #include "ui/base/resource/material_design/material_design_controller.h" | 27 #include "ui/base/resource/material_design/material_design_controller.h" |
27 #include "ui/gfx/geometry/point.h" | 28 #include "ui/gfx/geometry/point.h" |
28 #include "ui/gfx/geometry/size.h" | 29 #include "ui/gfx/geometry/size.h" |
29 #include "ui/gfx/scrollbar_size.h" | 30 #include "ui/gfx/scrollbar_size.h" |
30 #include "ui/views/controls/webview/webview.h" | 31 #include "ui/views/controls/webview/webview.h" |
31 #include "ui/views/widget/widget.h" | 32 #include "ui/views/widget/widget.h" |
32 #include "ui/views/window/client_view.h" | 33 #include "ui/views/window/client_view.h" |
(...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
107 observer_list_.RemoveObserver(observer); | 108 observer_list_.RemoveObserver(observer); |
108 } | 109 } |
109 | 110 |
110 BrowserViewLayout* const browser_view_layout_; | 111 BrowserViewLayout* const browser_view_layout_; |
111 | 112 |
112 base::ObserverList<ModalDialogHostObserver> observer_list_; | 113 base::ObserverList<ModalDialogHostObserver> observer_list_; |
113 | 114 |
114 DISALLOW_COPY_AND_ASSIGN(WebContentsModalDialogHostViews); | 115 DISALLOW_COPY_AND_ASSIGN(WebContentsModalDialogHostViews); |
115 }; | 116 }; |
116 | 117 |
117 // static | |
118 const int BrowserViewLayout::kToolbarTabStripVerticalOverlap = 3; | |
119 | |
120 //////////////////////////////////////////////////////////////////////////////// | 118 //////////////////////////////////////////////////////////////////////////////// |
121 // BrowserViewLayout, public: | 119 // BrowserViewLayout, public: |
122 | 120 |
123 BrowserViewLayout::BrowserViewLayout() | 121 BrowserViewLayout::BrowserViewLayout() |
124 : browser_(nullptr), | 122 : browser_(nullptr), |
125 browser_view_(nullptr), | 123 browser_view_(nullptr), |
126 top_container_(nullptr), | 124 top_container_(nullptr), |
127 tab_strip_(nullptr), | 125 tab_strip_(nullptr), |
128 toolbar_(nullptr), | 126 toolbar_(nullptr), |
129 bookmark_bar_(nullptr), | 127 bookmark_bar_(nullptr), |
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
168 | 166 |
169 gfx::Size BrowserViewLayout::GetMinimumSize() { | 167 gfx::Size BrowserViewLayout::GetMinimumSize() { |
170 gfx::Size tabstrip_size( | 168 gfx::Size tabstrip_size( |
171 browser()->SupportsWindowFeature(Browser::FEATURE_TABSTRIP) ? | 169 browser()->SupportsWindowFeature(Browser::FEATURE_TABSTRIP) ? |
172 tab_strip_->GetMinimumSize() : gfx::Size()); | 170 tab_strip_->GetMinimumSize() : gfx::Size()); |
173 gfx::Size toolbar_size( | 171 gfx::Size toolbar_size( |
174 (browser()->SupportsWindowFeature(Browser::FEATURE_TOOLBAR) || | 172 (browser()->SupportsWindowFeature(Browser::FEATURE_TOOLBAR) || |
175 browser()->SupportsWindowFeature(Browser::FEATURE_LOCATIONBAR)) ? | 173 browser()->SupportsWindowFeature(Browser::FEATURE_LOCATIONBAR)) ? |
176 toolbar_->GetMinimumSize() : gfx::Size()); | 174 toolbar_->GetMinimumSize() : gfx::Size()); |
177 if (tabstrip_size.height() && toolbar_size.height()) | 175 if (tabstrip_size.height() && toolbar_size.height()) |
178 toolbar_size.Enlarge(0, -kToolbarTabStripVerticalOverlap); | 176 toolbar_size.Enlarge(0, -GetLayoutConstant(TABSTRIP_TOOLBAR_OVERLAP)); |
179 gfx::Size bookmark_bar_size; | 177 gfx::Size bookmark_bar_size; |
180 if (bookmark_bar_ && | 178 if (bookmark_bar_ && |
181 bookmark_bar_->visible() && | 179 bookmark_bar_->visible() && |
182 browser()->SupportsWindowFeature(Browser::FEATURE_BOOKMARKBAR)) { | 180 browser()->SupportsWindowFeature(Browser::FEATURE_BOOKMARKBAR)) { |
183 bookmark_bar_size = bookmark_bar_->GetMinimumSize(); | 181 bookmark_bar_size = bookmark_bar_->GetMinimumSize(); |
184 bookmark_bar_size.Enlarge(0, -bookmark_bar_->GetToolbarOverlap()); | 182 bookmark_bar_size.Enlarge(0, -bookmark_bar_->GetToolbarOverlap()); |
185 } | 183 } |
186 gfx::Size infobar_container_size(infobar_container_->GetMinimumSize()); | 184 gfx::Size infobar_container_size(infobar_container_->GetMinimumSize()); |
187 // TODO: Adjust the minimum height for the find bar. | 185 // TODO: Adjust the minimum height for the find bar. |
188 | 186 |
(...skipping 205 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
394 tab_strip_->SetBoundsRect(tabstrip_bounds); | 392 tab_strip_->SetBoundsRect(tabstrip_bounds); |
395 | 393 |
396 return tabstrip_bounds.bottom(); | 394 return tabstrip_bounds.bottom(); |
397 } | 395 } |
398 | 396 |
399 int BrowserViewLayout::LayoutToolbar(int top) { | 397 int BrowserViewLayout::LayoutToolbar(int top) { |
400 int browser_view_width = vertical_layout_rect_.width(); | 398 int browser_view_width = vertical_layout_rect_.width(); |
401 bool toolbar_visible = delegate_->IsToolbarVisible(); | 399 bool toolbar_visible = delegate_->IsToolbarVisible(); |
402 int y = top; | 400 int y = top; |
403 y -= (toolbar_visible && delegate_->IsTabStripVisible()) ? | 401 y -= (toolbar_visible && delegate_->IsTabStripVisible()) ? |
404 kToolbarTabStripVerticalOverlap : 0; | 402 GetLayoutConstant(TABSTRIP_TOOLBAR_OVERLAP) : 0; |
405 int height = toolbar_visible ? toolbar_->GetPreferredSize().height() : 0; | 403 int height = toolbar_visible ? toolbar_->GetPreferredSize().height() : 0; |
406 toolbar_->SetVisible(toolbar_visible); | 404 toolbar_->SetVisible(toolbar_visible); |
407 toolbar_->SetBounds(vertical_layout_rect_.x(), y, browser_view_width, height); | 405 toolbar_->SetBounds(vertical_layout_rect_.x(), y, browser_view_width, height); |
408 | 406 |
409 return y + height; | 407 return y + height; |
410 } | 408 } |
411 | 409 |
412 int BrowserViewLayout::LayoutBookmarkAndInfoBars(int top, int browser_view_y) { | 410 int BrowserViewLayout::LayoutBookmarkAndInfoBars(int top, int browser_view_y) { |
413 web_contents_modal_dialog_top_y_ = | 411 web_contents_modal_dialog_top_y_ = |
414 top + browser_view_y - kConstrainedWindowOverlap; | 412 top + browser_view_y - kConstrainedWindowOverlap; |
(...skipping 128 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
543 return bottom; | 541 return bottom; |
544 } | 542 } |
545 | 543 |
546 bool BrowserViewLayout::InfobarVisible() const { | 544 bool BrowserViewLayout::InfobarVisible() const { |
547 // Cast to a views::View to access GetPreferredSize(). | 545 // Cast to a views::View to access GetPreferredSize(). |
548 views::View* infobar_container = infobar_container_; | 546 views::View* infobar_container = infobar_container_; |
549 // NOTE: Can't check if the size IsEmpty() since it's always 0-width. | 547 // NOTE: Can't check if the size IsEmpty() since it's always 0-width. |
550 return browser_->SupportsWindowFeature(Browser::FEATURE_INFOBAR) && | 548 return browser_->SupportsWindowFeature(Browser::FEATURE_INFOBAR) && |
551 (infobar_container->GetPreferredSize().height() != 0); | 549 (infobar_container->GetPreferredSize().height() != 0); |
552 } | 550 } |
OLD | NEW |