blob: 3ca71b8207312a1f867377741eb6a130b8d153f6 [file] [log] [blame]
// 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.
// Counters for assessing CPU utilization. Each field is monotonically
// increasing while the processor is powered on. Values are in milliseconds.
dictionary CpuTime {
// The cumulative time used by userspace programs on this processor.
required double user;
// The cumulative time used by kernel programs on this processor.
required double kernel;
// The cumulative time spent idle by this processor.
required double idle;
// The total cumulative time for this processor. This value is equal to
// user + kernel + idle.
required double total;
};
dictionary ProcessorInfo {
// Cumulative usage info for this logical processor.
required CpuTime usage;
};
dictionary CpuInfo {
// The number of logical processors.
required long numOfProcessors;
// The architecture name of the processors.
required DOMString archName;
// The model name of the processors.
required DOMString modelName;
// A set of feature codes indicating some of the processor's capabilities.
// The currently supported codes are "mmx", "sse", "sse2", "sse3", "ssse3",
// "sse4_1", "sse4_2", and "avx".
required sequence<DOMString> features;
// Information about each logical processor.
required sequence<ProcessorInfo> processors;
// List of CPU temperature readings from each thermal zone of the CPU.
// Temperatures are in degrees Celsius.
//
// <b>Currently supported on Chrome OS only.</b>
required sequence<double> temperatures;
};
// Use the <code>system.cpu</code> API to query CPU metadata.
interface CPU {
// Queries basic CPU information of the system.
// |PromiseValue|: info
[requiredCallback] static Promise<CpuInfo> getInfo();
};
partial interface System {
static attribute CPU cpu;
};
partial interface Browser {
static attribute System system;
};