summaryrefslogtreecommitdiffstats
path: root/remote/cdp/test/browser/systemInfo
diff options
context:
space:
mode:
Diffstat (limited to 'remote/cdp/test/browser/systemInfo')
-rw-r--r--remote/cdp/test/browser/systemInfo/browser.toml21
-rw-r--r--remote/cdp/test/browser/systemInfo/browser_getProcessInfo.js78
-rw-r--r--remote/cdp/test/browser/systemInfo/head.js9
3 files changed, 108 insertions, 0 deletions
diff --git a/remote/cdp/test/browser/systemInfo/browser.toml b/remote/cdp/test/browser/systemInfo/browser.toml
new file mode 100644
index 0000000000..8d814c91ee
--- /dev/null
+++ b/remote/cdp/test/browser/systemInfo/browser.toml
@@ -0,0 +1,21 @@
+[DEFAULT]
+tags = "cdp"
+subsuite = "remote"
+args = [
+ "--remote-debugging-port",
+ "--remote-allow-origins=null",
+]
+prefs = [ # Bug 1600054: Make CDP Fission compatible
+ "fission.bfcacheInParent=false",
+ "fission.webContentIsolationStrategy=0",
+]
+skip-if = [
+ "display == 'wayland'" # Bug 1861933: Timestamp unreliable due to worker setup
+]
+support-files = [
+ "!/remote/cdp/test/browser/chrome-remote-interface.js",
+ "!/remote/cdp/test/browser/head.js",
+ "head.js",
+]
+
+["browser_getProcessInfo.js"]
diff --git a/remote/cdp/test/browser/systemInfo/browser_getProcessInfo.js b/remote/cdp/test/browser/systemInfo/browser_getProcessInfo.js
new file mode 100644
index 0000000000..fb491e248f
--- /dev/null
+++ b/remote/cdp/test/browser/systemInfo/browser_getProcessInfo.js
@@ -0,0 +1,78 @@
+/* Any copyright is dedicated to the Public Domain.
+ * http://creativecommons.org/publicdomain/zero/1.0/ */
+
+"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) {
+ ok(typeof info.id === "number", "Info has a numeric id");
+ ok(typeof info.type === "string", "Info has a string type");
+ ok(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})`);
+ }
+ }
+}
diff --git a/remote/cdp/test/browser/systemInfo/head.js b/remote/cdp/test/browser/systemInfo/head.js
new file mode 100644
index 0000000000..1a1c90fbf6
--- /dev/null
+++ b/remote/cdp/test/browser/systemInfo/head.js
@@ -0,0 +1,9 @@
+/* Any copyright is dedicated to the Public Domain.
+ * http://creativecommons.org/publicdomain/zero/1.0/ */
+
+"use strict";
+
+Services.scriptloader.loadSubScript(
+ "chrome://mochitests/content/browser/remote/cdp/test/browser/head.js",
+ this
+);