chromium/services/device/public/mojom/wake_lock_provider.mojom

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

module device.mojom;

import "services/device/public/mojom/wake_lock_context.mojom";
import "services/device/public/mojom/wake_lock.mojom";

interface WakeLockProvider {

  // Gets a WakeLockContext that is associated with |context_id|. |context_id|
  // is used to obtain the NativeView associated with the relevant context on
  // Android (see WakeLockContextCallback). |context_id| must be >= 0.
  GetWakeLockContextForID(int32 context_id,
                          pending_receiver<WakeLockContext> context);

  // Gets a WakeLock outside of any context. This method can be used
  // if the client does not have any context available (e.g., is not
  // within the context of a WebContents). However, note that the resulting
  // Wake Lock will not have any effect on Android.
  GetWakeLockWithoutContext(WakeLockType type,
                            WakeLockReason reason,
                            string description,
                            pending_receiver<WakeLock> wake_lock);

  // Notifies the caller if no wake lock of type |type| is currently activated.
  // If it is activated then the caller is notified on each deactivation event
  // after this call.
  NotifyOnWakeLockDeactivation(WakeLockType type,
                               pending_remote<WakeLockObserver> observer);

  // Test-only method that returns the number of activated wake locks of type
  // |type|.
  GetActiveWakeLocksForTests(WakeLockType type) => (int32 count);
};

interface WakeLockObserver {
  // Called when a wake lock of type |type| is canceled for the last time i.e.
  // no wake lock of type |type| is held across the system.
  OnWakeLockDeactivated(WakeLockType type);
};