summaryrefslogtreecommitdiffstats
path: root/devtools/shared/specs/director-manager.js
diff options
context:
space:
mode:
Diffstat (limited to 'devtools/shared/specs/director-manager.js')
-rw-r--r--devtools/shared/specs/director-manager.js190
1 files changed, 190 insertions, 0 deletions
diff --git a/devtools/shared/specs/director-manager.js b/devtools/shared/specs/director-manager.js
new file mode 100644
index 000000000..8a9bf77ee
--- /dev/null
+++ b/devtools/shared/specs/director-manager.js
@@ -0,0 +1,190 @@
+/* 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,
+ Arg,
+ Option,
+ RetVal,
+ generateActorSpec,
+} = require("devtools/shared/protocol");
+
+/**
+ * Type describing a messageport event
+ */
+types.addDictType("messageportevent", {
+ isTrusted: "boolean",
+ data: "nullable:primitive",
+ origin: "nullable:string",
+ lastEventId: "nullable:string",
+ source: "messageport",
+ ports: "nullable:array:messageport"
+});
+
+const messagePortSpec = generateActorSpec({
+ typeName: "messageport",
+
+ /**
+ * Events emitted by this actor.
+ */
+ events: {
+ message: {
+ type: "message",
+ msg: Arg(0, "nullable:messageportevent")
+ }
+ },
+
+ methods: {
+ postMessage: {
+ oneway: true,
+ request: {
+ msg: Arg(0, "nullable:json")
+ }
+ },
+ start: {
+ oneway: true,
+ request: {}
+ },
+ close: {
+ oneway: true,
+ request: {}
+ },
+ finalize: {
+ oneway: true
+ },
+ },
+});
+
+exports.messagePortSpec = messagePortSpec;
+
+/**
+ * Type describing a director-script error
+ */
+types.addDictType("director-script-error", {
+ directorScriptId: "string",
+ message: "nullable:string",
+ stack: "nullable:string",
+ fileName: "nullable:string",
+ lineNumber: "nullable:number",
+ columnNumber: "nullable:number"
+});
+
+/**
+ * Type describing a director-script attach event
+ */
+types.addDictType("director-script-attach", {
+ directorScriptId: "string",
+ url: "string",
+ innerId: "number",
+ port: "nullable:messageport"
+});
+
+/**
+ * Type describing a director-script detach event
+ */
+types.addDictType("director-script-detach", {
+ directorScriptId: "string",
+ innerId: "number"
+});
+
+const directorScriptSpec = generateActorSpec({
+ typeName: "director-script",
+
+ /**
+ * Events emitted by this actor.
+ */
+ events: {
+ error: {
+ type: "error",
+ data: Arg(0, "director-script-error")
+ },
+ attach: {
+ type: "attach",
+ data: Arg(0, "director-script-attach")
+ },
+ detach: {
+ type: "detach",
+ data: Arg(0, "director-script-detach")
+ }
+ },
+
+ methods: {
+ setup: {
+ request: {
+ reload: Option(0, "boolean"),
+ skipAttach: Option(0, "boolean")
+ },
+ oneway: true
+ },
+ getMessagePort: {
+ request: { },
+ response: {
+ port: RetVal("nullable:messageport")
+ }
+ },
+ finalize: {
+ oneway: true
+ },
+ },
+});
+
+exports.directorScriptSpec = directorScriptSpec;
+
+const directorManagerSpec = generateActorSpec({
+ typeName: "director-manager",
+
+ /**
+ * Events emitted by this actor.
+ */
+ events: {
+ "director-script-error": {
+ type: "error",
+ data: Arg(0, "director-script-error")
+ },
+ "director-script-attach": {
+ type: "attach",
+ data: Arg(0, "director-script-attach")
+ },
+ "director-script-detach": {
+ type: "detach",
+ data: Arg(0, "director-script-detach")
+ }
+ },
+
+ methods: {
+ list: {
+ response: {
+ directorScripts: RetVal("json")
+ }
+ },
+ enableByScriptIds: {
+ oneway: true,
+ request: {
+ selectedIds: Arg(0, "array:string"),
+ reload: Option(1, "boolean")
+ }
+ },
+ disableByScriptIds: {
+ oneway: true,
+ request: {
+ selectedIds: Arg(0, "array:string"),
+ reload: Option(1, "boolean")
+ }
+ },
+ getByScriptId: {
+ request: {
+ scriptId: Arg(0, "string")
+ },
+ response: {
+ directorScript: RetVal("director-script")
+ }
+ },
+ finalize: {
+ oneway: true
+ },
+ },
+});
+
+exports.directorManagerSpec = directorManagerSpec;