summaryrefslogtreecommitdiffstats
path: root/devtools/client/shared/test/browser_dbg_target-scoped-actor-02.js
diff options
context:
space:
mode:
Diffstat (limited to 'devtools/client/shared/test/browser_dbg_target-scoped-actor-02.js')
-rw-r--r--devtools/client/shared/test/browser_dbg_target-scoped-actor-02.js58
1 files changed, 58 insertions, 0 deletions
diff --git a/devtools/client/shared/test/browser_dbg_target-scoped-actor-02.js b/devtools/client/shared/test/browser_dbg_target-scoped-actor-02.js
new file mode 100644
index 0000000000..c87eda05e0
--- /dev/null
+++ b/devtools/client/shared/test/browser_dbg_target-scoped-actor-02.js
@@ -0,0 +1,58 @@
+/* Any copyright is dedicated to the Public Domain.
+ * http://creativecommons.org/publicdomain/zero/1.0/ */
+
+"use strict";
+
+/**
+ * Check target-scoped actor lifetimes.
+ */
+
+const ACTORS_URL = EXAMPLE_URL + "testactors.js";
+const TAB_URL = TEST_URI_ROOT + "doc_empty-tab-01.html";
+
+add_task(async function () {
+ const tab = await addTab(TAB_URL);
+
+ await registerActorInContentProcess(ACTORS_URL, {
+ prefix: "testOne",
+ constructor: "TestActor1",
+ type: { target: true },
+ });
+
+ const target = await createAndAttachTargetForTab(tab);
+ const { client } = target;
+ const form = target.targetForm;
+
+ await testTargetScopedActor(client, form);
+ await closeTab(client, form);
+ await target.destroy();
+});
+
+async function testTargetScopedActor(client, form) {
+ ok(form.testOneActor, "Found the test target-scoped actor.");
+ ok(
+ form.testOneActor.includes("testOne"),
+ "testOneActor's typeName should be used."
+ );
+
+ const response = await client.request({
+ to: form.testOneActor,
+ type: "ping",
+ });
+ is(response.pong, "pong", "Actor should respond to requests.");
+}
+
+async function closeTab(client, form) {
+ // We need to start listening for the rejection before removing the tab
+ /* eslint-disable-next-line mozilla/rejects-requires-await*/
+ const onReject = Assert.rejects(
+ client.request({ to: form.testOneActor, type: "ping" }),
+ err =>
+ err.message ===
+ `'ping' active request packet to '${form.testOneActor}' ` +
+ `can't be sent as the connection just closed.`,
+ "testOneActor went away."
+ );
+ await removeTab(gBrowser.selectedTab);
+ await onReject;
+}