Source code

Revision control

Copy as Markdown

Other Tools

Test Info:

/* Any copyright is dedicated to the Public Domain.
"use strict";
requestLongerTimeout(2);
declTest("getActor with mismatch", {
matches: ["*://*/*"],
async test(browser) {
let parent = browser.browsingContext.currentWindowGlobal;
ok(parent, "WindowGlobalParent should have value.");
Assert.throws(
() => parent.getActor("TestWindow"),
/NotSupportedError/,
"Should throw if it doesn't match."
);
await SpecialPowers.spawn(browser, [], async function () {
let child = content.windowGlobalChild;
ok(child, "WindowGlobalChild should have value.");
Assert.throws(
() => child.getActor("TestWindow"),
/NotSupportedError/,
"Should throw if it doesn't match."
);
});
},
});
declTest("getActor with matches", {
matches: ["*://*/*"],
url: TEST_URL,
async test(browser) {
let parent = browser.browsingContext.currentWindowGlobal;
ok(parent.getActor("TestWindow"), "JSWindowActorParent should have value.");
await SpecialPowers.spawn(browser, [], async function () {
let child = content.windowGlobalChild;
ok(child, "WindowGlobalChild should have value.");
ok(child.getActor("TestWindow"), "JSWindowActorChild should have value.");
});
},
});
declTest("getActor with iframe matches", {
allFrames: true,
matches: ["*://*/*"],
async test(browser) {
await SpecialPowers.spawn(browser, [TEST_URL], async function (url) {
// Create and append an iframe into the window's document.
let frame = content.document.createElement("iframe");
frame.src = url;
content.document.body.appendChild(frame);
await ContentTaskUtils.waitForEvent(frame, "load");
is(content.frames.length, 1, "There should be an iframe.");
await content.SpecialPowers.spawn(frame, [], () => {
let child = content.windowGlobalChild;
Assert.ok(
child.getActor("TestWindow"),
"JSWindowActorChild should have value."
);
});
});
},
});
declTest("getActor with iframe mismatch", {
allFrames: true,
matches: ["about:home"],
async test(browser) {
await SpecialPowers.spawn(browser, [TEST_URL], async function (url) {
// Create and append an iframe into the window's document.
let frame = content.document.createElement("iframe");
frame.src = url;
content.document.body.appendChild(frame);
await ContentTaskUtils.waitForEvent(frame, "load");
is(content.frames.length, 1, "There should be an iframe.");
await content.SpecialPowers.spawn(frame, [], () => {
let child = content.windowGlobalChild;
Assert.throws(
() => child.getActor("TestWindow"),
/NotSupportedError/,
"Should throw if it doesn't match."
);
});
});
},
});
declTest("getActor with remoteType match", {
remoteTypes: ["web"],
async test(browser) {
let parent = browser.browsingContext.currentWindowGlobal;
ok(parent.getActor("TestWindow"), "JSWindowActorParent should have value.");
await SpecialPowers.spawn(browser, [], async function () {
let child = content.windowGlobalChild;
ok(child, "WindowGlobalChild should have value.");
ok(child.getActor("TestWindow"), "JSWindowActorChild should have value.");
});
},
});
declTest("getActor with iframe remoteType match", {
allFrames: true,
remoteTypes: ["web"],
async test(browser) {
await SpecialPowers.spawn(browser, [TEST_URL], async function (url) {
let child = content.windowGlobalChild;
ok(child, "WindowGlobalChild should have value.");
ok(child.getActor("TestWindow"), "JSWindowActorChild should have value.");
// Create and append an iframe into the window's document.
let frame = content.document.createElement("iframe");
frame.src = url;
content.document.body.appendChild(frame);
await ContentTaskUtils.waitForEvent(frame, "load");
is(content.frames.length, 1, "There should be an iframe.");
await content.SpecialPowers.spawn(frame, [], () => {
child = content.windowGlobalChild;
Assert.ok(
child.getActor("TestWindow"),
"JSWindowActorChild should have value."
);
});
});
},
});
declTest("getActor with remoteType mismatch", {
remoteTypes: ["privilegedabout"],
url: TEST_URL,
async test(browser) {
let parent = browser.browsingContext.currentWindowGlobal;
Assert.throws(
() => parent.getActor("TestWindow"),
/NotSupportedError/,
"Should throw if its remoteTypes don't match."
);
await SpecialPowers.spawn(browser, [], async function () {
let child = content.windowGlobalChild;
ok(child, "WindowGlobalChild should have value.");
Assert.throws(
() => child.getActor("TestWindow"),
/NotSupportedError/,
"Should throw if its remoteTypes don't match."
);
});
},
});
declTest("getActor with iframe messageManagerGroups match", {
allFrames: true,
messageManagerGroups: ["browsers"],
async test(browser) {
let parent = browser.browsingContext.currentWindowGlobal;
ok(parent.getActor("TestWindow"), "JSWindowActorParent should have value.");
await SpecialPowers.spawn(browser, [TEST_URL], async function () {
let child = content.windowGlobalChild;
ok(child, "WindowGlobalChild should have value.");
ok(child.getActor("TestWindow"), "JSWindowActorChild should have value.");
});
},
});
declTest("getActor with iframe messageManagerGroups mismatch", {
allFrames: true,
messageManagerGroups: ["sidebars"],
async test(browser) {
let parent = browser.browsingContext.currentWindowGlobal;
Assert.throws(
() => parent.getActor("TestWindow"),
/NotSupportedError/,
"Should throw if its messageManagerGroups doesn't match."
);
await SpecialPowers.spawn(browser, [TEST_URL], async function () {
let child = content.windowGlobalChild;
ok(child, "WindowGlobalChild should have value.");
Assert.throws(
() => child.getActor("TestWindow"),
/NotSupportedError/,
"Should throw if its messageManagerGroups doesn't match."
);
});
},
});
declTest("getActor without allFrames", {
allFrames: false,
async test(browser) {
await SpecialPowers.spawn(browser, [], async function () {
// Create and append an iframe into the window's document.
let frame = content.document.createElement("iframe");
content.document.body.appendChild(frame);
is(content.frames.length, 1, "There should be an iframe.");
let child = frame.contentWindow.windowGlobalChild;
Assert.throws(
() => child.getActor("TestWindow"),
/NotSupportedError/,
"Should throw if allFrames is false."
);
});
},
});
declTest("getActor with allFrames", {
allFrames: true,
async test(browser) {
await SpecialPowers.spawn(browser, [], async function () {
// Create and append an iframe into the window's document.
let frame = content.document.createElement("iframe");
content.document.body.appendChild(frame);
is(content.frames.length, 1, "There should be an iframe.");
let child = frame.contentWindow.windowGlobalChild;
let actorChild = child.getActor("TestWindow");
ok(actorChild, "JSWindowActorChild should have value.");
});
},
});
declTest("getActor without includeChrome", {
includeChrome: false,
async test(_browser, win) {
let parent = win.docShell.browsingContext.currentWindowGlobal;
SimpleTest.doesThrow(
() => parent.getActor("TestWindow"),
"Should throw if includeChrome is false."
);
},
});
declTest("getActor with includeChrome", {
includeChrome: true,
async test(_browser, win) {
let parent = win.docShell.browsingContext.currentWindowGlobal;
let actorParent = parent.getActor("TestWindow");
ok(actorParent, "JSWindowActorParent should have value.");
},
});