summaryrefslogtreecommitdiffstats
path: root/remote/cdp/domains/parent/SystemInfo.sys.mjs
diff options
context:
space:
mode:
Diffstat (limited to 'remote/cdp/domains/parent/SystemInfo.sys.mjs')
-rw-r--r--remote/cdp/domains/parent/SystemInfo.sys.mjs48
1 files changed, 48 insertions, 0 deletions
diff --git a/remote/cdp/domains/parent/SystemInfo.sys.mjs b/remote/cdp/domains/parent/SystemInfo.sys.mjs
new file mode 100644
index 0000000000..8b5e4a27c2
--- /dev/null
+++ b/remote/cdp/domains/parent/SystemInfo.sys.mjs
@@ -0,0 +1,48 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+import { Domain } from "chrome://remote/content/cdp/domains/Domain.sys.mjs";
+
+export class SystemInfo extends Domain {
+ async getProcessInfo() {
+ const procInfo = await ChromeUtils.requestProcInfo();
+
+ // Add child processes
+ const processInfo = procInfo.children.map(proc => ({
+ type: this.#getProcessType(proc.type),
+ id: proc.pid,
+ cpuTime: this.#getCpuTime(proc.cpuTime),
+ }));
+
+ // Add parent process
+ processInfo.unshift({
+ type: "browser",
+ id: procInfo.pid,
+ cpuTime: this.#getCpuTime(procInfo.cpuTime),
+ });
+
+ return processInfo;
+ }
+
+ #getProcessType(type) {
+ // Map internal types to CDP types if applicable
+ switch (type) {
+ case "gpu":
+ return "GPU";
+
+ case "web":
+ case "webIsolated":
+ case "privilegedabout":
+ return "renderer";
+
+ default:
+ return type;
+ }
+ }
+
+ #getCpuTime(cpuTime) {
+ // cpuTime is tracked internally as nanoseconds, CDP is in seconds
+ return cpuTime / 1000 / 1000 / 1000;
+ }
+}