// Copyright 2021 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

module crosapi.mojom;

import "mojo/public/mojom/base/time.mojom";
import "skia/public/mojom/skcolor.mojom";
import "ui/color/scheme_variant.mojom";

// Information about Ash's native theme to be propagated to lacros.
[Stable]
struct NativeThemeInfo {
  // If true, then dark mode is enabled
  // If false, then dark mode is disabled.
  bool dark_mode;
  // The color used to generate the color palette.
  [MinVersion=1] skia.mojom.SkColor? seed_color;
  // Describes the algorithm used to generate the color palette based on
  // `seed_color`.
  [MinVersion=1] color.mojom.SchemeVariant? scheme_variant;
  // The interval at which to blink the text caret. If 0, the caret will
  // not blink. If not set, a system default will be used.
  [MinVersion=2] mojo_base.mojom.TimeDelta? caret_blink_interval;
};

// Interface for native theme info observers. Implemented by lacros-chrome.
// Used by ash-chrome to send native theme info updates.
[Stable, Uuid="87938675-6596-4ddd-a0d1-3110c27651e9"]
interface NativeThemeInfoObserver {
  // Called when an observed native theme info changes, subject to throttling
  // to avoid flodding.
  OnNativeThemeInfoChanged@0(NativeThemeInfo native_theme_info);
};

// Interface that allows clients to receive info and configs related to the
// system (ash) native theme changes. Implemented by ash-chrome.
[Stable, Uuid="0500f813-27d6-4102-a5d1-0115827c1aae"]
interface NativeThemeService {
  // Adds an observer for changes in native theme info. The observer is fired
  // immediately with the current value. Multiple observers may be registered.
  AddNativeThemeInfoObserver@0(
      pending_remote<NativeThemeInfoObserver> observer);
};
