chromium/chromeos/crosapi/mojom/idle_service.mojom

// 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";

// Information needed to deduce idle state. Seralized time are in microseconds.
[Stable]
struct IdleInfo {
  // For PowerPolicyController::GetMaxPolicyAutoScreenLockDelay().
  mojo_base.mojom.TimeDelta auto_lock_delay;

  // For UserActivityDetector::last_activity_time().
  mojo_base.mojom.TimeTicks last_activity_time;

  bool is_locked;
};

// Interface for idle info observers. Implemented by lacros-chrome. Used by
// ash-chrome to send idle info updates.
[Stable, Uuid="3bd0e430-2afa-4a3b-b0c7-b8ef617322d1"]
interface IdleInfoObserver {
  // Called when an observed idle info changes, subject to throttling to avoid
  // flodding.
  OnIdleInfoChanged@0(IdleInfo idle_info);
};

// Interface that allows clients to receive info and configs related to the
// idle state of the system. Implemented by ash-chrome.
[Stable, Uuid="f426b526-38ba-48cc-be0f-e0a26e390122"]
interface IdleService {
  // Adds an observer for changes in idle info. The observer is fired
  // immediately with the current value. Multiple observers may be registered.
  AddIdleInfoObserver@0(pending_remote<IdleInfoObserver> observer);
};