1
0
Fork 0
firefox/toolkit/content/tests/widgets/test_nac_mutations.html
Daniel Baumann 5e9a113729
Adding upstream version 140.0.
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
2025-06-25 09:37:52 +02:00

77 lines
2.3 KiB
HTML

<!doctype html>
<title>UA Widget mutation observer test</title>
<script src="/tests/SimpleTest/SimpleTest.js"></script>
<script src="/tests/SimpleTest/EventUtils.js"></script>
<link rel="stylesheet" href="/tests/SimpleTest/test.css" />
<video controls id="video"></video>
<div style="overflow: scroll; width: 100px; height: 100px" id="scroller"></div>
<script>
const video = document.getElementById("video");
const scroller = document.getElementById("scroller");
async function test_mutations_internal(
observedNode,
elementToMutate,
expectMutations
) {
let resolveMutations;
let mutations = new Promise(r => {
resolveMutations = r;
});
let observer = new MutationObserver(function (m) {
ok(expectMutations, "Mutations should be expected");
resolveMutations(m);
});
SpecialPowers.wrap(observer).observe(observedNode, {
subtree: true,
attributes: true,
chromeOnlyNodes: expectMutations,
});
elementToMutate.setAttribute("unlikely", `value-${expectMutations}`);
if (expectMutations) {
await mutations;
} else {
await new Promise(r => SimpleTest.executeSoon(r));
}
observer.disconnect();
}
async function test_mutations(observedNode, elementToMutate) {
for (let chromeOnlyNodes of [true, false]) {
info(`Testing chromeOnlyNodes: ${chromeOnlyNodes}`);
await test_mutations_internal(
observedNode,
elementToMutate,
chromeOnlyNodes
);
}
}
add_task(async function test_ua_mutations() {
let shadow = SpecialPowers.wrap(video).openOrClosedShadowRoot;
ok(!!shadow, "UA Widget ShadowRoot exists");
await test_mutations(shadow, shadow.querySelector("*"));
});
add_task(async function test_scrollbar_mutations_same_anon_tree() {
let scrollbar = SpecialPowers.wrap(
window
).InspectorUtils.getChildrenForNode(scroller, true, false)[0];
is(scrollbar.tagName, "scrollbar", "should find a scrollbar");
await test_mutations(scrollbar, scrollbar);
});
add_task(async function test_scrollbar_mutations_same_tree() {
let scrollbar = SpecialPowers.wrap(
window
).InspectorUtils.getChildrenForNode(scroller, true, false)[0];
is(scrollbar.tagName, "scrollbar", "should find a scrollbar");
await test_mutations(scroller, scrollbar);
});
</script>