chromium/third_party/blink/renderer/modules/compute_pressure/pressure_observer.idl

// 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.

// https://w3c.github.io/compute-pressure/#dom-pressuresource
enum PressureSource {
  "cpu"
};

// https://w3c.github.io/compute-pressure/#the-pressureobserver-object
[
    Exposed=(DedicatedWorker,SharedWorker,Window),
    RuntimeEnabled=ComputePressure,
    SecureContext
] interface PressureObserver {
  [
    MeasureAs=PressureObserver_Constructor
  ] constructor(PressureUpdateCallback callback);

  [
    CallWith=ScriptState,
    MeasureAs=PressureObserver_Observe,
    RaisesException
  ] Promise<undefined> observe(PressureSource source,
                               optional PressureObserverOptions options = {});

  [
    MeasureAs=PressureObserver_Unobserve
  ] void unobserve(PressureSource source);

  [MeasureAs=PressureObserver_Disconnect] void disconnect();

  [
    SameObject,
    SaveSameObject
  ] static readonly attribute FrozenArray<PressureSource> knownSources;

  [
    MeasureAs=PressureObserver_TakeRecords
  ] sequence<PressureRecord> takeRecords();
};