blob: 34b6592283adf43e32d41ef78e276f3a47113822 [file] [log] [blame]
// Copyright 2014 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "third_party/blink/renderer/core/layout/layout_theme_win.h"
#include <windows.h>
#include "third_party/blink/public/platform/platform.h"
#include "third_party/blink/renderer/platform/runtime_enabled_features.h"
#include "third_party/blink/renderer/platform/web_test_support.h"
namespace blink {
scoped_refptr<LayoutTheme> LayoutThemeWin::Create() {
return base::AdoptRef(new LayoutThemeWin());
}
LayoutTheme& LayoutTheme::NativeTheme() {
DEFINE_STATIC_REF(LayoutTheme, layout_theme, (LayoutThemeWin::Create()));
return *layout_theme;
}
Color LayoutThemeWin::SystemColor(CSSValueID css_value_id,
WebColorScheme color_scheme) const {
blink::WebThemeEngine::SystemThemeColor theme_color;
switch (css_value_id) {
case CSSValueID::kActivetext:
case CSSValueID::kLinktext:
case CSSValueID::kVisitedtext:
theme_color = blink::WebThemeEngine::SystemThemeColor::kHotlight;
break;
case CSSValueID::kButtonface:
theme_color = blink::WebThemeEngine::SystemThemeColor::kButtonFace;
break;
case CSSValueID::kButtontext:
theme_color = blink::WebThemeEngine::SystemThemeColor::kButtonText;
break;
case CSSValueID::kGraytext:
theme_color = blink::WebThemeEngine::SystemThemeColor::kGrayText;
break;
case CSSValueID::kHighlight:
theme_color = blink::WebThemeEngine::SystemThemeColor::kHighlight;
break;
case CSSValueID::kHighlighttext:
theme_color = blink::WebThemeEngine::SystemThemeColor::kHighlightText;
break;
case CSSValueID::kWindow:
case CSSValueID::kCanvas:
case CSSValueID::kField:
theme_color = blink::WebThemeEngine::SystemThemeColor::kWindow;
break;
case CSSValueID::kWindowtext:
case CSSValueID::kCanvastext:
case CSSValueID::kFieldtext:
theme_color = blink::WebThemeEngine::SystemThemeColor::kWindowText;
break;
default:
return LayoutThemeDefault::SystemColor(css_value_id, color_scheme);
}
if (!WebTestSupport::IsRunningWebTest() && Platform::Current() &&
Platform::Current()->ThemeEngine()) {
const base::Optional<SkColor> system_color =
Platform::Current()->ThemeEngine()->GetSystemColor(theme_color);
if (system_color)
return Color(system_color.value());
}
return LayoutThemeDefault::SystemColor(css_value_id, color_scheme);
}
} // namespace blink