summaryrefslogtreecommitdiff
path: root/chromium/content/child/webthemeengine_impl_mac.cc
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/content/child/webthemeengine_impl_mac.cc')
-rw-r--r--chromium/content/child/webthemeengine_impl_mac.cc61
1 files changed, 61 insertions, 0 deletions
diff --git a/chromium/content/child/webthemeengine_impl_mac.cc b/chromium/content/child/webthemeengine_impl_mac.cc
index dbd8f0bda68..f8aa72dbe3c 100644
--- a/chromium/content/child/webthemeengine_impl_mac.cc
+++ b/chromium/content/child/webthemeengine_impl_mac.cc
@@ -18,4 +18,65 @@ void WebThemeEngineMac::SetForcedColors(
forced_colors_ = forced_colors;
}
+void WebThemeEngineMac::Paint(cc::PaintCanvas* canvas,
+ WebThemeEngine::Part part,
+ WebThemeEngine::State state,
+ const blink::WebRect& rect,
+ const WebThemeEngine::ExtraParams* extra_params,
+ blink::WebColorScheme color_scheme) {
+ if (IsScrollbarPart(part)) {
+ PaintMacScrollBarParts(canvas, part, state, rect, extra_params,
+ color_scheme);
+ return;
+ }
+
+ WebThemeEngineDefault::Paint(canvas, part, state, rect, extra_params,
+ color_scheme);
+}
+
+bool WebThemeEngineMac::IsScrollbarPart(WebThemeEngine::Part part) {
+ switch (part) {
+ case WebThemeEngine::kPartScrollbarHorizontalTrack:
+ case WebThemeEngine::kPartScrollbarVerticalTrack:
+ case WebThemeEngine::kPartScrollbarHorizontalThumb:
+ case WebThemeEngine::kPartScrollbarVerticalThumb:
+ case WebThemeEngine::kPartScrollbarCorner:
+ return true;
+ default:
+ return false;
+ }
+}
+
+void WebThemeEngineMac::PaintMacScrollBarParts(
+ cc::PaintCanvas* canvas,
+ WebThemeEngine::Part part,
+ WebThemeEngine::State state,
+ const blink::WebRect& rect,
+ const WebThemeEngine::ExtraParams* extra_params,
+ blink::WebColorScheme color_scheme) {
+ ui::NativeTheme::ExtraParams native_theme_extra_params;
+ native_theme_extra_params.scrollbar_extra.is_hovering =
+ extra_params->scrollbar_extra.is_hovering;
+ native_theme_extra_params.scrollbar_extra.is_overlay =
+ extra_params->scrollbar_extra.is_overlay;
+ switch (extra_params->scrollbar_extra.orientation) {
+ case WebThemeEngine::kVerticalOnRight:
+ native_theme_extra_params.scrollbar_extra.orientation =
+ ui::NativeTheme::ScrollbarOrientation::kVerticalOnRight;
+ break;
+ case WebThemeEngine::kVerticalOnLeft:
+ native_theme_extra_params.scrollbar_extra.orientation =
+ ui::NativeTheme::ScrollbarOrientation::kVerticalOnLeft;
+ break;
+ case WebThemeEngine::kHorizontal:
+ native_theme_extra_params.scrollbar_extra.orientation =
+ ui::NativeTheme::ScrollbarOrientation::kHorizontal;
+ break;
+ }
+
+ ui::NativeTheme::GetInstanceForNativeUi()->Paint(
+ canvas, NativeThemePart(part), NativeThemeState(state), gfx::Rect(rect),
+ native_theme_extra_params, NativeColorScheme(color_scheme));
+}
+
} // namespace content