/* 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"; /* import-globals-from ../../mochitest/role.js */ loadScripts({ name: "role.js", dir: MOCHITESTS_DIR }); const snippet = ` `; add_setup(async function () { await SpecialPowers.pushPrefEnv({ set: [["layout.css.content-visibility.enabled", true]], }); }); async function setContentVisibility(browser, value) { let mutationPromise = (() => { switch (value) { case "hidden": return waitForEvent(EVENT_REORDER, "target"); case "auto": return waitForEvents({ expected: [ [EVENT_REORDER, "child"], [EVENT_REORDER, "content-child"], [EVENT_REORDER, "shadowDiv"], [EVENT_REORDER, "target"], ], }); default: throw new Error(`unexpected content-visibility: ${value}`); } })(); // Change the value of `content-visibility` property for the target info(`Setting content-visibility: ${value}`); await invokeSetAttribute(browser, "target", "class", value); await mutationPromise; } addAccessibleTask( snippet, async function (browser, accDoc) { const target = findAccessibleChildByID(accDoc, "target"); info("Initial Accessibility Structure Test"); testAccessibleTree(target, { SECTION: [] }); await setContentVisibility(browser, "auto"); testAccessibleTree(target, { SECTION: [ { SECTION: [{ TEXT_LEAF: [] }] } /* child */, { SECTION: [{ TEXT_LEAF: [] }] } /* content-child */, { SECTION: [] } /* hidden-subtree-1 */, { SECTION: [{ SECTION: [{ TEXT_LEAF: [] }] }] } /* shadow-host */, ], }); await setContentVisibility(browser, "hidden"); testAccessibleTree(target, { SECTION: [] }); }, { iframe: true, remoteIframe: true, chrome: true } );