910e62b5创建于 1月15日历史提交
// 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/qt/os_settings_provider_qt.h"

#include "base/memory/raw_ptr.h"
#include "base/time/time.h"
#include "ui/gfx/color_utils.h"
#include "ui/native_theme/native_theme.h"
#include "ui/qt/qt_interface.h"

namespace qt {

OsSettingsProviderQt::OsSettingsProviderQt(QtInterface* shim)
    : OsSettingsProvider(PriorityLevel::kProduction), shim_(shim) {}

OsSettingsProviderQt::~OsSettingsProviderQt() = default;

DISABLE_CFI_VCALL
ui::NativeTheme::PreferredColorScheme
OsSettingsProviderQt::PreferredColorScheme() const {
  return color_utils::IsDark(
             shim_->GetColor(ColorType::kWindowBg, ColorState::kNormal))
             ? ui::NativeTheme::PreferredColorScheme::kDark
             : ui::NativeTheme::PreferredColorScheme::kLight;
}

DISABLE_CFI_VCALL
base::TimeDelta OsSettingsProviderQt::CaretBlinkInterval() const {
  // Unfortunately Qt does not seem to have any way to monitor changes to this
  // value; the docs "recommend that widgets do not cache this value". Chrome is
  // not built to constantly recheck the value, so for now we'll just ignore
  // changes while running. (Windows has the same problem.)
  return base::Milliseconds(shim_->GetCursorBlinkIntervalMs());
}

}  // namespace qt