diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-19 00:47:55 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-19 00:47:55 +0000 |
commit | 26a029d407be480d791972afb5975cf62c9360a6 (patch) | |
tree | f435a8308119effd964b339f76abb83a57c29483 /devtools/client/inspector/markup/test/browser_markup_node_not_displayed_02.js | |
parent | Initial commit. (diff) | |
download | firefox-26a029d407be480d791972afb5975cf62c9360a6.tar.xz firefox-26a029d407be480d791972afb5975cf62c9360a6.zip |
Adding upstream version 124.0.1.upstream/124.0.1
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to '')
-rw-r--r-- | devtools/client/inspector/markup/test/browser_markup_node_not_displayed_02.js | 147 |
1 files changed, 147 insertions, 0 deletions
diff --git a/devtools/client/inspector/markup/test/browser_markup_node_not_displayed_02.js b/devtools/client/inspector/markup/test/browser_markup_node_not_displayed_02.js new file mode 100644 index 0000000000..19d57072f5 --- /dev/null +++ b/devtools/client/inspector/markup/test/browser_markup_node_not_displayed_02.js @@ -0,0 +1,147 @@ +/* Any copyright is dedicated to the Public Domain. + http://creativecommons.org/publicdomain/zero/1.0/ */ + +"use strict"; + +// Tests that nodes are marked as displayed and not-displayed dynamically, when +// their display changes + +const TEST_URL = URL_ROOT + "doc_markup_not_displayed.html"; +const TEST_DATA = [ + { + desc: "Hiding a node by creating a new stylesheet", + selector: "#normal-div", + before: true, + changeStyle: () => { + const div = content.document.createElement("div"); + div.id = "new-style"; + div.innerHTML = "<style>#normal-div {display:none;}</style>"; + content.document.body.appendChild(div); + }, + after: false, + }, + { + desc: "Showing a node by deleting an existing stylesheet", + selector: "#normal-div", + before: false, + changeStyle: () => content.document.getElementById("new-style").remove(), + after: true, + }, + { + desc: "Hiding a node by changing its style property", + selector: "#display-none", + before: false, + changeStyle: () => { + const node = content.document.querySelector("#display-none"); + node.style.display = "block"; + }, + after: true, + }, + { + desc: "Showing a node by removing its hidden attribute", + selector: "#hidden-true", + before: false, + changeStyle: () => + content.document.querySelector("#hidden-true").removeAttribute("hidden"), + after: true, + }, + { + desc: "Hiding a node by adding a hidden attribute", + selector: "#hidden-true", + before: true, + changeStyle: () => + content.document + .querySelector("#hidden-true") + .setAttribute("hidden", true), + after: false, + }, + { + desc: "Showing a node by changin a stylesheet's rule", + selector: "#hidden-via-stylesheet", + before: false, + changeStyle: () => { + content.document.styleSheets[0].cssRules[0].style.setProperty( + "display", + "inline" + ); + }, + after: true, + }, + { + desc: "Hiding a node by adding a new rule to a stylesheet", + selector: "#hidden-via-stylesheet", + before: true, + changeStyle: () => { + content.document.styleSheets[0].insertRule( + "#hidden-via-stylesheet {display: none;}", + 1 + ); + }, + after: false, + }, + { + desc: "Hiding a node by adding a class that matches an existing rule", + selector: "#normal-div", + before: true, + changeStyle: () => { + content.document.styleSheets[0].insertRule( + ".a-new-class {display: none;}", + 2 + ); + content.document + .querySelector("#normal-div") + .classList.add("a-new-class"); + }, + after: false, + }, +]; + +add_task(async function () { + const { inspector } = await openInspectorForURL(TEST_URL); + + for (const data of TEST_DATA) { + info("Running test case: " + data.desc); + await runTestData(inspector, data); + } +}); + +async function runTestData( + inspector, + { selector, before, changeStyle, after } +) { + info("Getting the " + selector + " test node"); + const nodeFront = await getNodeFront(selector, inspector); + const container = getContainerForNodeFront(nodeFront, inspector); + is( + !container.elt.classList.contains("not-displayed"), + before, + "The container is marked as " + (before ? "shown" : "hidden") + ); + + info("Listening for the display-change event"); + const onDisplayChanged = new Promise(resolve => { + inspector.markup.walker.once("display-change", resolve); + }); + + info("Making style changes"); + await SpecialPowers.spawn(gBrowser.selectedBrowser, [], changeStyle); + const nodes = await onDisplayChanged; + + info("Verifying that the list of changed nodes include our container"); + + ok(nodes.length, "The display-change event was received with a nodes"); + let foundContainer = false; + for (const node of nodes) { + if (getContainerForNodeFront(node, inspector) === container) { + foundContainer = true; + break; + } + } + ok(foundContainer, "Container is part of the list of changed nodes"); + + is( + !container.elt.classList.contains("not-displayed"), + after, + "The container is marked as " + (after ? "shown" : "hidden") + ); +} |