function addWindow(target, name, { options, resolve }) { return content.SpecialPowers.spawn(
target,
[name, contexts[name], options, resolve],
(name, context, options, resolve) => {
let win = this.content.open(context, name, options);
let bc = win && win.docShell.browsingContext;
if (resolve) { returnnew Promise(resolve => this.content.addEventListener("message", () => resolve(bc))
);
} return Promise.resolve({ name });
}
);
}
// We're going to create a tree that looks like the // following. // // top sixth seventh // / \ // / \ / // first second // / \ / // / \ // third fourth - - - // / // / // fifth // // The idea is to have one top level non-auxiliary browsing // context, five nested, one top level auxiliary with an // opener, and one top level without an opener. Given that // set of related and one unrelated browsing contexts we // wish to confirm that targeting is able to find // appropriate browsing contexts.
// WindowGlobalChild.findBrowsingContextWithName requires access // checks, which can only be performed in the process of the accessor // WindowGlobalChild. function findWithName(bc, name) { return content.SpecialPowers.spawn(bc, [name], name => { return content.windowGlobalChild.findBrowsingContextWithName(
name
);
});
}
for (let [start, accessible] of frames) { for (let frame of frames.keys()) { if (accessible.includes(frame)) {
await reachable(start, frame);
} else {
await unreachable(start, frame);
}
}
await unreachable(start, seventh);
}
let topBrowserId = topBC.browserId; Assert.greater(topBrowserId, 0, "Should have a browser ID."); for (let [name, bc] of Object.entries({
first,
second,
third,
fourth,
fifth,
})) {
is(
bc.browserId,
topBrowserId,
`${name} frame should have the same browserId as top.`
);
}
Assert.greater(sixth.browserId, 0, "sixth should have a browserId.");
isnot(
sixth.browserId,
topBrowserId, "sixth frame should have a different browserId to top."
);
is(
browser.browserId,
browserIds[0], "browser should have the right browserId."
);
is(
browser.browsingContext.browserId,
browserIds[0], "browser's BrowsingContext should have the right browserId."
);
is(
sixth.linkedBrowser.browserId,
browserIds[1], "sixth should have the right browserId."
);
is(
sixth.linkedBrowser.browsingContext.browserId,
browserIds[1], "sixth's BrowsingContext should have the right browserId."
);
for (let tab of [sixth, seventh]) {
BrowserTestUtils.removeTab(tab);
}
}
);
});
¤ Dauer der Verarbeitung: 0.16 Sekunden
(vorverarbeitet)
¤
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung ist noch experimentell.