Source code
Revision control
Copy as Markdown
Other Tools
Test Info: Warnings
- This test gets skipped with pattern: display == 'wayland'
- Manifest: remote/cdp/test/browser/systemInfo/browser.toml
/* Any copyright is dedicated to the Public Domain.
"use strict";
add_task(
async function getProcessInfoDetails({ client }) {
const { SystemInfo } = client;
const processInfo = await SystemInfo.getProcessInfo();
assertProcesses(processInfo);
},
{ createTab: false }
);
add_task(
async function getProcessInfoMultipleTabs({ client }) {
const { SystemInfo, Target } = client;
const { newTab: newTab1 } = await openTab(Target);
const { newTab: newTab2 } = await openTab(Target);
const { newTab: newTab3 } = await openTab(Target);
const { newTab: newTab4 } = await openTab(Target);
const processInfo = await SystemInfo.getProcessInfo();
assertProcesses(processInfo, [newTab1, newTab2, newTab3, newTab4]);
},
{ createTab: false }
);
add_task(
async function getProcessInfoMultipleWindows({ client }) {
const { SystemInfo, Target } = client;
const { newWindow: newWindow1 } = await openWindow(Target);
const { newWindow: newWindow2 } = await openWindow(Target);
const processInfo = await SystemInfo.getProcessInfo();
assertProcesses(processInfo, [
...newWindow1.gBrowser.tabs,
...newWindow2.gBrowser.tabs,
]);
await BrowserTestUtils.closeWindow(newWindow1);
await BrowserTestUtils.closeWindow(newWindow2);
},
{ createTab: false }
);
function assertProcesses(processInfo, tabs) {
ok(Array.isArray(processInfo), "Process info is an array");
for (const info of processInfo) {
Assert.strictEqual(typeof info.id, "number", "Info has a numeric id");
Assert.strictEqual(typeof info.type, "string", "Info has a string type");
Assert.strictEqual(
typeof info.cpuTime,
"number",
"Info has a numeric cpuTime"
);
}
const getByType = type => processInfo.filter(info => info.type === type);
is(
getByType("browser").length,
1,
"Got expected amount of browser processes"
);
ok(!!getByType("renderer").length, "Got at least one renderer process");
if (tabs) {
const rendererPids = new Set(
processInfo.filter(info => info.type === "renderer").map(info => info.id)
);
for (const tab of tabs) {
const pid = tab.linkedBrowser.browsingContext.currentWindowGlobal.osPid;
ok(rendererPids.has(pid), `Found process info for pid (${pid})`);
}
}
}