summaryrefslogtreecommitdiffstats
path: root/devtools/shared/specs/promises.js
diff options
context:
space:
mode:
Diffstat (limited to 'devtools/shared/specs/promises.js')
-rw-r--r--devtools/shared/specs/promises.js56
1 files changed, 56 insertions, 0 deletions
diff --git a/devtools/shared/specs/promises.js b/devtools/shared/specs/promises.js
new file mode 100644
index 000000000..ef57c3bae
--- /dev/null
+++ b/devtools/shared/specs/promises.js
@@ -0,0 +1,56 @@
+/* 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 {
+ Arg,
+ RetVal,
+ generateActorSpec,
+ types
+} = require("devtools/shared/protocol");
+
+// Teach protocol.js how to deal with legacy actor types
+types.addType("ObjectActor", {
+ write: actor => actor.grip(),
+ read: grip => grip
+});
+
+const promisesSpec = generateActorSpec({
+ typeName: "promises",
+
+ events: {
+ // Event emitted for new promises allocated in debuggee and bufferred by
+ // sending the list of promise objects in a batch.
+ "new-promises": {
+ type: "new-promises",
+ data: Arg(0, "array:ObjectActor"),
+ },
+ // Event emitted for promise settlements.
+ "promises-settled": {
+ type: "promises-settled",
+ data: Arg(0, "array:ObjectActor")
+ }
+ },
+
+ methods: {
+ attach: {
+ request: {},
+ response: {},
+ },
+
+ detach: {
+ request: {},
+ response: {},
+ },
+
+ listPromises: {
+ request: {},
+ response: {
+ promises: RetVal("array:ObjectActor"),
+ },
+ }
+ }
+});
+
+exports.promisesSpec = promisesSpec;