summaryrefslogtreecommitdiffstats
path: root/devtools/shared/specs/root.js
diff options
context:
space:
mode:
Diffstat (limited to 'devtools/shared/specs/root.js')
-rw-r--r--devtools/shared/specs/root.js142
1 files changed, 142 insertions, 0 deletions
diff --git a/devtools/shared/specs/root.js b/devtools/shared/specs/root.js
new file mode 100644
index 0000000000..a18060aa40
--- /dev/null
+++ b/devtools/shared/specs/root.js
@@ -0,0 +1,142 @@
+/* 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/. */
+"use strict";
+
+const {
+ types,
+ generateActorSpec,
+ RetVal,
+ Arg,
+ Option,
+} = require("resource://devtools/shared/protocol.js");
+
+types.addDictType("root.listWorkers", {
+ workers: "array:workerDescriptor",
+});
+types.addDictType("root.listServiceWorkerRegistrations", {
+ registrations: "array:serviceWorkerRegistration",
+});
+
+const rootSpecPrototype = {
+ typeName: "root",
+
+ methods: {
+ getRoot: {
+ request: {},
+ response: RetVal("json"),
+ },
+
+ listTabs: {
+ request: {},
+ response: {
+ tabs: RetVal("array:tabDescriptor"),
+ },
+ },
+
+ getTab: {
+ request: {
+ browserId: Option(0, "number"),
+ },
+ response: {
+ tab: RetVal("tabDescriptor"),
+ },
+ },
+
+ listAddons: {
+ request: {
+ iconDataURL: Option(0, "boolean"),
+ },
+ response: {
+ addons: RetVal("array:webExtensionDescriptor"),
+ },
+ },
+
+ listWorkers: {
+ request: {},
+ response: RetVal("root.listWorkers"),
+ },
+
+ listServiceWorkerRegistrations: {
+ request: {},
+ response: RetVal("root.listServiceWorkerRegistrations"),
+ },
+
+ listProcesses: {
+ request: {},
+ response: {
+ processes: RetVal("array:processDescriptor"),
+ },
+ },
+
+ getProcess: {
+ request: {
+ id: Arg(0, "number"),
+ },
+ response: {
+ processDescriptor: RetVal("processDescriptor"),
+ },
+ },
+
+ watchResources: {
+ request: {
+ resourceTypes: Arg(0, "array:string"),
+ },
+ response: {},
+ },
+
+ unwatchResources: {
+ request: {
+ resourceTypes: Arg(0, "array:string"),
+ },
+ oneway: true,
+ },
+
+ clearResources: {
+ request: {
+ resourceTypes: Arg(0, "array:string"),
+ },
+ oneway: true,
+ },
+
+ requestTypes: {
+ request: {},
+ response: RetVal("json"),
+ },
+
+ // Note that RootFront also implements 'echo' requests
+ // that can't be described via protocol.js specs.
+ },
+
+ events: {
+ tabListChanged: {
+ type: "tabListChanged",
+ },
+ workerListChanged: {
+ type: "workerListChanged",
+ },
+ addonListChanged: {
+ type: "addonListChanged",
+ },
+ serviceWorkerRegistrationListChanged: {
+ type: "serviceWorkerRegistrationListChanged",
+ },
+ processListChanged: {
+ type: "processListChanged",
+ },
+
+ "resource-available-form": {
+ type: "resource-available-form",
+ resources: Arg(0, "array:json"),
+ },
+ "resource-destroyed-form": {
+ type: "resource-destroyed-form",
+ resources: Arg(0, "array:json"),
+ },
+ },
+};
+
+const rootSpec = generateActorSpec(rootSpecPrototype);
+
+exports.rootSpecPrototype = rootSpecPrototype;
+exports.rootSpec = rootSpec;