blob: 66403b83e4ccc7252fbbe06f9391df026298b191 [file] [edit]
// Copyright 2025 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "ui/native_theme/mock_os_settings_provider.h"
#include <optional>
#include "base/containers/flat_map.h"
#include "base/time/time.h"
#include "third_party/skia/include/core/SkColor.h"
#include "ui/color/color_provider_key.h"
#include "ui/native_theme/native_theme.h"
namespace ui {
MockOsSettingsProvider::MockOsSettingsProvider()
: OsSettingsProvider(PriorityLevel::kTesting) {}
MockOsSettingsProvider::~MockOsSettingsProvider() = default;
bool MockOsSettingsProvider::DarkColorSchemeAvailable() const {
return dark_color_scheme_available_;
}
NativeTheme::PreferredColorScheme MockOsSettingsProvider::PreferredColorScheme()
const {
return preferred_color_scheme_;
}
ColorProviderKey::UserColorSource MockOsSettingsProvider::PreferredColorSource()
const {
return preferred_color_source_;
}
NativeTheme::PreferredContrast MockOsSettingsProvider::PreferredContrast()
const {
return preferred_contrast_;
}
bool MockOsSettingsProvider::PrefersReducedTransparency() const {
return prefers_reduced_transparency_;
}
bool MockOsSettingsProvider::PrefersInvertedColors() const {
return prefers_inverted_colors_;
}
bool MockOsSettingsProvider::ForcedColorsActive() const {
return forced_colors_active_;
}
std::optional<SkColor> MockOsSettingsProvider::AccentColor() const {
return accent_color_;
}
std::optional<SkColor> MockOsSettingsProvider::Color(ColorId color_id) const {
const auto it = colors_.find(color_id);
return (it == colors_.end()) ? std::nullopt : std::make_optional(it->second);
}
std::optional<ColorProviderKey::SchemeVariant>
MockOsSettingsProvider::SchemeVariant() const {
return scheme_variant_;
}
base::TimeDelta MockOsSettingsProvider::CaretBlinkInterval() const {
return caret_blink_interval_;
}
void MockOsSettingsProvider::SetDarkColorSchemeAvailable(
bool dark_color_scheme_available) {
dark_color_scheme_available_ = dark_color_scheme_available;
NotifyOnSettingsChanged();
}
void MockOsSettingsProvider::SetPreferredColorScheme(
NativeTheme::PreferredColorScheme preferred_color_scheme) {
preferred_color_scheme_ = preferred_color_scheme;
NotifyOnSettingsChanged();
}
void MockOsSettingsProvider::SetPreferredColorSource(
ColorProviderKey::UserColorSource preferred_color_source) {
preferred_color_source_ = preferred_color_source;
NotifyOnSettingsChanged();
}
void MockOsSettingsProvider::SetPreferredContrast(
NativeTheme::PreferredContrast preferred_contrast) {
preferred_contrast_ = preferred_contrast;
NotifyOnSettingsChanged();
}
void MockOsSettingsProvider::SetPrefersReducedTransparency(
bool prefers_reduced_transparency) {
prefers_reduced_transparency_ = prefers_reduced_transparency;
NotifyOnSettingsChanged();
}
void MockOsSettingsProvider::SetPrefersInvertedColors(
bool prefers_inverted_colors) {
prefers_inverted_colors_ = prefers_inverted_colors;
NotifyOnSettingsChanged();
}
void MockOsSettingsProvider::SetForcedColorsActive(bool forced_colors_active) {
forced_colors_active_ = forced_colors_active;
NotifyOnSettingsChanged();
}
void MockOsSettingsProvider::SetAccentColor(SkColor accent_color) {
accent_color_ = accent_color;
NotifyOnSettingsChanged();
}
void MockOsSettingsProvider::SetColor(ColorId color_id, SkColor color) {
colors_[color_id] = color;
NotifyOnSettingsChanged();
}
void MockOsSettingsProvider::SetSchemeVariant(
ColorProviderKey::SchemeVariant scheme_variant) {
scheme_variant_ = scheme_variant;
NotifyOnSettingsChanged();
}
void MockOsSettingsProvider::SetCaretBlinkInterval(
base::TimeDelta caret_blink_interval) {
caret_blink_interval_ = caret_blink_interval;
NotifyOnSettingsChanged();
}
} // namespace ui