summaryrefslogtreecommitdiffstats
path: root/devtools/server/tests/browser/test-spawn-actor-in-parent.js
diff options
context:
space:
mode:
Diffstat (limited to 'devtools/server/tests/browser/test-spawn-actor-in-parent.js')
-rw-r--r--devtools/server/tests/browser/test-spawn-actor-in-parent.js94
1 files changed, 94 insertions, 0 deletions
diff --git a/devtools/server/tests/browser/test-spawn-actor-in-parent.js b/devtools/server/tests/browser/test-spawn-actor-in-parent.js
new file mode 100644
index 0000000000..eeb9a4ef4e
--- /dev/null
+++ b/devtools/server/tests/browser/test-spawn-actor-in-parent.js
@@ -0,0 +1,94 @@
+/* Any copyright is dedicated to the Public Domain.
+ * http://creativecommons.org/publicdomain/zero/1.0/ */
+
+"use strict";
+
+const protocol = require("devtools/shared/protocol");
+const { FrontClassWithSpec } = protocol;
+const {
+ DevToolsServerConnection,
+} = require("devtools/server/devtools-server-connection");
+const Services = require("Services");
+
+const inContentSpec = protocol.generateActorSpec({
+ typeName: "inContent",
+
+ methods: {
+ isInContent: {
+ request: {},
+ response: {
+ isInContent: protocol.RetVal("boolean"),
+ },
+ },
+ spawnInParent: {
+ request: {
+ url: protocol.Arg(0),
+ },
+ response: protocol.RetVal("json"),
+ },
+ },
+});
+
+exports.InContentActor = protocol.ActorClassWithSpec(inContentSpec, {
+ initialize: function(conn) {
+ protocol.Actor.prototype.initialize.call(this, conn);
+ },
+
+ isInContent: function() {
+ return (
+ Services.appinfo.processType == Services.appinfo.PROCESS_TYPE_CONTENT
+ );
+ },
+
+ spawnInParent: async function(url) {
+ const actorID = await this.conn.spawnActorInParentProcess(this.actorID, {
+ module: url,
+ constructor: "InParentActor",
+ // In the browser mochitest script, we are asserting these arguments passed to
+ // InParentActor constructor
+ args: [1, 2, 3],
+ });
+ return {
+ inParentActor: actorID,
+ };
+ },
+});
+
+class InContentFront extends FrontClassWithSpec(inContentSpec) {}
+exports.InContentFront = InContentFront;
+
+const inParentSpec = protocol.generateActorSpec({
+ typeName: "inParent",
+
+ methods: {
+ test: {
+ request: {},
+ response: protocol.RetVal("json"),
+ },
+ },
+});
+
+exports.InParentActor = protocol.ActorClassWithSpec(inParentSpec, {
+ initialize: function(conn, a1, a2, a3, mm) {
+ protocol.Actor.prototype.initialize.call(this, conn);
+ // We save all arguments to later assert them in `test` request
+ this.conn = conn;
+ this.args = [a1, a2, a3];
+ this.mm = mm;
+ },
+
+ test: function() {
+ return {
+ args: this.args,
+ isInParent:
+ Services.appinfo.processType == Services.appinfo.PROCESS_TYPE_DEFAULT,
+ conn: this.conn instanceof DevToolsServerConnection,
+ // We don't have access to MessageListenerManager in Sandboxes,
+ // so fallback to constructor name checks...
+ mm: Object.getPrototypeOf(this.mm).constructor.name,
+ };
+ },
+});
+
+class InParentFront extends FrontClassWithSpec(inParentSpec) {}
+exports.InParentFront = InParentFront;