summaryrefslogtreecommitdiffstats
path: root/layout/style/test/test_user_sheet_shadow_dom.html
diff options
context:
space:
mode:
Diffstat (limited to 'layout/style/test/test_user_sheet_shadow_dom.html')
-rw-r--r--layout/style/test/test_user_sheet_shadow_dom.html48
1 files changed, 48 insertions, 0 deletions
diff --git a/layout/style/test/test_user_sheet_shadow_dom.html b/layout/style/test/test_user_sheet_shadow_dom.html
new file mode 100644
index 0000000000..cd7a44b308
--- /dev/null
+++ b/layout/style/test/test_user_sheet_shadow_dom.html
@@ -0,0 +1,48 @@
+<!DOCTYPE HTML>
+<title>Test for bug 1576229 - Nodes in Shadow DOM react properly to dynamic changes in user sheets</title>
+<script src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" href="/tests/SimpleTest/test.css">
+<div></div>
+<span id="host" style="display: block"></span>
+<script>
+const gIOService = SpecialPowers.Cc["@mozilla.org/network/io-service;1"]
+ .getService(SpecialPowers.Ci.nsIIOService)
+
+const gSSService = SpecialPowers.Cc["@mozilla.org/content/style-sheet-service;1"]
+ .getService(SpecialPowers.Ci.nsIStyleSheetService);
+
+const windowUtils = SpecialPowers.getDOMWindowUtils(window);
+
+function loadUserSheet(style) {
+ const uri = gIOService.newURI("data:text/css," + style);
+ windowUtils.loadSheet(uri, windowUtils.USER_SHEET);
+}
+
+SimpleTest.waitForExplicitFinish();
+
+onload = function() {
+ loadUserSheet(`
+ div {
+ width: 100px;
+ height: 100px;
+ background-color: red;
+ }
+ .foo {
+ background-color: green;
+ }
+ `);
+ let host = document.querySelector("#host");
+ host.attachShadow({ mode: "open" }).innerHTML = `
+ <div></div>
+ `;
+ let light = document.querySelector('div');
+ let shadow = host.shadowRoot.querySelector('div');
+ is(getComputedStyle(light).backgroundColor, "rgb(255, 0, 0)", "User sheet works in light DOM");
+ is(getComputedStyle(shadow).backgroundColor, "rgb(255, 0, 0)", "User sheet works in shadow DOM");
+ light.classList.add("foo");
+ shadow.classList.add("foo");
+ is(getComputedStyle(light).backgroundColor, "rgb(0, 128, 0)", "Dynamic change for user sheet works in light DOM");
+ is(getComputedStyle(shadow).backgroundColor, "rgb(0, 128, 0)", "Dynamic change for user sheet works in shadow DOM");
+ SimpleTest.finish();
+}
+</script>