/* 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( `

before

inert

after

`, 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( `
dialogContainer
`, 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( `
`, 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( `
test
`, 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 } );