| <!DOCTYPE html> |
| <link rel="help" href="https://drafts.css-houdini.org/css-properties-values-api-1/#the-registerproperty-function" /> |
| <meta name="assert" content="Verifies that registering a property does not affect the cascade" /> |
| <script src="/resources/testharness.js"></script> |
| <script src="/resources/testharnessreport.js"></script> |
| |
| <style> |
| |
| #outer { color: rgb(1, 1, 1); } |
| #inner { |
| --my-color: rgb(2, 2, 2); |
| --my-color: url(not-a-color); |
| color: var(--my-color); |
| } |
| |
| </style> |
| |
| <div id=outer> |
| <div id=inner></div> |
| </div> |
| |
| <script> |
| |
| test(function(){ |
| // Because var(--my-color) is invalid, our color declaration should behave |
| // like color:unset, i.e. it should compute to the inherited color. |
| assert_equals(inner.computedStyleMap().get('color').toString(), 'rgb(1, 1, 1)'); |
| |
| CSS.registerProperty({ |
| name: '--my-color', |
| syntax: '<color>', |
| initialValue: 'rgb(3, 3, 3)', |
| inherits: false |
| }); |
| |
| // After registering, var(--my-color) is still invalid. The important thing |
| // here is that the computed value of color is the initialValue of |
| // --my-color, and not rgb(2, 2, 2). |
| assert_equals(inner.computedStyleMap().get('color').toString(), 'rgb(3, 3, 3)'); |
| }, 'Registering a property does not affect cascade'); |
| |
| test(function(){ |
| CSS.registerProperty({ |
| name: '--my-color-2', |
| syntax: '<color>', |
| initialValue: 'rgb(4, 4, 4)', |
| inherits: false |
| }); |
| |
| let element = document.createElement('div'); |
| element.style = ` |
| --my-color-2: rgb(2, 2, 2); |
| --my-color-2: url(not-a-color); |
| color: var(--my-color-2); |
| `; |
| |
| outer.appendChild(element); |
| |
| assert_equals(element.computedStyleMap().get('color').toString(), 'rgb(4, 4, 4)'); |
| }, 'Registering a property does not affect parsing'); |
| |
| |
| </script> |