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

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

Issue 203034: Theme support for the extension shelf (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
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 106 matching lines...) Expand 10 before | Expand all | Expand 10 after
117 // Returned from BrowserView::GetClassName. 117 // Returned from BrowserView::GetClassName.
118 static const char kBrowserViewClassName[] = "browser/views/BrowserView"; 118 static const char kBrowserViewClassName[] = "browser/views/BrowserView";
119 119
120 120
121 /////////////////////////////////////////////////////////////////////////////// 121 ///////////////////////////////////////////////////////////////////////////////
122 // BookmarkExtensionBackground, private: 122 // BookmarkExtensionBackground, private:
123 // This object serves as the views::Background object which is used to layout 123 // This object serves as the views::Background object which is used to layout
124 // and paint the bookmark bar. 124 // and paint the bookmark bar.
125 class BookmarkExtensionBackground : public views::Background { 125 class BookmarkExtensionBackground : public views::Background {
126 public: 126 public:
127 explicit BookmarkExtensionBackground(BrowserView* browser_view); 127 explicit BookmarkExtensionBackground(BrowserView* browser_view,
128 DetachableToolbarView* host_view);
128 129
129 // View methods overridden from views:Background. 130 // View methods overridden from views:Background.
130 virtual void Paint(gfx::Canvas* canvas, views::View* view) const; 131 virtual void Paint(gfx::Canvas* canvas, views::View* view) const;
131 132
132 private: 133 private:
133 // Paint the theme background with the proper alignment. 134 BrowserView* browser_view_;
134 void PaintThemeBackgroundTopAligned(gfx::Canvas* canvas,
135 SkBitmap* ntp_background, int tiling, int alignment) const;
136 void PaintThemeBackgroundBottomAligned(gfx::Canvas* canvas,
137 SkBitmap* ntp_background, int tiling, int alignment) const;
138 135
139 BrowserView* browser_view_; 136 // The view hosting this background.
137 DetachableToolbarView* host_view_;
140 138
141 DISALLOW_COPY_AND_ASSIGN(BookmarkExtensionBackground); 139 DISALLOW_COPY_AND_ASSIGN(BookmarkExtensionBackground);
142 }; 140 };
143 141
144 BookmarkExtensionBackground::BookmarkExtensionBackground( 142 BookmarkExtensionBackground::BookmarkExtensionBackground(
145 BrowserView* browser_view) 143 BrowserView* browser_view,
146 : browser_view_(browser_view) { 144 DetachableToolbarView* host_view)
145 : browser_view_(browser_view),
146 host_view_(host_view) {
147 } 147 }
148 148
149 void BookmarkExtensionBackground::Paint(gfx::Canvas* canvas, 149 void BookmarkExtensionBackground::Paint(gfx::Canvas* canvas,
150 views::View* view) const { 150 views::View* view) const {
151 // Paint the bookmark bar. 151 ThemeProvider* tp = host_view_->GetThemeProvider();
152 BookmarkBarView* bookmark_bar_view = browser_view_->GetBookmarkBarView(); 152 if (host_view_->IsDetached()) {
153 if (bookmark_bar_view->IsDetachedStyle()) {
154 // Draw the background to match the new tab page. 153 // Draw the background to match the new tab page.
155 ThemeProvider* tp = bookmark_bar_view->GetThemeProvider(); 154 DetachableToolbarView::PaintBackgroundDetachedMode(canvas, host_view_);
156 canvas->FillRectInt(
157 tp->GetColor(BrowserThemeProvider::COLOR_NTP_BACKGROUND),
158 0, 0, bookmark_bar_view->width(), bookmark_bar_view->height());
159
160 if (tp->HasCustomImage(IDR_THEME_NTP_BACKGROUND)) {
161 int tiling = BrowserThemeProvider::NO_REPEAT;
162 tp->GetDisplayProperty(BrowserThemeProvider::NTP_BACKGROUND_TILING,
163 &tiling);
164 int alignment;
165 if (tp->GetDisplayProperty(BrowserThemeProvider::NTP_BACKGROUND_ALIGNMENT,
166 &alignment)) {
167 SkBitmap* ntp_background = tp->GetBitmapNamed(
168 IDR_THEME_NTP_BACKGROUND);
169
170 if (alignment & BrowserThemeProvider::ALIGN_TOP) {
171 PaintThemeBackgroundTopAligned(canvas, ntp_background, tiling,
172 alignment);
173 } else {
174 PaintThemeBackgroundBottomAligned(canvas, ntp_background, tiling,
175 alignment);
176 }
177 }
178 }
179
180 // Draw the 'bottom' of the toolbar above our bubble.
181 canvas->FillRectInt(ResourceBundle::toolbar_separator_color, 0, 0,
182 bookmark_bar_view->width(), 1);
183 155
184 SkRect rect; 156 SkRect rect;
185 157
186 // As 'hidden' according to the animation is the full in-tab state, 158 // As 'hidden' according to the animation is the full in-tab state,
187 // we invert the value - when current_state is at '0', we expect the 159 // we invert the value - when current_state is at '0', we expect the
188 // bar to be docked. 160 // bar to be docked.
189 double current_state = 1 - bookmark_bar_view->GetSizeAnimationValue(); 161 double current_state = 1 - host_view_->GetAnimationValue();
190 162
191 // The 0.5 is to correct for Skia's "draw on pixel boundaries"ness. 163 // The 0.5 is to correct for Skia's "draw on pixel boundaries"ness.
192 double h_padding = static_cast<double> 164 double h_padding = static_cast<double>
193 (BookmarkBarView::kNewtabHorizontalPadding) * current_state; 165 (BookmarkBarView::kNewtabHorizontalPadding) * current_state;
194 double v_padding = static_cast<double> 166 double v_padding = static_cast<double>
195 (BookmarkBarView::kNewtabVerticalPadding) * current_state; 167 (BookmarkBarView::kNewtabVerticalPadding) * current_state;
196 rect.set(SkDoubleToScalar(h_padding - 0.5), 168 double roundness = 0;
197 SkDoubleToScalar(v_padding - 0.5),
198 SkDoubleToScalar(bookmark_bar_view->width() - h_padding - 0.5),
199 SkDoubleToScalar(bookmark_bar_view->height() - v_padding - 0.5));
200 169
201 double roundness = static_cast<double> 170 DetachableToolbarView::CalculateContentArea(current_state,
202 (kNewtabBarRoundness) * current_state; 171 h_padding, v_padding,
203 172 &rect, &roundness, host_view_);
204 // Draw our background. 173 DetachableToolbarView::PaintContentAreaBackground(
205 SkPaint paint; 174 canvas, tp, rect, roundness);
206 paint.setAntiAlias(true); 175 DetachableToolbarView::PaintContentAreaBorder(canvas, tp, rect, roundness);
207 paint.setColor(bookmark_bar_view->GetThemeProvider()->GetColor( 176 DetachableToolbarView::PaintHorizontalBorder(canvas, host_view_);
208 BrowserThemeProvider::COLOR_TOOLBAR));
209
210 canvas->drawRoundRect(rect,
211 SkDoubleToScalar(roundness),
212 SkDoubleToScalar(roundness), paint);
213
214 // Draw border
215 SkPaint border_paint;
216 border_paint.setColor(bookmark_bar_view->GetThemeProvider()->GetColor(
217 BrowserThemeProvider::COLOR_NTP_HEADER));
218 border_paint.setStyle(SkPaint::kStroke_Style);
219 border_paint.setAlpha(96);
220 border_paint.setAntiAlias(true);
221
222 canvas->drawRoundRect(rect,
223 SkDoubleToScalar(roundness),
224 SkDoubleToScalar(roundness), border_paint);
225 } else { 177 } else {
226 gfx::Rect bounds = bookmark_bar_view->GetBounds(views::View:: 178 DetachableToolbarView::PaintBackgroundAttachedMode(canvas, host_view_);
227 APPLY_MIRRORING_TRANSFORMATION); 179 DetachableToolbarView::PaintHorizontalBorder(canvas, host_view_);
228
229 SkColor theme_toolbar_color =
230 bookmark_bar_view->GetThemeProvider()->GetColor(BrowserThemeProvider::
231 COLOR_TOOLBAR);
232 canvas->FillRectInt(theme_toolbar_color, 0, 0,
233 bookmark_bar_view->width(),
234 bookmark_bar_view->height());
235
236 canvas->TileImageInt(
237 *browser_view_->GetBookmarkBarView()->GetThemeProvider()->
238 GetBitmapNamed(IDR_THEME_TOOLBAR),
239 bookmark_bar_view->GetParent()->GetBounds(views::
240 View::APPLY_MIRRORING_TRANSFORMATION).x() + bounds.x(), bounds.y(),
241 0, 0,
242 bookmark_bar_view->width(),
243 bookmark_bar_view->height());
244 canvas->FillRectInt(ResourceBundle::toolbar_separator_color,
245 0,
246 bookmark_bar_view->height() - 1,
247 bookmark_bar_view->width(), 1);
248 }
249 }
250
251 void BookmarkExtensionBackground::PaintThemeBackgroundTopAligned(
252 gfx::Canvas* canvas, SkBitmap* ntp_background, int tiling,
253 int alignment) const {
254 BookmarkBarView* bookmark_bar_view = browser_view_->GetBookmarkBarView();
255 if (alignment & BrowserThemeProvider::ALIGN_LEFT) {
256 if (tiling == BrowserThemeProvider::REPEAT)
257 canvas->TileImageInt(*ntp_background, 0, 0,
258 bookmark_bar_view->width(), bookmark_bar_view->height());
259 else if (tiling == BrowserThemeProvider::REPEAT_X)
260 canvas->TileImageInt(*ntp_background, 0, 0,
261 bookmark_bar_view->width(),
262 ntp_background->height());
263 else
264 canvas->TileImageInt(*ntp_background, 0, 0,
265 ntp_background->width(), ntp_background->height());
266
267 } else if (alignment & BrowserThemeProvider::ALIGN_RIGHT) {
268 int x_pos = bookmark_bar_view->width() % ntp_background->width() -
269 ntp_background->width();
270 if (tiling == BrowserThemeProvider::REPEAT)
271 canvas->TileImageInt(*ntp_background, x_pos, 0,
272 bookmark_bar_view->width() + ntp_background->width(),
273 bookmark_bar_view->height());
274 else if (tiling == BrowserThemeProvider::REPEAT_X)
275 canvas->TileImageInt(*ntp_background, x_pos,
276 0, bookmark_bar_view->width() + ntp_background->width(),
277 ntp_background->height());
278 else
279 canvas->TileImageInt(*ntp_background,
280 bookmark_bar_view->width() - ntp_background->width(), 0,
281 ntp_background->width(), ntp_background->height());
282
283 } else { // ALIGN == CENTER
284 int x_pos = bookmark_bar_view->width() > ntp_background->width() ?
285 ((bookmark_bar_view->width() / 2 - ntp_background->width() / 2) %
286 ntp_background->width()) - ntp_background->width() :
287 bookmark_bar_view->width() / 2 - ntp_background->width() / 2;
288 if (tiling == BrowserThemeProvider::REPEAT)
289 canvas->TileImageInt(*ntp_background, x_pos, 0,
290 bookmark_bar_view->width() + ntp_background->width(),
291 bookmark_bar_view->height());
292 else if (tiling == BrowserThemeProvider::REPEAT_X)
293 canvas->TileImageInt(*ntp_background, x_pos, 0,
294 bookmark_bar_view->width() + ntp_background->width(),
295 ntp_background->height());
296 else
297 canvas->TileImageInt(*ntp_background,
298 bookmark_bar_view->width() / 2 - ntp_background->width() / 2,
299 0, ntp_background->width(), ntp_background->height());
300 }
301 }
302
303 void BookmarkExtensionBackground::PaintThemeBackgroundBottomAligned(
304 gfx::Canvas* canvas, SkBitmap* ntp_background, int tiling,
305 int alignment) const {
306 BookmarkBarView* bookmark_bar_view = browser_view_->GetBookmarkBarView();
307 int browser_height = bookmark_bar_view->GetParent()->GetBounds(
308 views::View::APPLY_MIRRORING_TRANSFORMATION).height();
309 int border_width = 5;
310 int y_pos = ((tiling == BrowserThemeProvider::REPEAT_X) ||
311 (tiling == BrowserThemeProvider::NO_REPEAT)) ?
312 browser_height - ntp_background->height() - bookmark_bar_view->height() -
313 border_width :
314 browser_height % ntp_background->height() - bookmark_bar_view->height() -
315 border_width - ntp_background->height();
316
317 if (alignment & BrowserThemeProvider::ALIGN_LEFT) {
318 if (tiling == BrowserThemeProvider::REPEAT)
319 canvas->TileImageInt(*ntp_background, 0, y_pos,
320 bookmark_bar_view->width(),
321 2 * bookmark_bar_view->height() + ntp_background->height() + 5);
322 else if (tiling == BrowserThemeProvider::REPEAT_X)
323 canvas->TileImageInt(*ntp_background, 0, y_pos,
324 bookmark_bar_view->width(), ntp_background->height());
325 else if (tiling == BrowserThemeProvider::REPEAT_Y)
326 canvas->TileImageInt(*ntp_background, 0, y_pos,
327 ntp_background->width(),
328 2 * bookmark_bar_view->height() + ntp_background->height() + 5);
329 else
330 canvas->TileImageInt(*ntp_background, 0, y_pos, ntp_background->width(),
331 ntp_background->height());
332
333 } else if (alignment & BrowserThemeProvider::ALIGN_RIGHT) {
334 int x_pos = bookmark_bar_view->width() % ntp_background->width() -
335 ntp_background->width();
336 if (tiling == BrowserThemeProvider::REPEAT)
337 canvas->TileImageInt(*ntp_background, x_pos, y_pos,
338 bookmark_bar_view->width() + ntp_background->width(),
339 2 * bookmark_bar_view->height() + ntp_background->height() + 5);
340 else if (tiling == BrowserThemeProvider::REPEAT_X)
341 canvas->TileImageInt(*ntp_background, x_pos, y_pos,
342 bookmark_bar_view->width() + ntp_background->width(),
343 ntp_background->height());
344 else if (tiling == BrowserThemeProvider::REPEAT_Y)
345 canvas->TileImageInt(*ntp_background, bookmark_bar_view->width() -
346 ntp_background->width(), y_pos, ntp_background->width(),
347 2 * bookmark_bar_view->height() + ntp_background->height() + 5);
348 else
349 canvas->TileImageInt(*ntp_background,
350 bookmark_bar_view->width() - ntp_background->width(),
351 y_pos, ntp_background->width(), ntp_background->height());
352
353 } else { // ALIGN == CENTER
354 int x_pos = bookmark_bar_view->width() > ntp_background->width() ?
355 ((bookmark_bar_view->width() / 2 - ntp_background->width() / 2) %
356 ntp_background->width()) - ntp_background->width() :
357 bookmark_bar_view->width() / 2 - ntp_background->width() / 2;
358 if (tiling == BrowserThemeProvider::REPEAT)
359 canvas->TileImageInt(*ntp_background, x_pos, y_pos,
360 bookmark_bar_view->width() + ntp_background->width(),
361 2 * bookmark_bar_view->height() + ntp_background->height() + 5);
362 else if (tiling == BrowserThemeProvider::REPEAT_X)
363 canvas->TileImageInt(*ntp_background, x_pos, y_pos,
364 bookmark_bar_view->width() + ntp_background->width(),
365 ntp_background->height());
366 else if (tiling == BrowserThemeProvider::REPEAT_Y)
367 canvas->TileImageInt(*ntp_background,
368 bookmark_bar_view->width() / 2 - ntp_background->width() / 2,
369 y_pos, ntp_background->width(),
370 2 * bookmark_bar_view->height() + ntp_background->height() + 5);
371 else
372 canvas->TileImageInt(*ntp_background,
373 bookmark_bar_view->width() / 2 - ntp_background->width() / 2,
374 y_pos, ntp_background->width(), ntp_background->height());
375 } 180 }
376 } 181 }
377 182
378 /////////////////////////////////////////////////////////////////////////////// 183 ///////////////////////////////////////////////////////////////////////////////
379 // ResizeCorner, private: 184 // ResizeCorner, private:
380 185
381 class ResizeCorner : public views::View { 186 class ResizeCorner : public views::View {
382 public: 187 public:
383 ResizeCorner() { } 188 ResizeCorner() { }
384 189
(...skipping 1405 matching lines...) Expand 10 before | Expand all | Expand 10 after
1790 GetColor(BrowserThemeProvider::COLOR_TOOLBAR); 1595 GetColor(BrowserThemeProvider::COLOR_TOOLBAR);
1791 contents_split_->set_background( 1596 contents_split_->set_background(
1792 views::Background::CreateSolidBackground(bg_color)); 1597 views::Background::CreateSolidBackground(bg_color));
1793 AddChildView(contents_split_); 1598 AddChildView(contents_split_);
1794 set_contents_view(contents_split_); 1599 set_contents_view(contents_split_);
1795 1600
1796 status_bubble_.reset(new StatusBubbleViews(GetWidget())); 1601 status_bubble_.reset(new StatusBubbleViews(GetWidget()));
1797 1602
1798 if (browser_->SupportsWindowFeature(Browser::FEATURE_EXTENSIONSHELF)) { 1603 if (browser_->SupportsWindowFeature(Browser::FEATURE_EXTENSIONSHELF)) {
1799 extension_shelf_ = new ExtensionShelf(browser_.get()); 1604 extension_shelf_ = new ExtensionShelf(browser_.get());
1605 extension_shelf_->set_background(
1606 new BookmarkExtensionBackground(this, extension_shelf_));
1800 extension_shelf_-> 1607 extension_shelf_->
1801 SetAccessibleName(l10n_util::GetString(IDS_ACCNAME_EXTENSIONS)); 1608 SetAccessibleName(l10n_util::GetString(IDS_ACCNAME_EXTENSIONS));
1802 AddChildView(extension_shelf_); 1609 AddChildView(extension_shelf_);
1803 } 1610 }
1804 1611
1805 #if defined(OS_WIN) 1612 #if defined(OS_WIN)
1806 InitSystemMenu(); 1613 InitSystemMenu();
1807 1614
1808 // Create a custom JumpList and add it to an observer of TabRestoreService 1615 // Create a custom JumpList and add it to an observer of TabRestoreService
1809 // so we can update the custom JumpList when a tab is added or removed. 1616 // 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
1861 toolbar_->SetBounds(0, y, browser_view_width, height); 1668 toolbar_->SetBounds(0, y, browser_view_width, height);
1862 return y + height; 1669 return y + height;
1863 } 1670 }
1864 1671
1865 int BrowserView::LayoutBookmarkAndInfoBars(int top) { 1672 int BrowserView::LayoutBookmarkAndInfoBars(int top) {
1866 find_bar_y_ = top + y() - 1; 1673 find_bar_y_ = top + y() - 1;
1867 if (active_bookmark_bar_) { 1674 if (active_bookmark_bar_) {
1868 // If we're showing the Bookmark bar in detached style, then we need to show 1675 // If we're showing the Bookmark bar in detached style, then we need to show
1869 // any Info bar _above_ the Bookmark bar, since the Bookmark bar is styled 1676 // any Info bar _above_ the Bookmark bar, since the Bookmark bar is styled
1870 // to look like it's part of the page. 1677 // to look like it's part of the page.
1871 if (bookmark_bar_view_->IsDetachedStyle()) 1678 if (bookmark_bar_view_->IsDetached())
1872 return LayoutTopBar(LayoutInfoBar(top)); 1679 return LayoutTopBar(LayoutInfoBar(top));
1873 // Otherwise, Bookmark bar first, Info bar second. 1680 // Otherwise, Bookmark bar first, Info bar second.
1874 top = LayoutTopBar(top); 1681 top = LayoutTopBar(top);
1875 } 1682 }
1876 find_bar_y_ = top + y() - 1; 1683 find_bar_y_ = top + y() - 1;
1877 return LayoutInfoBar(top); 1684 return LayoutInfoBar(top);
1878 } 1685 }
1879 1686
1880 int BrowserView::LayoutTopBar(int top) { 1687 int BrowserView::LayoutTopBar(int top) {
1881 // This method lays out the the bookmark bar, and, if required, the extension 1688 // This method lays out the the bookmark bar, and, if required, the extension
1882 // shelf by its side. The bookmark bar appears on the right of the extension 1689 // shelf by its side. The bookmark bar appears on the right of the extension
1883 // shelf. If there are too many bookmark items and extension toolstrips to fit 1690 // shelf. If there are too many bookmark items and extension toolstrips to fit
1884 // in the single bar, some compromises are made as follows: 1691 // in the single bar, some compromises are made as follows:
1885 // 1. The bookmark bar is shrunk till it reaches the minimum width. 1692 // 1. The bookmark bar is shrunk till it reaches the minimum width.
1886 // 2. After reaching the minimum width, the bookmark bar width is kept fixed - 1693 // 2. After reaching the minimum width, the bookmark bar width is kept fixed -
1887 // the extension shelf bar width is reduced. 1694 // the extension shelf bar width is reduced.
1888 DCHECK(active_bookmark_bar_); 1695 DCHECK(active_bookmark_bar_);
1889 int y = top, x = 0; 1696 int y = top, x = 0;
1890 if (!IsBookmarkBarVisible()) { 1697 if (!IsBookmarkBarVisible()) {
1891 bookmark_bar_view_->SetVisible(false); 1698 bookmark_bar_view_->SetVisible(false);
1892 bookmark_bar_view_->SetBounds(0, y, width(), 0); 1699 bookmark_bar_view_->SetBounds(0, y, width(), 0);
1893 if (ShowExtensionsOnTop()) 1700 if (extension_shelf_->IsOnTop())
1894 extension_shelf_->SetVisible(false); 1701 extension_shelf_->SetVisible(false);
1895 return y; 1702 return y;
1896 } 1703 }
1897 1704
1898 int bookmark_bar_height = bookmark_bar_view_->GetPreferredSize().height(); 1705 int bookmark_bar_height = bookmark_bar_view_->GetPreferredSize().height();
1899 y -= kSeparationLineHeight + (bookmark_bar_view_->IsDetachedStyle() ? 1706 y -= kSeparationLineHeight + (bookmark_bar_view_->IsDetached() ?
1900 0 : bookmark_bar_view_->GetToolbarOverlap(false)); 1707 0 : bookmark_bar_view_->GetToolbarOverlap(false));
1901 1708
1902 if (ShowExtensionsOnTop()) { 1709 if (extension_shelf_->IsOnTop()) {
1903 if (!bookmark_bar_view_->IsDetachedStyle()) { 1710 if (!bookmark_bar_view_->IsDetached()) {
1904 int extension_shelf_width = 1711 int extension_shelf_width =
1905 extension_shelf_->GetPreferredSize().width(); 1712 extension_shelf_->GetPreferredSize().width();
1906 int bookmark_bar_given_width = width() - extension_shelf_width; 1713 int bookmark_bar_given_width = width() - extension_shelf_width;
1907 int minimum_allowed_bookmark_bar_width = 1714 int minimum_allowed_bookmark_bar_width =
1908 bookmark_bar_view_->GetMinimumSize().width(); 1715 bookmark_bar_view_->GetMinimumSize().width();
1909 if (bookmark_bar_given_width < minimum_allowed_bookmark_bar_width) { 1716 if (bookmark_bar_given_width < minimum_allowed_bookmark_bar_width) {
1910 // The bookmark bar cannot compromise on its width any more. The 1717 // The bookmark bar cannot compromise on its width any more. The
1911 // extension shelf needs to shrink now. 1718 // extension shelf needs to shrink now.
1912 extension_shelf_width = 1719 extension_shelf_width =
1913 width() - minimum_allowed_bookmark_bar_width; 1720 width() - minimum_allowed_bookmark_bar_width;
1914 } 1721 }
1915 extension_shelf_->SetVisible(true); 1722 extension_shelf_->SetVisible(true);
1916 extension_shelf_->SetBounds(x, y, extension_shelf_width, 1723 extension_shelf_->SetBounds(x, y, extension_shelf_width,
1917 bookmark_bar_height); 1724 bookmark_bar_height);
1918 x += extension_shelf_width; 1725 x += extension_shelf_width;
1919 } else { 1726 } else {
1920 // TODO (sidchat): For detached style bookmark bar, set the extensions 1727 // TODO(sidchat): For detached style bookmark bar, set the extensions
1921 // shelf in a better position. Issue = 20741. 1728 // shelf in a better position. Issue = 20741.
1922 extension_shelf_->SetVisible(false); 1729 extension_shelf_->SetVisible(false);
1923 } 1730 }
1924 } 1731 }
1925 1732
1926 bookmark_bar_view_->SetVisible(true); 1733 bookmark_bar_view_->SetVisible(true);
1927 bookmark_bar_view_->SetBounds(x, y, width() - x, bookmark_bar_height); 1734 bookmark_bar_view_->SetBounds(x, y, width() - x, bookmark_bar_height);
1928 return y + bookmark_bar_height; 1735 return y + bookmark_bar_height;
1929 } 1736 }
1930 1737
1931 int BrowserView::LayoutInfoBar(int top) { 1738 int BrowserView::LayoutInfoBar(int top) {
1932 bool visible = browser_->SupportsWindowFeature(Browser::FEATURE_INFOBAR); 1739 bool visible = browser_->SupportsWindowFeature(Browser::FEATURE_INFOBAR);
1933 int height = visible ? infobar_container_->GetPreferredSize().height() : 0; 1740 int height = visible ? infobar_container_->GetPreferredSize().height() : 0;
1934 infobar_container_->SetVisible(visible); 1741 infobar_container_->SetVisible(visible);
1935 infobar_container_->SetBounds(0, top, width(), height); 1742 infobar_container_->SetBounds(0, top, width(), height);
1936 return top + height; 1743 return top + height;
1937 } 1744 }
1938 1745
1939 void BrowserView::LayoutTabContents(int top, int bottom) { 1746 void BrowserView::LayoutTabContents(int top, int bottom) {
1940 contents_split_->SetBounds(0, top, width(), bottom - top); 1747 contents_split_->SetBounds(0, top, width(), bottom - top);
1941 } 1748 }
1942 1749
1943 int BrowserView::LayoutExtensionAndDownloadShelves() { 1750 int BrowserView::LayoutExtensionAndDownloadShelves() {
1944 // If we're showing the Bookmark bar in detached style, then we need to show 1751 // If we're showing the Bookmark bar in detached style, then we need to show
1945 // any Info bar _above_ the Bookmark bar, since the Bookmark bar is styled 1752 // any Info bar _above_ the Bookmark bar, since the Bookmark bar is styled
1946 // to look like it's part of the page. 1753 // to look like it's part of the page.
1947 int bottom = height(); 1754 int bottom = height();
1948 if (extension_shelf_) { 1755 if (extension_shelf_) {
1949 if (extension_shelf_->IsDetachedStyle()) { 1756 if (extension_shelf_->IsDetached()) {
1950 bottom = LayoutDownloadShelf(bottom); 1757 bottom = LayoutDownloadShelf(bottom);
1951 return LayoutExtensionShelf(bottom); 1758 return LayoutExtensionShelf(bottom);
1952 } 1759 }
1953 // Otherwise, Extension shelf first, Download shelf second. 1760 // Otherwise, Extension shelf first, Download shelf second.
1954 bottom = LayoutExtensionShelf(bottom); 1761 bottom = LayoutExtensionShelf(bottom);
1955 } 1762 }
1956 return LayoutDownloadShelf(bottom); 1763 return LayoutDownloadShelf(bottom);
1957 } 1764 }
1958 1765
1959 int BrowserView::LayoutDownloadShelf(int bottom) { 1766 int BrowserView::LayoutDownloadShelf(int bottom) {
(...skipping 18 matching lines...) Expand all
1978 // frame. 1785 // frame.
1979 int overlap = StatusBubbleViews::kShadowThickness + 1786 int overlap = StatusBubbleViews::kShadowThickness +
1980 (IsMaximized() ? 0 : views::NonClientFrameView::kClientEdgeThickness); 1787 (IsMaximized() ? 0 : views::NonClientFrameView::kClientEdgeThickness);
1981 int height = status_bubble_->GetPreferredSize().height(); 1788 int height = status_bubble_->GetPreferredSize().height();
1982 gfx::Point origin(-overlap, top - height + overlap); 1789 gfx::Point origin(-overlap, top - height + overlap);
1983 ConvertPointToView(this, GetParent(), &origin); 1790 ConvertPointToView(this, GetParent(), &origin);
1984 status_bubble_->SetBounds(origin.x(), origin.y(), width() / 3, height); 1791 status_bubble_->SetBounds(origin.x(), origin.y(), width() / 3, height);
1985 } 1792 }
1986 1793
1987 int BrowserView::LayoutExtensionShelf(int bottom) { 1794 int BrowserView::LayoutExtensionShelf(int bottom) {
1988 if (ShowExtensionsOnTop()) 1795 if (!extension_shelf_ || extension_shelf_->IsOnTop())
1989 return bottom; 1796 return bottom;
1990 1797
1991 if (extension_shelf_) { 1798 if (extension_shelf_) {
1992 bool visible = browser_->SupportsWindowFeature( 1799 bool visible = browser_->SupportsWindowFeature(
1993 Browser::FEATURE_EXTENSIONSHELF); 1800 Browser::FEATURE_EXTENSIONSHELF);
1994 int height = 1801 int height =
1995 visible ? extension_shelf_->GetPreferredSize().height() : 0; 1802 visible ? extension_shelf_->GetPreferredSize().height() : 0;
1996 extension_shelf_->SetVisible(visible); 1803 extension_shelf_->SetVisible(visible);
1997 extension_shelf_->SetBounds(0, bottom - height, width(), height); 1804 extension_shelf_->SetBounds(0, bottom - height, width(), height);
1998 extension_shelf_->Layout(); 1805 extension_shelf_->Layout();
1999 bottom -= height; 1806 bottom -= height;
2000 } 1807 }
2001 return bottom; 1808 return bottom;
2002 } 1809 }
2003 1810
2004 bool BrowserView::MaybeShowBookmarkBar(TabContents* contents) { 1811 bool BrowserView::MaybeShowBookmarkBar(TabContents* contents) {
2005 views::View* new_bookmark_bar_view = NULL; 1812 views::View* new_bookmark_bar_view = NULL;
2006 if (browser_->SupportsWindowFeature(Browser::FEATURE_BOOKMARKBAR) 1813 if (browser_->SupportsWindowFeature(Browser::FEATURE_BOOKMARKBAR)
2007 && contents) { 1814 && contents) {
2008 if (!bookmark_bar_view_.get()) { 1815 if (!bookmark_bar_view_.get()) {
2009 bookmark_bar_view_.reset(new BookmarkBarView(contents->profile(), 1816 bookmark_bar_view_.reset(new BookmarkBarView(contents->profile(),
2010 browser_.get())); 1817 browser_.get()));
2011 bookmark_bar_view_->SetParentOwned(false); 1818 bookmark_bar_view_->SetParentOwned(false);
2012 bookmark_bar_view_->set_background(new BookmarkExtensionBackground(this)); 1819 bookmark_bar_view_->set_background(
1820 new BookmarkExtensionBackground(this, bookmark_bar_view_.get()));
2013 } else { 1821 } else {
2014 bookmark_bar_view_->SetProfile(contents->profile()); 1822 bookmark_bar_view_->SetProfile(contents->profile());
2015 } 1823 }
2016 bookmark_bar_view_->SetPageNavigator(contents); 1824 bookmark_bar_view_->SetPageNavigator(contents);
2017 bookmark_bar_view_-> 1825 bookmark_bar_view_->
2018 SetAccessibleName(l10n_util::GetString(IDS_ACCNAME_BOOKMARKS)); 1826 SetAccessibleName(l10n_util::GetString(IDS_ACCNAME_BOOKMARKS));
2019 new_bookmark_bar_view = bookmark_bar_view_.get(); 1827 new_bookmark_bar_view = bookmark_bar_view_.get();
2020 } 1828 }
2021 return UpdateChildViewAndLayout(new_bookmark_bar_view, &active_bookmark_bar_); 1829 return UpdateChildViewAndLayout(new_bookmark_bar_view, &active_bookmark_bar_);
2022 } 1830 }
(...skipping 265 matching lines...) Expand 10 before | Expand all | Expand 10 after
2288 ticker_.Start(); 2096 ticker_.Start();
2289 2097
2290 pref_service->SetInteger(prefs::kPluginMessageResponseTimeout, 2098 pref_service->SetInteger(prefs::kPluginMessageResponseTimeout,
2291 plugin_message_response_timeout); 2099 plugin_message_response_timeout);
2292 pref_service->SetInteger(prefs::kHungPluginDetectFrequency, 2100 pref_service->SetInteger(prefs::kHungPluginDetectFrequency,
2293 hung_plugin_detect_freq); 2101 hung_plugin_detect_freq);
2294 } 2102 }
2295 #endif 2103 #endif
2296 } 2104 }
2297 2105
2298 bool BrowserView::ShowExtensionsOnTop() {
2299 return extension_shelf_ && CommandLine::ForCurrentProcess()->HasSwitch(
2300 switches::kShowExtensionsOnTop);
2301 }
2302
2303 // static 2106 // static
2304 void BrowserView::InitClass() { 2107 void BrowserView::InitClass() {
2305 static bool initialized = false; 2108 static bool initialized = false;
2306 if (!initialized) { 2109 if (!initialized) {
2307 ResourceBundle& rb = ResourceBundle::GetSharedInstance(); 2110 ResourceBundle& rb = ResourceBundle::GetSharedInstance();
2308 default_favicon_ = *rb.GetBitmapNamed(IDR_DEFAULT_FAVICON); 2111 default_favicon_ = *rb.GetBitmapNamed(IDR_DEFAULT_FAVICON);
2309 initialized = true; 2112 initialized = true;
2310 } 2113 }
2311 } 2114 }
2312 2115
2313 // static 2116 // static
2314 BrowserWindow* BrowserWindow::CreateBrowserWindow(Browser* browser) { 2117 BrowserWindow* BrowserWindow::CreateBrowserWindow(Browser* browser) {
2315 // Create the view and the frame. The frame will attach itself via the view 2118 // Create the view and the frame. The frame will attach itself via the view
2316 // so we don't need to do anything with the pointer. 2119 // so we don't need to do anything with the pointer.
2317 BrowserView* view = new BrowserView(browser); 2120 BrowserView* view = new BrowserView(browser);
2318 BrowserFrame::Create(view, browser->profile()); 2121 BrowserFrame::Create(view, browser->profile());
2319 return view; 2122 return view;
2320 } 2123 }
2321 2124
2322 // static 2125 // static
2323 FindBar* BrowserWindow::CreateFindBar(Browser* browser) { 2126 FindBar* BrowserWindow::CreateFindBar(Browser* browser) {
2324 return browser::CreateFindBar(static_cast<BrowserView*>(browser->window())); 2127 return browser::CreateFindBar(static_cast<BrowserView*>(browser->window()));
2325 } 2128 }
2326 2129
2327 // static 2130 // static
2328 void BrowserList::AllBrowsersClosed() { 2131 void BrowserList::AllBrowsersClosed() {
2329 views::Window::CloseAllSecondaryWindows(); 2132 views::Window::CloseAllSecondaryWindows();
2330 } 2133 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698