blob: da77b3eae54341c989299aa066311cab6a89f416 [file] [log] [blame]
// 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/os_settings_provider_ash.h"
#include <optional>
#include "third_party/skia/include/core/SkColor.h"
#include "ui/color/color_provider_key.h"
#include "ui/native_theme/native_theme.h"
namespace ui {
// static
OsSettingsProviderAsh* OsSettingsProviderAsh::instance_ = nullptr;
OsSettingsProviderAsh::OsSettingsProviderAsh()
: OsSettingsProvider(PriorityLevel::kProduction) {
// Nesting multiple `OsSettingsProviderAsh` instances is not currently
// supported.
CHECK(!instance_);
instance_ = this;
}
OsSettingsProviderAsh::~OsSettingsProviderAsh() {
CHECK_EQ(instance_, this);
instance_ = nullptr;
}
// static
OsSettingsProviderAsh* OsSettingsProviderAsh::GetInstance() {
Get();
return instance_;
}
NativeTheme::PreferredColorScheme OsSettingsProviderAsh::PreferredColorScheme()
const {
return preferred_color_scheme_;
}
std::optional<SkColor> OsSettingsProviderAsh::AccentColor() const {
return accent_color_;
}
std::optional<ColorProviderKey::SchemeVariant>
OsSettingsProviderAsh::SchemeVariant() const {
return scheme_variant_;
}
void OsSettingsProviderAsh::SetColorPaletteData(
NativeTheme::PreferredColorScheme preferred_color_scheme,
std::optional<SkColor> accent_color,
std::optional<ColorProviderKey::SchemeVariant> scheme_variant) {
preferred_color_scheme_ = preferred_color_scheme;
accent_color_ = accent_color;
scheme_variant_ = scheme_variant;
NotifyOnSettingsChanged();
}
} // namespace ui