1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74
|
const testPage =
getRootDirectory(gTestPath).replace(
"chrome://mochitests/content",
"https://example.com"
) + "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");
}
});
|