Source code

Revision control

Copy as Markdown

Other Tools

Test Info:

/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
"use strict";
addAccessibleTask(
`
<div id="inertContainer">
<p>before</p>
<div id="inert" inert>inert <button></button></div>
<p>after</p>
</div>
`,
async function testInert(browser, docAcc) {
const inertContainer = findAccessibleChildByID(docAcc, "inertContainer");
const inertTree = {
SECTION: [
// inertContainer
{ PARAGRAPH: [{ TEXT_LEAF: [] }] }, // before
{ PARAGRAPH: [{ TEXT_LEAF: [] }] }, // after
],
};
testAccessibleTree(inertContainer, inertTree);
info("Unsetting inert");
let reordered = waitForEvent(EVENT_REORDER, "inertContainer");
await invokeContentTask(browser, [], () => {
content.document.getElementById("inert").inert = false;
});
await reordered;
testAccessibleTree(inertContainer, {
SECTION: [
// inertContainer
{ PARAGRAPH: [{ TEXT_LEAF: [] }] }, // before
{
SECTION: [
// inert
{ TEXT_LEAF: [] },
{ PUSHBUTTON: [] },
],
},
{ PARAGRAPH: [{ TEXT_LEAF: [] }] }, // after
],
});
info("Setting inert");
reordered = waitForEvent(EVENT_REORDER, "inertContainer");
await invokeContentTask(browser, [], () => {
content.document.getElementById("inert").inert = true;
});
await reordered;
testAccessibleTree(inertContainer, inertTree);
},
{ chrome: true, topLevel: true }
);
addAccessibleTask(
`
<div id="dialogContainer">
dialogContainer
<dialog id="dialog"><button></button></dialog>
</div>
`,
async function testDialog(browser, docAcc) {
const noDialogTree = {
SECTION: [
// dialogContainer
{ TEXT_LEAF: [] },
],
};
testAccessibleTree(
findAccessibleChildByID(docAcc, "dialogContainer"),
noDialogTree
);
info("Showing modal dialog");
let reordered = waitForEvent(EVENT_REORDER, docAcc);
await invokeContentTask(browser, [], () => {
content.document.getElementById("dialog").showModal();
});
await reordered;
// The dialog makes everything else in the document inert.
testAccessibleTree(docAcc, {
DOCUMENT: [{ DIALOG: [{ PUSHBUTTON: [] }] }],
});
info("Closing dialog");
reordered = waitForEvent(EVENT_REORDER, docAcc);
await invokeContentTask(browser, [], () => {
content.document.getElementById("dialog").close();
});
await reordered;
testAccessibleTree(
findAccessibleChildByID(docAcc, "dialogContainer"),
noDialogTree
);
},
{ chrome: true, topLevel: true }
);
addAccessibleTask(
`
<div id="fullscreenContainer">
<div>
<button id="requestFullscreen"
onclick="document.getElementById('fullscreen').requestFullscreen();">
</button>
</div>
<div id="fullscreen"><button></button></div>
</div>
`,
async function testFullscreen(browser, docAcc) {
const fullscreenTree = {
SECTION: [
// fullscreen
{ PUSHBUTTON: [] },
],
};
const notFullscreenTree = {
SECTION: [
// fullscreenContainer
{
SECTION: [
{ PUSHBUTTON: [] }, // requestFullscreen
],
},
fullscreenTree,
],
};
testAccessibleTree(
findAccessibleChildByID(docAcc, "fullscreenContainer"),
notFullscreenTree
);
info("Requesting fullscreen");
// Fullscreen must be requested by a user input event.
let reordered = waitForEvent(EVENT_REORDER, docAcc);
await BrowserTestUtils.synthesizeMouseAtCenter(
"#requestFullscreen",
{},
browser
);
await reordered;
testAccessibleTree(docAcc, { DOCUMENT: [fullscreenTree] });
info("Exiting fullscreen");
reordered = waitForEvent(EVENT_REORDER, docAcc);
await invokeContentTask(browser, [], () => {
content.document.exitFullscreen();
});
await reordered;
testAccessibleTree(
findAccessibleChildByID(docAcc, "fullscreenContainer"),
notFullscreenTree
);
}
);
/**
* Test that display: contents children are correctly omitted from an inert
* subtree.
*/
addAccessibleTask(
`
<div id="inert" style="overflow: hidden;">
<a href="/" style="display: contents;">test</a>
</div>
`,
async function testDisplayContentsInInert(browser, docAcc) {
testAccessibleTree(docAcc, {
DOCUMENT: [{ SECTION: [{ LINK: [{ TEXT_LEAF: [] }] }] }],
});
info("Making inert");
let reordered = waitForEvent(EVENT_REORDER, docAcc);
await invokeContentTask(browser, [], () => {
content.document.getElementById("inert").inert = true;
});
await reordered;
testAccessibleTree(docAcc, { DOCUMENT: [] });
},
{ chrome: true, topLevel: true }
);