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

Side by Side Diff: chrome/browser/ui/views/frame/glass_browser_frame_view.cc

Issue 1355893002: Parametrize a variety of constants in preparation for changing them in MD. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebase + fix bugs Created 5 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
OLDNEW
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 #include "chrome/browser/ui/views/frame/glass_browser_frame_view.h" 5 #include "chrome/browser/ui/views/frame/glass_browser_frame_view.h"
6 6
7 #include "base/prefs/pref_service.h" 7 #include "base/prefs/pref_service.h"
8 #include "base/strings/utf_string_conversions.h" 8 #include "base/strings/utf_string_conversions.h"
9 #include "base/win/windows_version.h" 9 #include "base/win/windows_version.h"
10 #include "chrome/app/chrome_command_ids.h" 10 #include "chrome/app/chrome_command_ids.h"
11 #include "chrome/app/chrome_dll_resource.h" 11 #include "chrome/app/chrome_dll_resource.h"
12 #include "chrome/browser/profiles/profile.h" 12 #include "chrome/browser/profiles/profile.h"
13 #include "chrome/browser/themes/theme_properties.h" 13 #include "chrome/browser/themes/theme_properties.h"
14 #include "chrome/browser/ui/views/frame/browser_view.h" 14 #include "chrome/browser/ui/views/frame/browser_view.h"
15 #include "chrome/browser/ui/views/layout_constants.h"
15 #include "chrome/browser/ui/views/profiles/avatar_menu_button.h" 16 #include "chrome/browser/ui/views/profiles/avatar_menu_button.h"
16 #include "chrome/browser/ui/views/profiles/new_avatar_button.h" 17 #include "chrome/browser/ui/views/profiles/new_avatar_button.h"
17 #include "chrome/browser/ui/views/tabs/tab.h" 18 #include "chrome/browser/ui/views/tabs/tab.h"
18 #include "chrome/browser/ui/views/tabs/tab_strip.h" 19 #include "chrome/browser/ui/views/tabs/tab_strip.h"
19 #include "chrome/browser/ui/views/toolbar/toolbar_view.h" 20 #include "chrome/browser/ui/views/toolbar/toolbar_view.h"
20 #include "components/signin/core/browser/signin_header_helper.h" 21 #include "components/signin/core/browser/signin_header_helper.h"
21 #include "components/signin/core/common/profile_management_switches.h" 22 #include "components/signin/core/common/profile_management_switches.h"
22 #include "grit/theme_resources.h" 23 #include "grit/theme_resources.h"
23 #include "skia/ext/image_operations.h" 24 #include "skia/ext/image_operations.h"
24 #include "ui/base/resource/material_design/material_design_controller.h" 25 #include "ui/base/resource/material_design/material_design_controller.h"
(...skipping 28 matching lines...) Expand all
53 // user). 54 // user).
54 const int kAvatarBottomSpacing = 2; 55 const int kAvatarBottomSpacing = 2;
55 // Space between the frame border and the left edge of the avatar. 56 // Space between the frame border and the left edge of the avatar.
56 const int kAvatarLeftSpacing = 2; 57 const int kAvatarLeftSpacing = 2;
57 // Space between the right edge of the avatar and the tabstrip. 58 // Space between the right edge of the avatar and the tabstrip.
58 const int kAvatarRightSpacing = -2; 59 const int kAvatarRightSpacing = -2;
59 // How far the new avatar button is from the left of the minimize button. 60 // How far the new avatar button is from the left of the minimize button.
60 const int kNewAvatarButtonOffset = 5; 61 const int kNewAvatarButtonOffset = 5;
61 // The content left/right images have a shadow built into them. 62 // The content left/right images have a shadow built into them.
62 const int kContentEdgeShadowThickness = 2; 63 const int kContentEdgeShadowThickness = 2;
63 // The top 3 px of the tabstrip is shadow; in maximized mode we push this off
64 // the top of the screen so the tabs appear flush against the screen edge.
65 const int kTabstripTopShadowThickness = 3;
66 // In restored mode, the New Tab button isn't at the same height as the caption 64 // In restored mode, the New Tab button isn't at the same height as the caption
67 // buttons, but the space will look cluttered if it actually slides under them, 65 // buttons, but the space will look cluttered if it actually slides under them,
68 // so we stop it when the gap between the two is down to 5 px. 66 // so we stop it when the gap between the two is down to 5 px.
69 const int kNewTabCaptionRestoredSpacing = 5; 67 const int kNewTabCaptionRestoredSpacing = 5;
70 // In maximized mode, where the New Tab button and the caption buttons are at 68 // In maximized mode, where the New Tab button and the caption buttons are at
71 // similar vertical coordinates, we need to reserve a larger, 16 px gap to avoid 69 // similar vertical coordinates, we need to reserve a larger, 16 px gap to avoid
72 // looking too cluttered. 70 // looking too cluttered.
73 const int kNewTabCaptionMaximizedSpacing = 16; 71 const int kNewTabCaptionMaximizedSpacing = 16;
74 // How far to indent the tabstrip from the left side of the screen when there 72 // How far to indent the tabstrip from the left side of the screen when there
75 // is no avatar icon. 73 // is no avatar icon.
(...skipping 264 matching lines...) Expand 10 before | Expand all | Expand 10 after
340 338
341 int GlassBrowserFrameView::NonClientTopBorderHeight() const { 339 int GlassBrowserFrameView::NonClientTopBorderHeight() const {
342 if (frame()->IsFullscreen()) 340 if (frame()->IsFullscreen())
343 return 0; 341 return 0;
344 342
345 // We'd like to use FrameBorderThickness() here, but the maximized Aero glass 343 // We'd like to use FrameBorderThickness() here, but the maximized Aero glass
346 // frame has a 0 frame border around most edges and a CYSIZEFRAME-thick border 344 // frame has a 0 frame border around most edges and a CYSIZEFRAME-thick border
347 // at the top (see AeroGlassFrame::OnGetMinMaxInfo()). 345 // at the top (see AeroGlassFrame::OnGetMinMaxInfo()).
348 return gfx::win::GetSystemMetricsInDIP(SM_CYSIZEFRAME) + 346 return gfx::win::GetSystemMetricsInDIP(SM_CYSIZEFRAME) +
349 (!frame()->ShouldLeaveOffsetNearTopBorder() ? 347 (!frame()->ShouldLeaveOffsetNearTopBorder() ?
350 -kTabstripTopShadowThickness : kNonClientRestoredExtraThickness); 348 -GetLayoutConstant(TABSTRIP_TOP_SHADOW_HEIGHT) :
349 kNonClientRestoredExtraThickness);
351 } 350 }
352 351
353 void GlassBrowserFrameView::PaintToolbarBackground(gfx::Canvas* canvas) { 352 void GlassBrowserFrameView::PaintToolbarBackground(gfx::Canvas* canvas) {
354 ui::ThemeProvider* tp = GetThemeProvider(); 353 ui::ThemeProvider* tp = GetThemeProvider();
355 354
356 gfx::Rect toolbar_bounds(browser_view()->GetToolbarBounds()); 355 gfx::Rect toolbar_bounds(browser_view()->GetToolbarBounds());
357 gfx::Point toolbar_origin(toolbar_bounds.origin()); 356 gfx::Point toolbar_origin(toolbar_bounds.origin());
358 View::ConvertPointToTarget(browser_view(), this, &toolbar_origin); 357 View::ConvertPointToTarget(browser_view(), this, &toolbar_origin);
359 toolbar_bounds.set_origin(toolbar_origin); 358 toolbar_bounds.set_origin(toolbar_origin);
360 int x = toolbar_bounds.x(); 359 int x = toolbar_bounds.x();
(...skipping 135 matching lines...) Expand 10 before | Expand all | Expand 10 after
496 495
497 int button_x = frame()->GetMinimizeButtonOffset() - 496 int button_x = frame()->GetMinimizeButtonOffset() -
498 kNewAvatarButtonOffset - label_size.width(); 497 kNewAvatarButtonOffset - label_size.width();
499 if (base::i18n::IsRTL()) 498 if (base::i18n::IsRTL())
500 button_x = width() - frame()->GetMinimizeButtonOffset() + 499 button_x = width() - frame()->GetMinimizeButtonOffset() +
501 kNewAvatarButtonOffset; 500 kNewAvatarButtonOffset;
502 501
503 // We need to offset the button correctly in maximized mode, so that the 502 // We need to offset the button correctly in maximized mode, so that the
504 // custom glass style aligns with the native control glass style. The 503 // custom glass style aligns with the native control glass style. The
505 // glass shadow is off by 1px, which was determined by visual inspection. 504 // glass shadow is off by 1px, which was determined by visual inspection.
506 int button_y = !frame()->IsMaximized() ? 1 : 505 const int shadow_height = GetLayoutConstant(TABSTRIP_TOP_SHADOW_HEIGHT);
507 NonClientTopBorderHeight() + kTabstripTopShadowThickness - 1; 506 int button_y = frame()->IsMaximized() ?
507 (NonClientTopBorderHeight() + shadow_height - 1) : 1;
508 508
509 new_avatar_button()->SetBounds( 509 new_avatar_button()->SetBounds(
510 button_x, 510 button_x,
511 button_y, 511 button_y,
512 label_size.width(), 512 label_size.width(),
513 gfx::win::GetSystemMetricsInDIP(SM_CYMENUSIZE) + 1); 513 gfx::win::GetSystemMetricsInDIP(SM_CYMENUSIZE) + 1);
514 } 514 }
515 515
516 void GlassBrowserFrameView::LayoutAvatar() { 516 void GlassBrowserFrameView::LayoutAvatar() {
517 // Even though the avatar is used for both incognito and profiles we always 517 // Even though the avatar is used for both incognito and profiles we always
518 // use the incognito icon to layout the avatar button. The profile icon 518 // use the incognito icon to layout the avatar button. The profile icon
519 // can be customized so we can't depend on its size to perform layout. 519 // can be customized so we can't depend on its size to perform layout.
520 gfx::ImageSkia incognito_icon = browser_view()->GetOTRAvatarIcon(); 520 gfx::ImageSkia incognito_icon = browser_view()->GetOTRAvatarIcon();
521 521
522 int avatar_x = NonClientBorderThickness() + kAvatarLeftSpacing; 522 int avatar_x = NonClientBorderThickness() + kAvatarLeftSpacing;
523 // Move this avatar icon by the size of window controls to prevent it from 523 // Move this avatar icon by the size of window controls to prevent it from
524 // being rendered over them in RTL languages. This code also needs to adjust 524 // being rendered over them in RTL languages. This code also needs to adjust
525 // the width of a tab strip to avoid decreasing this size twice. (See the 525 // the width of a tab strip to avoid decreasing this size twice. (See the
526 // comment in GetBoundsForTabStrip().) 526 // comment in GetBoundsForTabStrip().)
527 if (base::i18n::IsRTL()) 527 if (base::i18n::IsRTL())
528 avatar_x += width() - frame()->GetMinimizeButtonOffset(); 528 avatar_x += width() - frame()->GetMinimizeButtonOffset();
529 529
530 int avatar_bottom = GetTopInset() + 530 int avatar_bottom = GetTopInset() +
531 browser_view()->GetTabStripHeight() - kAvatarBottomSpacing; 531 browser_view()->GetTabStripHeight() - kAvatarBottomSpacing;
532 int avatar_restored_y = avatar_bottom - incognito_icon.height(); 532 int avatar_restored_y = avatar_bottom - incognito_icon.height();
533 const int shadow_height = GetLayoutConstant(TABSTRIP_TOP_SHADOW_HEIGHT);
533 int avatar_y = frame()->IsMaximized() ? 534 int avatar_y = frame()->IsMaximized() ?
534 (NonClientTopBorderHeight() + kTabstripTopShadowThickness) : 535 (NonClientTopBorderHeight() + shadow_height) : avatar_restored_y;
535 avatar_restored_y;
536 avatar_bounds_.SetRect(avatar_x, avatar_y, incognito_icon.width(), 536 avatar_bounds_.SetRect(avatar_x, avatar_y, incognito_icon.width(),
537 browser_view()->ShouldShowAvatar() ? (avatar_bottom - avatar_y) : 0); 537 browser_view()->ShouldShowAvatar() ? (avatar_bottom - avatar_y) : 0);
538 if (avatar_button()) 538 if (avatar_button())
539 avatar_button()->SetBoundsRect(avatar_bounds_); 539 avatar_button()->SetBoundsRect(avatar_bounds_);
540 } 540 }
541 541
542 void GlassBrowserFrameView::LayoutClientView() { 542 void GlassBrowserFrameView::LayoutClientView() {
543 client_view_bounds_ = CalculateClientAreaBounds(width(), height()); 543 client_view_bounds_ = CalculateClientAreaBounds(width(), height());
544 } 544 }
545 545
(...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after
634 static bool initialized = false; 634 static bool initialized = false;
635 if (!initialized) { 635 if (!initialized) {
636 for (int i = 0; i < kThrobberIconCount; ++i) { 636 for (int i = 0; i < kThrobberIconCount; ++i) {
637 throbber_icons_[i] = 637 throbber_icons_[i] =
638 ui::LoadThemeIconFromResourcesDataDLL(IDI_THROBBER_01 + i); 638 ui::LoadThemeIconFromResourcesDataDLL(IDI_THROBBER_01 + i);
639 DCHECK(throbber_icons_[i]); 639 DCHECK(throbber_icons_[i]);
640 } 640 }
641 initialized = true; 641 initialized = true;
642 } 642 }
643 } 643 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698