summaryrefslogtreecommitdiffstats
path: root/testing/web-platform/tests/css/css-properties-values-api/registered-property-cssom.html
diff options
context:
space:
mode:
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.html91
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>