Source code
Revision control
Copy as Markdown
Other Tools
Test Info:
const testPage =
getRootDirectory(gTestPath).replace(
) + "iframe_orientation.html";
async function runTest(width, height, expectedOrientation) {
if (width && height) {
info(`Running test with window size = [${width}, ${height}]`);
let { promise, resolve } = Promise.withResolvers();
window.onresize = () => resolve();
window.resizeTo(width, height);
await promise;
}
const tab = await BrowserTestUtils.openNewForegroundTab(gBrowser, testPage);
const [reference, iframes] = await SpecialPowers.spawn(
tab.linkedBrowser,
[],
() => {
const win = content.wrappedJSObject;
const scr = win.screen;
const reference = {
mozOrientation: scr.mozOrientation,
"orientation.angle": scr.orientation.angle,
"orientation.type": scr.orientation.type,
};
const iframes = {};
for (const target of win.document.getElementsByTagName("iframe")) {
const targetScr = target.contentWindow.screen;
iframes[target.id] = {
mozOrientation: targetScr.mozOrientation,
"orientation.angle": targetScr.orientation.angle,
"orientation.type": targetScr.orientation.type,
};
}
return [reference, iframes];
}
);
for (const [key, value] of Object.entries(reference)) {
info(`Reference ${key} = ${value}`);
}
if (expectedOrientation) {
is(
reference["orientation.type"],
expectedOrientation,
"We are spoofing the orientation correctly for the main document."
);
}
for (const [target, values] of Object.entries(iframes)) {
for (const [key, value] of Object.entries(values)) {
is(
value,
reference[key],
`${key} on ${target} matches the embedder document.`
);
}
}
await BrowserTestUtils.removeTab(tab);
}
add_setup(async () => {
await SpecialPowers.pushPrefEnv({
set: [["privacy.resistFingerprinting", true]],
});
});
add_task(async () => {
if (AppConstants.platform === "android") {
await runTest();
} else {
await runTest(1000, 600, "landscape-primary");
await runTest(400, 800, "portrait-primary");
}
});