diff options
Diffstat (limited to 'testing/web-platform/tests/css/css-properties-values-api/registered-property-cssom.html')
-rw-r--r-- | testing/web-platform/tests/css/css-properties-values-api/registered-property-cssom.html | 91 |
1 files changed, 91 insertions, 0 deletions
diff --git a/testing/web-platform/tests/css/css-properties-values-api/registered-property-cssom.html b/testing/web-platform/tests/css/css-properties-values-api/registered-property-cssom.html new file mode 100644 index 0000000000..6231e27e77 --- /dev/null +++ b/testing/web-platform/tests/css/css-properties-values-api/registered-property-cssom.html @@ -0,0 +1,91 @@ +<!DOCTYPE HTML> +<link rel="help" href="https://drafts.css-houdini.org/css-properties-values-api/#dom-css-registerproperty" /> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> + +<style> +#inner { + --length: 10px; + --color: red; +} +#outer { + --length: 77px; + --color: blue; +} +</style> + +<div id=outer> + <div id=inner></div> +</div> + +<script> +var computedStyle = getComputedStyle(inner); +var inlineStyle = inner.style; +var sheetStyle = document.styleSheets[0].cssRules[0].style; + +test(function() { + // Nothing registered yet, whatever you specify works + assert_equals(computedStyle.getPropertyValue('--length'), '10px'); + assert_equals(computedStyle.getPropertyValue('--color'), 'red'); +}, "Initially unregistered values from stylesheet"); + +test(function() { + inlineStyle.setProperty('--length', '5'); + inlineStyle.setProperty('--color', 'hello'); + + assert_equals(inlineStyle.getPropertyValue('--length'), '5'); + assert_equals(inlineStyle.getPropertyValue('--color'), 'hello'); + assert_equals(computedStyle.getPropertyValue('--length'), '5'); + assert_equals(computedStyle.getPropertyValue('--color'), 'hello'); +}, "CSSOM setters function as expected for unregistered properties"); + +test(function() { + CSS.registerProperty({name: '--length', syntax: '<length>', initialValue: '0px', inherits: false}); + CSS.registerProperty({name: '--color', syntax: '<color>', initialValue: 'white', inherits: true}); +}, "CSS.registerProperty"); + +test(function() { + assert_equals(inlineStyle.getPropertyValue('--length'), '5'); + assert_equals(inlineStyle.getPropertyValue('--color'), 'hello'); + assert_equals(computedStyle.getPropertyValue('--length'), '0px'); + assert_equals(computedStyle.getPropertyValue('--color'), 'rgb(0, 0, 255)'); +}, "Formerly valid values are still readable from inline styles but are computed as the unset value"); + +test(function() { + inlineStyle.setProperty('--length', 'hi'); + inlineStyle.setProperty('--color', '20'); + assert_equals(inlineStyle.getPropertyValue('--length'), 'hi'); + assert_equals(inlineStyle.getPropertyValue('--color'), '20'); +}, "Values not matching the registered type can still be set"); + +test(function() { + inlineStyle.removeProperty('--length'); + inlineStyle.setProperty('--color', ''); + assert_equals(inlineStyle.getPropertyValue('--length'), ''); + assert_equals(inlineStyle.getPropertyValue('--color'), ''); + assert_equals(computedStyle.getPropertyValue('--length'), '10px'); + assert_equals(computedStyle.getPropertyValue('--color'), 'rgb(255, 0, 0)'); +}, "Values can be removed from inline styles"); + +test(function() { + // 'banana' is not a valid <length>, but still accepted. + sheetStyle.setProperty('--length', 'banana'); + assert_equals(computedStyle.getPropertyValue('--length'), '0px'); + sheetStyle.setProperty('--length', '20px'); + assert_equals(computedStyle.getPropertyValue('--length'), '20px'); + sheetStyle.setProperty('--length', 'initial'); + assert_equals(computedStyle.getPropertyValue('--length'), '0px'); +}, "Stylesheets can be modified by CSSOM"); + +test(function() { + inlineStyle.setProperty('--length', '30px'); + inlineStyle.setProperty('--color', 'pink'); + assert_equals(inlineStyle.getPropertyValue('--length'), '30px'); + assert_equals(inlineStyle.getPropertyValue('--color'), 'pink'); + assert_equals(computedStyle.getPropertyValue('--length'), '30px'); + assert_equals(computedStyle.getPropertyValue('--color'), 'rgb(255, 192, 203)'); + inlineStyle.setProperty('--color', 'inherit'); + assert_equals(inlineStyle.getPropertyValue('--color'), 'inherit'); + assert_equals(computedStyle.getPropertyValue('--color'), 'rgb(0, 0, 255)'); +}, "Valid values can be set on inline styles"); +</script> |