Backed out changeset 3d08c3cce533 (bug 1432856) Backed out changeset 49d03dd89b17 (bug 1432856) Backed out changeset 62fc84c8ce99 (bug 1432856) Backed out changeset a8a4fa63f5b2 (bug 1432856) Backed out changeset c81f3d5b9bf3 (bug 1432856) Backed out changeset 8351a8b1d96a (bug 1432856) Backed out changeset a303b775a51b (bug 1432856)
53 lines
1.6 KiB
JavaScript
53 lines
1.6 KiB
JavaScript
const { ContentTaskUtils } = ChromeUtils.import(
|
|
"resource://testing-common/ContentTaskUtils.jsm"
|
|
);
|
|
function waitForFullScreenState(browser, state) {
|
|
info("inside waitforfullscreenstate");
|
|
return new Promise(resolve => {
|
|
let eventReceived = false;
|
|
|
|
let observe = (subject, topic, data) => {
|
|
if (!eventReceived) {
|
|
return;
|
|
}
|
|
Services.obs.removeObserver(observe, "fullscreen-painted");
|
|
resolve();
|
|
};
|
|
Services.obs.addObserver(observe, "fullscreen-painted");
|
|
|
|
window.addEventListener(
|
|
`MozDOMFullscreen:${state ? "Entered" : "Exited"}`,
|
|
() => {
|
|
eventReceived = true;
|
|
},
|
|
{ once: true }
|
|
);
|
|
});
|
|
}
|
|
|
|
/**
|
|
* Spawns content task in browser to enter / leave fullscreen
|
|
* @param browser - Browser to use for JS fullscreen requests
|
|
* @param {Boolean} fullscreenState - true to enter fullscreen, false to leave
|
|
* @returns {Promise} - Resolves once fullscreen change is applied
|
|
*/
|
|
async function changeFullscreen(browser, fullScreenState) {
|
|
await new Promise(resolve =>
|
|
SimpleTest.waitForFocus(resolve, browser.ownerGlobal)
|
|
);
|
|
let fullScreenChange = waitForFullScreenState(browser, fullScreenState);
|
|
SpecialPowers.spawn(browser, [fullScreenState], async state => {
|
|
// Wait for document focus before requesting full-screen
|
|
await ContentTaskUtils.waitForCondition(
|
|
() => docShell.isActive && content.document.hasFocus(),
|
|
"Waiting for document focus"
|
|
);
|
|
if (state) {
|
|
content.document.body.requestFullscreen();
|
|
} else {
|
|
content.document.exitFullscreen();
|
|
}
|
|
});
|
|
return fullScreenChange;
|
|
}
|