tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

commit 7392283b7e45201309878b5a48c02c87d0b6b7d8
parent cd5f760648eced05bd41edb619bc8cc6b412d1e0
Author: Nicolas Chevobbe <nchevobbe@mozilla.com>
Date:   Fri, 17 Oct 2025 10:54:09 +0000

Bug 1994939 - [devtools] Add test for editing shadow DOM constructed rule. r=devtools-reviewers,jdescottes.

Differential Revision: https://phabricator.services.mozilla.com/D269007

Diffstat:
Mdevtools/client/inspector/rules/test/browser_rules_cssom.js | 38++++++++++++++++++++++++++++++++++++++
Mdevtools/client/inspector/rules/test/doc_cssom.html | 11+++++++++++
2 files changed, 49 insertions(+), 0 deletions(-)

diff --git a/devtools/client/inspector/rules/test/browser_rules_cssom.js b/devtools/client/inspector/rules/test/browser_rules_cssom.js @@ -46,4 +46,42 @@ add_task(async function () { const newProp = getTextProperty(view, 1, { color: "red" }); ok(!!newProp, "Rule is still visible after updating it"); + + info("Check that updating cssom declaration in shadow DOM works"); + // Testing Bug 1986702 + const shadowDomH2NodeFront = await getNodeFrontInShadowDom( + "h2", + "#host", + inspector + ); + await selectNode(shadowDomH2NodeFront, inspector); + + const shadowDomH2ColorProp = getTextProperty(view, 1, { color: "tomato" }); + await setProperty(view, shadowDomH2ColorProp, "blue"); + + const shadowDomH2Color = await SpecialPowers.spawn( + gBrowser.selectedBrowser, + [], + () => { + return content + .getComputedStyle( + content.document.getElementById("host").shadowRoot.querySelector("h2") + ) + .getPropertyValue("color"); + } + ); + is( + shadowDomH2Color, + "rgb(0, 0, 255)", + "shadow DOM h2 element color was properly updated" + ); + + info( + "Select another node and re-select shadow DOM h2 node to update the rule view" + ); + await selectNode("body", inspector); + await selectNode(shadowDomH2NodeFront, inspector); + + const updatedShadowDomH2Prop = getTextProperty(view, 1, { color: "blue" }); + ok(!!updatedShadowDomH2Prop, "Rule is still visible after updating it"); }); diff --git a/devtools/client/inspector/rules/test/doc_cssom.html b/devtools/client/inspector/rules/test/doc_cssom.html @@ -12,6 +12,16 @@ // Add a rule with a leading newline, to test that inspector can handle it. x.insertRule("\ndiv { font-weight: bold; }", 1); + + // Add a shadow dom root and a h2 element inside it + const shadow = document.getElementById("host").attachShadow({ mode: "open" }); + const shadowEl = document.createElement("h2"); + shadowEl.textContent = "Hello from the shadow DOM"; + shadow.appendChild(shadowEl); + + const shadowDomStyleSheet = new CSSStyleSheet(); + shadowDomStyleSheet.insertRule("h2 { color: tomato; background-color: gold;}"); + shadow.adoptedStyleSheets = [shadowDomStyleSheet]; }; </script> @@ -21,5 +31,6 @@ </head> <body> <div id="target"> the ocean </div> + <div id="host"></div> </body> </html>