Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(49)

Side by Side Diff: chrome/browser/views/frame/browser_view.cc

Issue 204022: ExtensionShelf now uses the BookmarkExtensionBackground, just like the Bookma... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: Created 11 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « chrome/browser/views/frame/browser_view.h ('k') | chrome/chrome.gyp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2009 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2009 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/views/frame/browser_view.h" 5 #include "chrome/browser/views/frame/browser_view.h"
6 6
7 #include "app/drag_drop_types.h" 7 #include "app/drag_drop_types.h"
8 #include "app/gfx/canvas.h" 8 #include "app/gfx/canvas.h"
9 #include "app/l10n_util.h" 9 #include "app/l10n_util.h"
10 #include "app/os_exchange_data.h" 10 #include "app/os_exchange_data.h"
(...skipping 109 matching lines...) Expand 10 before | Expand all | Expand 10 after
120 // Returned from BrowserView::GetClassName. 120 // Returned from BrowserView::GetClassName.
121 static const char kBrowserViewClassName[] = "browser/views/BrowserView"; 121 static const char kBrowserViewClassName[] = "browser/views/BrowserView";
122 122
123 123
124 /////////////////////////////////////////////////////////////////////////////// 124 ///////////////////////////////////////////////////////////////////////////////
125 // BookmarkExtensionBackground, private: 125 // BookmarkExtensionBackground, private:
126 // This object serves as the views::Background object which is used to layout 126 // This object serves as the views::Background object which is used to layout
127 // and paint the bookmark bar. 127 // and paint the bookmark bar.
128 class BookmarkExtensionBackground : public views::Background { 128 class BookmarkExtensionBackground : public views::Background {
129 public: 129 public:
130 explicit BookmarkExtensionBackground(BrowserView* browser_view); 130 explicit BookmarkExtensionBackground(BrowserView* browser_view,
131 DetachableToolbarView* host_view);
131 132
132 // View methods overridden from views:Background. 133 // View methods overridden from views:Background.
133 virtual void Paint(gfx::Canvas* canvas, views::View* view) const; 134 virtual void Paint(gfx::Canvas* canvas, views::View* view) const;
134 135
135 private: 136 private:
136 // Paint the theme background with the proper alignment. 137 BrowserView* browser_view_;
137 void PaintThemeBackgroundTopAligned(gfx::Canvas* canvas,
138 SkBitmap* ntp_background, int tiling, int alignment) const;
139 void PaintThemeBackgroundBottomAligned(gfx::Canvas* canvas,
140 SkBitmap* ntp_background, int tiling, int alignment) const;
141 138
142 BrowserView* browser_view_; 139 // The view hosting this background.
140 DetachableToolbarView* host_view_;
143 141
144 DISALLOW_COPY_AND_ASSIGN(BookmarkExtensionBackground); 142 DISALLOW_COPY_AND_ASSIGN(BookmarkExtensionBackground);
145 }; 143 };
146 144
147 BookmarkExtensionBackground::BookmarkExtensionBackground( 145 BookmarkExtensionBackground::BookmarkExtensionBackground(
148 BrowserView* browser_view) 146 BrowserView* browser_view,
149 : browser_view_(browser_view) { 147 DetachableToolbarView* host_view)
148 : browser_view_(browser_view),
149 host_view_(host_view) {
150 } 150 }
151 151
152 void BookmarkExtensionBackground::Paint(gfx::Canvas* canvas, 152 void BookmarkExtensionBackground::Paint(gfx::Canvas* canvas,
153 views::View* view) const { 153 views::View* view) const {
154 // Paint the bookmark bar. 154 ThemeProvider* tp = host_view_->GetThemeProvider();
155 BookmarkBarView* bookmark_bar_view = browser_view_->GetBookmarkBarView(); 155 if (host_view_->IsDetached()) {
156 if (bookmark_bar_view->IsDetachedStyle()) {
157 // Draw the background to match the new tab page. 156 // Draw the background to match the new tab page.
158 ThemeProvider* tp = bookmark_bar_view->GetThemeProvider(); 157 DetachableToolbarView::PaintBackgroundDetachedMode(canvas, host_view_);
159 canvas->FillRectInt(
160 tp->GetColor(BrowserThemeProvider::COLOR_NTP_BACKGROUND),
161 0, 0, bookmark_bar_view->width(), bookmark_bar_view->height());
162
163 if (tp->HasCustomImage(IDR_THEME_NTP_BACKGROUND)) {
164 int tiling = BrowserThemeProvider::NO_REPEAT;
165 tp->GetDisplayProperty(BrowserThemeProvider::NTP_BACKGROUND_TILING,
166 &tiling);
167 int alignment;
168 if (tp->GetDisplayProperty(BrowserThemeProvider::NTP_BACKGROUND_ALIGNMENT,
169 &alignment)) {
170 SkBitmap* ntp_background = tp->GetBitmapNamed(
171 IDR_THEME_NTP_BACKGROUND);
172
173 if (alignment & BrowserThemeProvider::ALIGN_TOP) {
174 PaintThemeBackgroundTopAligned(canvas, ntp_background, tiling,
175 alignment);
176 } else {
177 PaintThemeBackgroundBottomAligned(canvas, ntp_background, tiling,
178 alignment);
179 }
180 }
181 }
182
183 // Draw the 'bottom' of the toolbar above our bubble.
184 canvas->FillRectInt(ResourceBundle::toolbar_separator_color, 0, 0,
185 bookmark_bar_view->width(), 1);
186 158
187 SkRect rect; 159 SkRect rect;
188 160
189 // As 'hidden' according to the animation is the full in-tab state, 161 // As 'hidden' according to the animation is the full in-tab state,
190 // we invert the value - when current_state is at '0', we expect the 162 // we invert the value - when current_state is at '0', we expect the
191 // bar to be docked. 163 // bar to be docked.
192 double current_state = 1 - bookmark_bar_view->GetSizeAnimationValue(); 164 double current_state = 1 - host_view_->GetAnimationValue();
193 165
194 // The 0.5 is to correct for Skia's "draw on pixel boundaries"ness. 166 // The 0.5 is to correct for Skia's "draw on pixel boundaries"ness.
195 double h_padding = static_cast<double> 167 double h_padding = static_cast<double>
196 (BookmarkBarView::kNewtabHorizontalPadding) * current_state; 168 (BookmarkBarView::kNewtabHorizontalPadding) * current_state;
197 double v_padding = static_cast<double> 169 double v_padding = static_cast<double>
198 (BookmarkBarView::kNewtabVerticalPadding) * current_state; 170 (BookmarkBarView::kNewtabVerticalPadding) * current_state;
199 rect.set(SkDoubleToScalar(h_padding - 0.5), 171 double roundness = 0;
200 SkDoubleToScalar(v_padding - 0.5),
201 SkDoubleToScalar(bookmark_bar_view->width() - h_padding - 0.5),
202 SkDoubleToScalar(bookmark_bar_view->height() - v_padding - 0.5));
203 172
204 double roundness = static_cast<double> 173 DetachableToolbarView::CalculateContentArea(current_state,
205 (kNewtabBarRoundness) * current_state; 174 h_padding, v_padding,
206 175 &rect, &roundness, host_view_);
207 // Draw our background. 176 DetachableToolbarView::PaintContentAreaBackground(
208 SkPaint paint; 177 canvas, tp, rect, roundness);
209 paint.setAntiAlias(true); 178 DetachableToolbarView::PaintContentAreaBorder(canvas, tp, rect, roundness);
210 paint.setColor(bookmark_bar_view->GetThemeProvider()->GetColor( 179 DetachableToolbarView::PaintHorizontalBorder(canvas, host_view_);
211 BrowserThemeProvider::COLOR_TOOLBAR));
212
213 canvas->drawRoundRect(rect,
214 SkDoubleToScalar(roundness),
215 SkDoubleToScalar(roundness), paint);
216
217 // Draw border
218 SkPaint border_paint;
219 border_paint.setColor(bookmark_bar_view->GetThemeProvider()->GetColor(
220 BrowserThemeProvider::COLOR_NTP_HEADER));
221 border_paint.setStyle(SkPaint::kStroke_Style);
222 border_paint.setAlpha(96);
223 border_paint.setAntiAlias(true);
224
225 canvas->drawRoundRect(rect,
226 SkDoubleToScalar(roundness),
227 SkDoubleToScalar(roundness), border_paint);
228 } else { 180 } else {
229 gfx::Rect bounds = bookmark_bar_view->GetBounds(views::View:: 181 DetachableToolbarView::PaintBackgroundAttachedMode(canvas, host_view_);
230 APPLY_MIRRORING_TRANSFORMATION); 182 DetachableToolbarView::PaintHorizontalBorder(canvas, host_view_);
231
232 SkColor theme_toolbar_color =
233 bookmark_bar_view->GetThemeProvider()->GetColor(BrowserThemeProvider::
234 COLOR_TOOLBAR);
235 canvas->FillRectInt(theme_toolbar_color, 0, 0,
236 bookmark_bar_view->width(),
237 bookmark_bar_view->height());
238
239 canvas->TileImageInt(
240 *browser_view_->GetBookmarkBarView()->GetThemeProvider()->
241 GetBitmapNamed(IDR_THEME_TOOLBAR),
242 bookmark_bar_view->GetParent()->GetBounds(views::
243 View::APPLY_MIRRORING_TRANSFORMATION).x() + bounds.x(), bounds.y(),
244 0, 0,
245 bookmark_bar_view->width(),
246 bookmark_bar_view->height());
247 canvas->FillRectInt(ResourceBundle::toolbar_separator_color,
248 0,
249 bookmark_bar_view->height() - 1,
250 bookmark_bar_view->width(), 1);
251 }
252 }
253
254 void BookmarkExtensionBackground::PaintThemeBackgroundTopAligned(
255 gfx::Canvas* canvas, SkBitmap* ntp_background, int tiling,
256 int alignment) const {
257 BookmarkBarView* bookmark_bar_view = browser_view_->GetBookmarkBarView();
258 if (alignment & BrowserThemeProvider::ALIGN_LEFT) {
259 if (tiling == BrowserThemeProvider::REPEAT)
260 canvas->TileImageInt(*ntp_background, 0, 0,
261 bookmark_bar_view->width(), bookmark_bar_view->height());
262 else if (tiling == BrowserThemeProvider::REPEAT_X)
263 canvas->TileImageInt(*ntp_background, 0, 0,
264 bookmark_bar_view->width(),
265 ntp_background->height());
266 else
267 canvas->TileImageInt(*ntp_background, 0, 0,
268 ntp_background->width(), ntp_background->height());
269
270 } else if (alignment & BrowserThemeProvider::ALIGN_RIGHT) {
271 int x_pos = bookmark_bar_view->width() % ntp_background->width() -
272 ntp_background->width();
273 if (tiling == BrowserThemeProvider::REPEAT)
274 canvas->TileImageInt(*ntp_background, x_pos, 0,
275 bookmark_bar_view->width() + ntp_background->width(),
276 bookmark_bar_view->height());
277 else if (tiling == BrowserThemeProvider::REPEAT_X)
278 canvas->TileImageInt(*ntp_background, x_pos,
279 0, bookmark_bar_view->width() + ntp_background->width(),
280 ntp_background->height());
281 else
282 canvas->TileImageInt(*ntp_background,
283 bookmark_bar_view->width() - ntp_background->width(), 0,
284 ntp_background->width(), ntp_background->height());
285
286 } else { // ALIGN == CENTER
287 int x_pos = bookmark_bar_view->width() > ntp_background->width() ?
288 ((bookmark_bar_view->width() / 2 - ntp_background->width() / 2) %
289 ntp_background->width()) - ntp_background->width() :
290 bookmark_bar_view->width() / 2 - ntp_background->width() / 2;
291 if (tiling == BrowserThemeProvider::REPEAT)
292 canvas->TileImageInt(*ntp_background, x_pos, 0,
293 bookmark_bar_view->width() + ntp_background->width(),
294 bookmark_bar_view->height());
295 else if (tiling == BrowserThemeProvider::REPEAT_X)
296 canvas->TileImageInt(*ntp_background, x_pos, 0,
297 bookmark_bar_view->width() + ntp_background->width(),
298 ntp_background->height());
299 else
300 canvas->TileImageInt(*ntp_background,
301 bookmark_bar_view->width() / 2 - ntp_background->width() / 2,
302 0, ntp_background->width(), ntp_background->height());
303 }
304 }
305
306 void BookmarkExtensionBackground::PaintThemeBackgroundBottomAligned(
307 gfx::Canvas* canvas, SkBitmap* ntp_background, int tiling,
308 int alignment) const {
309 BookmarkBarView* bookmark_bar_view = browser_view_->GetBookmarkBarView();
310 int browser_height = bookmark_bar_view->GetParent()->GetBounds(
311 views::View::APPLY_MIRRORING_TRANSFORMATION).height();
312 int border_width = 5;
313 int y_pos = ((tiling == BrowserThemeProvider::REPEAT_X) ||
314 (tiling == BrowserThemeProvider::NO_REPEAT)) ?
315 browser_height - ntp_background->height() - bookmark_bar_view->height() -
316 border_width :
317 browser_height % ntp_background->height() - bookmark_bar_view->height() -
318 border_width - ntp_background->height();
319
320 if (alignment & BrowserThemeProvider::ALIGN_LEFT) {
321 if (tiling == BrowserThemeProvider::REPEAT)
322 canvas->TileImageInt(*ntp_background, 0, y_pos,
323 bookmark_bar_view->width(),
324 2 * bookmark_bar_view->height() + ntp_background->height() + 5);
325 else if (tiling == BrowserThemeProvider::REPEAT_X)
326 canvas->TileImageInt(*ntp_background, 0, y_pos,
327 bookmark_bar_view->width(), ntp_background->height());
328 else if (tiling == BrowserThemeProvider::REPEAT_Y)
329 canvas->TileImageInt(*ntp_background, 0, y_pos,
330 ntp_background->width(),
331 2 * bookmark_bar_view->height() + ntp_background->height() + 5);
332 else
333 canvas->TileImageInt(*ntp_background, 0, y_pos, ntp_background->width(),
334 ntp_background->height());
335
336 } else if (alignment & BrowserThemeProvider::ALIGN_RIGHT) {
337 int x_pos = bookmark_bar_view->width() % ntp_background->width() -
338 ntp_background->width();
339 if (tiling == BrowserThemeProvider::REPEAT)
340 canvas->TileImageInt(*ntp_background, x_pos, y_pos,
341 bookmark_bar_view->width() + ntp_background->width(),
342 2 * bookmark_bar_view->height() + ntp_background->height() + 5);
343 else if (tiling == BrowserThemeProvider::REPEAT_X)
344 canvas->TileImageInt(*ntp_background, x_pos, y_pos,
345 bookmark_bar_view->width() + ntp_background->width(),
346 ntp_background->height());
347 else if (tiling == BrowserThemeProvider::REPEAT_Y)
348 canvas->TileImageInt(*ntp_background, bookmark_bar_view->width() -
349 ntp_background->width(), y_pos, ntp_background->width(),
350 2 * bookmark_bar_view->height() + ntp_background->height() + 5);
351 else
352 canvas->TileImageInt(*ntp_background,
353 bookmark_bar_view->width() - ntp_background->width(),
354 y_pos, ntp_background->width(), ntp_background->height());
355
356 } else { // ALIGN == CENTER
357 int x_pos = bookmark_bar_view->width() > ntp_background->width() ?
358 ((bookmark_bar_view->width() / 2 - ntp_background->width() / 2) %
359 ntp_background->width()) - ntp_background->width() :
360 bookmark_bar_view->width() / 2 - ntp_background->width() / 2;
361 if (tiling == BrowserThemeProvider::REPEAT)
362 canvas->TileImageInt(*ntp_background, x_pos, y_pos,
363 bookmark_bar_view->width() + ntp_background->width(),
364 2 * bookmark_bar_view->height() + ntp_background->height() + 5);
365 else if (tiling == BrowserThemeProvider::REPEAT_X)
366 canvas->TileImageInt(*ntp_background, x_pos, y_pos,
367 bookmark_bar_view->width() + ntp_background->width(),
368 ntp_background->height());
369 else if (tiling == BrowserThemeProvider::REPEAT_Y)
370 canvas->TileImageInt(*ntp_background,
371 bookmark_bar_view->width() / 2 - ntp_background->width() / 2,
372 y_pos, ntp_background->width(),
373 2 * bookmark_bar_view->height() + ntp_background->height() + 5);
374 else
375 canvas->TileImageInt(*ntp_background,
376 bookmark_bar_view->width() / 2 - ntp_background->width() / 2,
377 y_pos, ntp_background->width(), ntp_background->height());
378 } 183 }
379 } 184 }
380 185
381 /////////////////////////////////////////////////////////////////////////////// 186 ///////////////////////////////////////////////////////////////////////////////
382 // ResizeCorner, private: 187 // ResizeCorner, private:
383 188
384 class ResizeCorner : public views::View { 189 class ResizeCorner : public views::View {
385 public: 190 public:
386 ResizeCorner() { } 191 ResizeCorner() { }
387 192
(...skipping 1434 matching lines...) Expand 10 before | Expand all | Expand 10 after
1822 GetColor(BrowserThemeProvider::COLOR_TOOLBAR); 1627 GetColor(BrowserThemeProvider::COLOR_TOOLBAR);
1823 contents_split_->set_background( 1628 contents_split_->set_background(
1824 views::Background::CreateSolidBackground(bg_color)); 1629 views::Background::CreateSolidBackground(bg_color));
1825 AddChildView(contents_split_); 1630 AddChildView(contents_split_);
1826 set_contents_view(contents_split_); 1631 set_contents_view(contents_split_);
1827 1632
1828 status_bubble_.reset(new StatusBubbleViews(GetWidget())); 1633 status_bubble_.reset(new StatusBubbleViews(GetWidget()));
1829 1634
1830 if (browser_->SupportsWindowFeature(Browser::FEATURE_EXTENSIONSHELF)) { 1635 if (browser_->SupportsWindowFeature(Browser::FEATURE_EXTENSIONSHELF)) {
1831 extension_shelf_ = new ExtensionShelf(browser_.get()); 1636 extension_shelf_ = new ExtensionShelf(browser_.get());
1637 extension_shelf_->set_background(
1638 new BookmarkExtensionBackground(this, extension_shelf_));
1832 extension_shelf_-> 1639 extension_shelf_->
1833 SetAccessibleName(l10n_util::GetString(IDS_ACCNAME_EXTENSIONS)); 1640 SetAccessibleName(l10n_util::GetString(IDS_ACCNAME_EXTENSIONS));
1834 AddChildView(extension_shelf_); 1641 AddChildView(extension_shelf_);
1835 } 1642 }
1836 1643
1837 #if defined(OS_WIN) 1644 #if defined(OS_WIN)
1838 InitSystemMenu(); 1645 InitSystemMenu();
1839 1646
1840 // Create a custom JumpList and add it to an observer of TabRestoreService 1647 // Create a custom JumpList and add it to an observer of TabRestoreService
1841 // so we can update the custom JumpList when a tab is added or removed. 1648 // so we can update the custom JumpList when a tab is added or removed.
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after
1893 toolbar_->SetBounds(0, y, browser_view_width, height); 1700 toolbar_->SetBounds(0, y, browser_view_width, height);
1894 return y + height; 1701 return y + height;
1895 } 1702 }
1896 1703
1897 int BrowserView::LayoutBookmarkAndInfoBars(int top) { 1704 int BrowserView::LayoutBookmarkAndInfoBars(int top) {
1898 find_bar_y_ = top + y() - 1; 1705 find_bar_y_ = top + y() - 1;
1899 if (active_bookmark_bar_) { 1706 if (active_bookmark_bar_) {
1900 // If we're showing the Bookmark bar in detached style, then we need to show 1707 // If we're showing the Bookmark bar in detached style, then we need to show
1901 // any Info bar _above_ the Bookmark bar, since the Bookmark bar is styled 1708 // any Info bar _above_ the Bookmark bar, since the Bookmark bar is styled
1902 // to look like it's part of the page. 1709 // to look like it's part of the page.
1903 if (bookmark_bar_view_->IsDetachedStyle()) 1710 if (bookmark_bar_view_->IsDetached())
1904 return LayoutTopBar(LayoutInfoBar(top)); 1711 return LayoutTopBar(LayoutInfoBar(top));
1905 // Otherwise, Bookmark bar first, Info bar second. 1712 // Otherwise, Bookmark bar first, Info bar second.
1906 top = LayoutTopBar(top); 1713 top = LayoutTopBar(top);
1907 } 1714 }
1908 find_bar_y_ = top + y() - 1; 1715 find_bar_y_ = top + y() - 1;
1909 return LayoutInfoBar(top); 1716 return LayoutInfoBar(top);
1910 } 1717 }
1911 1718
1912 int BrowserView::LayoutTopBar(int top) { 1719 int BrowserView::LayoutTopBar(int top) {
1913 // This method lays out the the bookmark bar, and, if required, the extension 1720 // This method lays out the the bookmark bar, and, if required, the extension
1914 // shelf by its side. The bookmark bar appears on the right of the extension 1721 // shelf by its side. The bookmark bar appears on the right of the extension
1915 // shelf. If there are too many bookmark items and extension toolstrips to fit 1722 // shelf. If there are too many bookmark items and extension toolstrips to fit
1916 // in the single bar, some compromises are made as follows: 1723 // in the single bar, some compromises are made as follows:
1917 // 1. The bookmark bar is shrunk till it reaches the minimum width. 1724 // 1. The bookmark bar is shrunk till it reaches the minimum width.
1918 // 2. After reaching the minimum width, the bookmark bar width is kept fixed - 1725 // 2. After reaching the minimum width, the bookmark bar width is kept fixed -
1919 // the extension shelf bar width is reduced. 1726 // the extension shelf bar width is reduced.
1920 DCHECK(active_bookmark_bar_); 1727 DCHECK(active_bookmark_bar_);
1921 int y = top, x = 0; 1728 int y = top, x = 0;
1922 if (!IsBookmarkBarVisible()) { 1729 if (!IsBookmarkBarVisible()) {
1923 bookmark_bar_view_->SetVisible(false); 1730 bookmark_bar_view_->SetVisible(false);
1924 bookmark_bar_view_->SetBounds(0, y, width(), 0); 1731 bookmark_bar_view_->SetBounds(0, y, width(), 0);
1925 if (ShowExtensionsOnTop()) 1732 if (extension_shelf_->IsOnTop())
1926 extension_shelf_->SetVisible(false); 1733 extension_shelf_->SetVisible(false);
1927 return y; 1734 return y;
1928 } 1735 }
1929 1736
1930 int bookmark_bar_height = bookmark_bar_view_->GetPreferredSize().height(); 1737 int bookmark_bar_height = bookmark_bar_view_->GetPreferredSize().height();
1931 y -= kSeparationLineHeight + (bookmark_bar_view_->IsDetachedStyle() ? 1738 y -= kSeparationLineHeight + (bookmark_bar_view_->IsDetached() ?
1932 0 : bookmark_bar_view_->GetToolbarOverlap(false)); 1739 0 : bookmark_bar_view_->GetToolbarOverlap(false));
1933 1740
1934 if (ShowExtensionsOnTop()) { 1741 if (extension_shelf_->IsOnTop()) {
1935 if (!bookmark_bar_view_->IsDetachedStyle()) { 1742 if (!bookmark_bar_view_->IsDetached()) {
1936 int extension_shelf_width = 1743 int extension_shelf_width =
1937 extension_shelf_->GetPreferredSize().width(); 1744 extension_shelf_->GetPreferredSize().width();
1938 int bookmark_bar_given_width = width() - extension_shelf_width; 1745 int bookmark_bar_given_width = width() - extension_shelf_width;
1939 int minimum_allowed_bookmark_bar_width = 1746 int minimum_allowed_bookmark_bar_width =
1940 bookmark_bar_view_->GetMinimumSize().width(); 1747 bookmark_bar_view_->GetMinimumSize().width();
1941 if (bookmark_bar_given_width < minimum_allowed_bookmark_bar_width) { 1748 if (bookmark_bar_given_width < minimum_allowed_bookmark_bar_width) {
1942 // The bookmark bar cannot compromise on its width any more. The 1749 // The bookmark bar cannot compromise on its width any more. The
1943 // extension shelf needs to shrink now. 1750 // extension shelf needs to shrink now.
1944 extension_shelf_width = 1751 extension_shelf_width =
1945 width() - minimum_allowed_bookmark_bar_width; 1752 width() - minimum_allowed_bookmark_bar_width;
1946 } 1753 }
1947 extension_shelf_->SetVisible(true); 1754 extension_shelf_->SetVisible(true);
1948 extension_shelf_->SetBounds(x, y, extension_shelf_width, 1755 extension_shelf_->SetBounds(x, y, extension_shelf_width,
1949 bookmark_bar_height); 1756 bookmark_bar_height);
1950 x += extension_shelf_width; 1757 x += extension_shelf_width;
1951 } else { 1758 } else {
1952 // TODO (sidchat): For detached style bookmark bar, set the extensions 1759 // TODO(sidchat): For detached style bookmark bar, set the extensions
1953 // shelf in a better position. Issue = 20741. 1760 // shelf in a better position. Issue = 20741.
1954 extension_shelf_->SetVisible(false); 1761 extension_shelf_->SetVisible(false);
1955 } 1762 }
1956 } 1763 }
1957 1764
1958 bookmark_bar_view_->SetVisible(true); 1765 bookmark_bar_view_->SetVisible(true);
1959 bookmark_bar_view_->SetBounds(x, y, width() - x, bookmark_bar_height); 1766 bookmark_bar_view_->SetBounds(x, y, width() - x, bookmark_bar_height);
1960 return y + bookmark_bar_height; 1767 return y + bookmark_bar_height;
1961 } 1768 }
1962 1769
1963 int BrowserView::LayoutInfoBar(int top) { 1770 int BrowserView::LayoutInfoBar(int top) {
1964 bool visible = browser_->SupportsWindowFeature(Browser::FEATURE_INFOBAR); 1771 bool visible = browser_->SupportsWindowFeature(Browser::FEATURE_INFOBAR);
1965 int height = visible ? infobar_container_->GetPreferredSize().height() : 0; 1772 int height = visible ? infobar_container_->GetPreferredSize().height() : 0;
1966 infobar_container_->SetVisible(visible); 1773 infobar_container_->SetVisible(visible);
1967 infobar_container_->SetBounds(0, top, width(), height); 1774 infobar_container_->SetBounds(0, top, width(), height);
1968 return top + height; 1775 return top + height;
1969 } 1776 }
1970 1777
1971 void BrowserView::LayoutTabContents(int top, int bottom) { 1778 void BrowserView::LayoutTabContents(int top, int bottom) {
1972 contents_split_->SetBounds(0, top, width(), bottom - top); 1779 contents_split_->SetBounds(0, top, width(), bottom - top);
1973 } 1780 }
1974 1781
1975 int BrowserView::LayoutExtensionAndDownloadShelves() { 1782 int BrowserView::LayoutExtensionAndDownloadShelves() {
1976 // If we're showing the Bookmark bar in detached style, then we need to show 1783 // If we're showing the Bookmark bar in detached style, then we need to show
1977 // any Info bar _above_ the Bookmark bar, since the Bookmark bar is styled 1784 // any Info bar _above_ the Bookmark bar, since the Bookmark bar is styled
1978 // to look like it's part of the page. 1785 // to look like it's part of the page.
1979 int bottom = height(); 1786 int bottom = height();
1980 if (extension_shelf_) { 1787 if (extension_shelf_) {
1981 if (extension_shelf_->IsDetachedStyle()) { 1788 if (extension_shelf_->IsDetached()) {
1982 bottom = LayoutDownloadShelf(bottom); 1789 bottom = LayoutDownloadShelf(bottom);
1983 return LayoutExtensionShelf(bottom); 1790 return LayoutExtensionShelf(bottom);
1984 } 1791 }
1985 // Otherwise, Extension shelf first, Download shelf second. 1792 // Otherwise, Extension shelf first, Download shelf second.
1986 bottom = LayoutExtensionShelf(bottom); 1793 bottom = LayoutExtensionShelf(bottom);
1987 } 1794 }
1988 return LayoutDownloadShelf(bottom); 1795 return LayoutDownloadShelf(bottom);
1989 } 1796 }
1990 1797
1991 int BrowserView::LayoutDownloadShelf(int bottom) { 1798 int BrowserView::LayoutDownloadShelf(int bottom) {
(...skipping 18 matching lines...) Expand all
2010 // frame. 1817 // frame.
2011 int overlap = StatusBubbleViews::kShadowThickness + 1818 int overlap = StatusBubbleViews::kShadowThickness +
2012 (IsMaximized() ? 0 : views::NonClientFrameView::kClientEdgeThickness); 1819 (IsMaximized() ? 0 : views::NonClientFrameView::kClientEdgeThickness);
2013 int height = status_bubble_->GetPreferredSize().height(); 1820 int height = status_bubble_->GetPreferredSize().height();
2014 gfx::Point origin(-overlap, top - height + overlap); 1821 gfx::Point origin(-overlap, top - height + overlap);
2015 ConvertPointToView(this, GetParent(), &origin); 1822 ConvertPointToView(this, GetParent(), &origin);
2016 status_bubble_->SetBounds(origin.x(), origin.y(), width() / 3, height); 1823 status_bubble_->SetBounds(origin.x(), origin.y(), width() / 3, height);
2017 } 1824 }
2018 1825
2019 int BrowserView::LayoutExtensionShelf(int bottom) { 1826 int BrowserView::LayoutExtensionShelf(int bottom) {
2020 if (ShowExtensionsOnTop()) 1827 if (!extension_shelf_ || extension_shelf_->IsOnTop())
2021 return bottom; 1828 return bottom;
2022 1829
2023 if (extension_shelf_) { 1830 if (extension_shelf_) {
2024 bool visible = browser_->SupportsWindowFeature( 1831 bool visible = browser_->SupportsWindowFeature(
2025 Browser::FEATURE_EXTENSIONSHELF); 1832 Browser::FEATURE_EXTENSIONSHELF);
2026 int height = 1833 int height =
2027 visible ? extension_shelf_->GetPreferredSize().height() : 0; 1834 visible ? extension_shelf_->GetPreferredSize().height() : 0;
2028 extension_shelf_->SetVisible(visible); 1835 extension_shelf_->SetVisible(visible);
2029 extension_shelf_->SetBounds(0, bottom - height, width(), height); 1836 extension_shelf_->SetBounds(0, bottom - height, width(), height);
2030 extension_shelf_->Layout(); 1837 extension_shelf_->Layout();
2031 bottom -= height; 1838 bottom -= height;
2032 } 1839 }
2033 return bottom; 1840 return bottom;
2034 } 1841 }
2035 1842
2036 bool BrowserView::MaybeShowBookmarkBar(TabContents* contents) { 1843 bool BrowserView::MaybeShowBookmarkBar(TabContents* contents) {
2037 views::View* new_bookmark_bar_view = NULL; 1844 views::View* new_bookmark_bar_view = NULL;
2038 if (browser_->SupportsWindowFeature(Browser::FEATURE_BOOKMARKBAR) 1845 if (browser_->SupportsWindowFeature(Browser::FEATURE_BOOKMARKBAR)
2039 && contents) { 1846 && contents) {
2040 if (!bookmark_bar_view_.get()) { 1847 if (!bookmark_bar_view_.get()) {
2041 bookmark_bar_view_.reset(new BookmarkBarView(contents->profile(), 1848 bookmark_bar_view_.reset(new BookmarkBarView(contents->profile(),
2042 browser_.get())); 1849 browser_.get()));
2043 bookmark_bar_view_->SetParentOwned(false); 1850 bookmark_bar_view_->SetParentOwned(false);
2044 bookmark_bar_view_->set_background(new BookmarkExtensionBackground(this)); 1851 bookmark_bar_view_->set_background(
1852 new BookmarkExtensionBackground(this, bookmark_bar_view_.get()));
2045 } else { 1853 } else {
2046 bookmark_bar_view_->SetProfile(contents->profile()); 1854 bookmark_bar_view_->SetProfile(contents->profile());
2047 } 1855 }
2048 bookmark_bar_view_->SetPageNavigator(contents); 1856 bookmark_bar_view_->SetPageNavigator(contents);
2049 bookmark_bar_view_-> 1857 bookmark_bar_view_->
2050 SetAccessibleName(l10n_util::GetString(IDS_ACCNAME_BOOKMARKS)); 1858 SetAccessibleName(l10n_util::GetString(IDS_ACCNAME_BOOKMARKS));
2051 new_bookmark_bar_view = bookmark_bar_view_.get(); 1859 new_bookmark_bar_view = bookmark_bar_view_.get();
2052 } 1860 }
2053 return UpdateChildViewAndLayout(new_bookmark_bar_view, &active_bookmark_bar_); 1861 return UpdateChildViewAndLayout(new_bookmark_bar_view, &active_bookmark_bar_);
2054 } 1862 }
(...skipping 265 matching lines...) Expand 10 before | Expand all | Expand 10 after
2320 ticker_.Start(); 2128 ticker_.Start();
2321 2129
2322 pref_service->SetInteger(prefs::kPluginMessageResponseTimeout, 2130 pref_service->SetInteger(prefs::kPluginMessageResponseTimeout,
2323 plugin_message_response_timeout); 2131 plugin_message_response_timeout);
2324 pref_service->SetInteger(prefs::kHungPluginDetectFrequency, 2132 pref_service->SetInteger(prefs::kHungPluginDetectFrequency,
2325 hung_plugin_detect_freq); 2133 hung_plugin_detect_freq);
2326 } 2134 }
2327 #endif 2135 #endif
2328 } 2136 }
2329 2137
2330 bool BrowserView::ShowExtensionsOnTop() {
2331 return extension_shelf_ && CommandLine::ForCurrentProcess()->HasSwitch(
2332 switches::kShowExtensionsOnTop);
2333 }
2334
2335 // static 2138 // static
2336 void BrowserView::InitClass() { 2139 void BrowserView::InitClass() {
2337 static bool initialized = false; 2140 static bool initialized = false;
2338 if (!initialized) { 2141 if (!initialized) {
2339 ResourceBundle& rb = ResourceBundle::GetSharedInstance(); 2142 ResourceBundle& rb = ResourceBundle::GetSharedInstance();
2340 default_favicon_ = *rb.GetBitmapNamed(IDR_DEFAULT_FAVICON); 2143 default_favicon_ = *rb.GetBitmapNamed(IDR_DEFAULT_FAVICON);
2341 initialized = true; 2144 initialized = true;
2342 } 2145 }
2343 } 2146 }
2344 2147
2345 // static 2148 // static
2346 BrowserWindow* BrowserWindow::CreateBrowserWindow(Browser* browser) { 2149 BrowserWindow* BrowserWindow::CreateBrowserWindow(Browser* browser) {
2347 // Create the view and the frame. The frame will attach itself via the view 2150 // Create the view and the frame. The frame will attach itself via the view
2348 // so we don't need to do anything with the pointer. 2151 // so we don't need to do anything with the pointer.
2349 BrowserView* view = new BrowserView(browser); 2152 BrowserView* view = new BrowserView(browser);
2350 BrowserFrame::Create(view, browser->profile()); 2153 BrowserFrame::Create(view, browser->profile());
2351 return view; 2154 return view;
2352 } 2155 }
2353 2156
2354 // static 2157 // static
2355 FindBar* BrowserWindow::CreateFindBar(Browser* browser) { 2158 FindBar* BrowserWindow::CreateFindBar(Browser* browser) {
2356 return browser::CreateFindBar(static_cast<BrowserView*>(browser->window())); 2159 return browser::CreateFindBar(static_cast<BrowserView*>(browser->window()));
2357 } 2160 }
2358 2161
2359 // static 2162 // static
2360 void BrowserList::AllBrowsersClosed() { 2163 void BrowserList::AllBrowsersClosed() {
2361 views::Window::CloseAllSecondaryWindows(); 2164 views::Window::CloseAllSecondaryWindows();
2362 } 2165 }
OLDNEW
« no previous file with comments | « chrome/browser/views/frame/browser_view.h ('k') | chrome/chrome.gyp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698