Index: ui/native_theme/native_theme_aura.cc |
diff --git a/ui/native_theme/native_theme_aura.cc b/ui/native_theme/native_theme_aura.cc |
index d03a0d3211edc0f216a157fa5ff93b7ce22cab68..dc7166e6c491181340db32218f2f768dc48c7bab 100644 |
--- a/ui/native_theme/native_theme_aura.cc |
+++ b/ui/native_theme/native_theme_aura.cc |
@@ -35,8 +35,12 @@ constexpr int kOverlayScrollbarMinimumLength = 12; |
constexpr SkAlpha kOverlayScrollbarAlphaNormal = 0x4D; |
constexpr SkAlpha kOverlayScrollbarAlphaHovered = 0x80; |
constexpr SkAlpha kOverlayScrollbarAlphaPressed = 0x80; |
-constexpr SkColor kOverlayScrollbarThumbColor = SK_ColorBLACK; |
-constexpr SkColor kOverlayScrollbarStrokeColor = SK_ColorWHITE; |
+ |
+// Indexed by ScrollbarOverlayColorTheme. |
+constexpr SkColor kOverlayScrollbarThumbColor[] = {SK_ColorBLACK, |
+ SK_ColorWHITE}; |
+constexpr SkColor kOverlayScrollbarStrokeColor[] = {SK_ColorWHITE, |
+ SK_ColorBLACK}; |
SkAlpha ThumbAlphaForState(NativeTheme::State state) { |
bool overlay = IsOverlayScrollbarEnabled(); |
@@ -73,7 +77,7 @@ NativeThemeAura* NativeThemeAura::instance() { |
} |
NativeThemeAura::NativeThemeAura() { |
- // We don't draw scrollbar buttons. |
+// We don't draw scrollbar buttons. |
#if defined(OS_CHROMEOS) |
set_scrollbar_button_length(0); |
#endif |
@@ -90,8 +94,7 @@ NativeThemeAura::NativeThemeAura() { |
static_assert(kPressed == 3, "states unexpectedly changed"); |
} |
-NativeThemeAura::~NativeThemeAura() { |
-} |
+NativeThemeAura::~NativeThemeAura() {} |
// This implementation returns hardcoded colors. |
SkColor NativeThemeAura::GetSystemColor(ColorId color_id) const { |
@@ -177,35 +180,30 @@ void NativeThemeAura::PaintScrollbarTrack( |
canvas->drawIRect(gfx::RectToSkIRect(rect), paint); |
} |
-void NativeThemeAura::PaintScrollbarThumb(SkCanvas* canvas, |
- Part part, |
- State state, |
- const gfx::Rect& rect) const { |
+void NativeThemeAura::PaintScrollbarThumb( |
+ SkCanvas* canvas, |
+ Part part, |
+ State state, |
+ const gfx::Rect& rect, |
+ ScrollbarOverlayColorTheme theme) const { |
// Do not paint if state is disabled. |
if (state == kDisabled) |
return; |
- PaintScrollbarThumbStateTransition(canvas, part, state, state, 1.0, rect); |
-} |
+ TRACE_EVENT0("blink", "NativeThemeAura::PaintScrollbarThumb"); |
-void NativeThemeAura::PaintScrollbarThumbStateTransition( |
- SkCanvas* canvas, |
- Part part, |
- State start_state, |
- State end_state, |
- double progress, |
- const gfx::Rect& rect) const { |
- TRACE_EVENT0("blink", "NativeThemeAura::PaintScrollbarThumbStateTransition"); |
gfx::Rect thumb_rect(rect); |
SkColor thumb_color; |
+ SkAlpha thumb_alpha = ThumbAlphaForState(state); |
+ |
if (IsOverlayScrollbarEnabled()) { |
+ thumb_color = kOverlayScrollbarThumbColor[theme]; |
+ |
// In overlay mode, draw a stroke (border). |
constexpr int kStrokeWidth = kOverlayScrollbarStrokeWidth; |
- SkAlpha stroke_alpha = gfx::Tween::IntValueBetween( |
- progress, ThumbAlphaForState(start_state), |
- ThumbAlphaForState(end_state)); |
SkPaint paint; |
- paint.setColor(SkColorSetA(kOverlayScrollbarStrokeColor, stroke_alpha)); |
+ paint.setColor( |
+ SkColorSetA(kOverlayScrollbarStrokeColor[theme], thumb_alpha)); |
paint.setStyle(SkPaint::kStroke_Style); |
paint.setStrokeWidth(kStrokeWidth); |
@@ -216,7 +214,6 @@ void NativeThemeAura::PaintScrollbarThumbStateTransition( |
// Inset the all the edges edges so we fill-in the stroke below. |
thumb_rect.Inset(kStrokeWidth, kStrokeWidth); |
- thumb_color = kOverlayScrollbarThumbColor; |
} else { |
// If there are no scrollbuttons then provide some padding so that the thumb |
// doesn't touch the top of the track. |
@@ -232,9 +229,7 @@ void NativeThemeAura::PaintScrollbarThumbStateTransition( |
} |
SkPaint paint; |
- SkAlpha alpha = gfx::Tween::IntValueBetween( |
- progress, ThumbAlphaForState(start_state), ThumbAlphaForState(end_state)); |
- paint.setColor(SkColorSetA(thumb_color, alpha)); |
+ paint.setColor(SkColorSetA(thumb_color, thumb_alpha)); |
canvas->drawIRect(gfx::RectToSkIRect(thumb_rect), paint); |
} |