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 /layout/style/test/test_non_content_accessible_properties.html | |
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 'layout/style/test/test_non_content_accessible_properties.html')
-rw-r--r-- | layout/style/test/test_non_content_accessible_properties.html | 85 |
1 files changed, 85 insertions, 0 deletions
diff --git a/layout/style/test/test_non_content_accessible_properties.html b/layout/style/test/test_non_content_accessible_properties.html new file mode 100644 index 0000000000..220ddf2d26 --- /dev/null +++ b/layout/style/test/test_non_content_accessible_properties.html @@ -0,0 +1,85 @@ +<!doctype html> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<iframe></iframe> +<iframe srcdoc="Foo"></iframe> +<script> +const CHROME_ONLY_PROPERTIES = [ + "-moz-window-input-region-margin", + "-moz-window-shadow", + "-moz-window-opacity", + "-moz-window-transform", + "-moz-window-transform-origin", + "-moz-default-appearance", + "-moz-user-focus", +]; + +const UA_ONLY_PROPERTIES = [ + "-x-span", + "-x-lang", + "-x-text-scale", + "-moz-control-character-visibility", + "-moz-top-layer", + "-moz-script-level", + "-moz-math-display", + "-moz-math-variant", + "-moz-inert", + "-moz-min-font-size-ratio", + // TODO: This should ideally be in CHROME_ONLY_PROPERTIES, but due to how + // [Pref] and [ChromeOnly] interact in WebIDL, the former wins. + "-moz-context-properties", +]; + +function testInWin(win) { + const doc = win.document; + const sheet = doc.createElement("style"); + const div = doc.createElement("div"); + doc.documentElement.appendChild(sheet); + doc.documentElement.appendChild(div); + + sheet.textContent = `div { color: initial }`; + assert_equals(sheet.sheet.cssRules[0].style.length, 1, `sanity: ${doc.documentURI}`); + + for (const prop of CHROME_ONLY_PROPERTIES.concat(UA_ONLY_PROPERTIES)) { + sheet.textContent = `div { ${prop}: initial }`; + let block = sheet.sheet.cssRules[0].style; + assert_false(prop in block, `${prop} shouldn't be exposed in CSS2Properties`); + + let isUAOnly = UA_ONLY_PROPERTIES.includes(prop); + assert_equals(prop in SpecialPowers.wrap(block), !isUAOnly, `${prop} should be exposed to chrome code if needed`); + + assert_equals( + block.length, + 0, + `${prop} shouldn't be parsed in ${doc.documentURI}` + ); + block.setProperty(prop, "initial"); + assert_equals( + block.length, + 0, + `${prop} shouldn't be settable via CSSOM in ${doc.documentURI}` + ); + assert_equals( + win.getComputedStyle(div).getPropertyValue(prop), + "", + `${prop} shouldn't be accessible via CSSOM in ${doc.documentURI}` + ); + assert_false( + win.CSS.supports(prop + ': initial'), + `${prop} shouldn't be exposed in CSS.supports in ${doc.documentURI}` + ); + assert_false( + win.CSS.supports(prop, 'initial'), + `${prop} shouldn't be exposed in CSS.supports in ${doc.documentURI} (2-value version)` + ); + } +} + +let t = async_test("test non-content-accessible props"); +onload = t.step_func_done(function() { + testInWin(window); + for (let f of document.querySelectorAll("iframe")) { + testInWin(f.contentWindow); + } +}); +</script> |