| <!DOCTYPE html><!-- webkit-test-runner [ CSSCustomPropertiesAndValuesEnabled=true ] --> | 
 | <!-- https://chromium.googlesource.com/chromium/src/+/01ce431409e3a019858677626a983c55168da6dc/third_party/WebKit/LayoutTests/custom-properties/register-property.html --> | 
 | <script src="../resources/testharness.js"></script> | 
 | <script src="../resources/testharnessreport.js"></script> | 
 |  | 
 | <style> | 
 |   #parent1 { | 
 |     width: 500px; | 
 |     background: blue; | 
 |   } | 
 |   #child1 { | 
 |     background: green; | 
 |     font-size: 10px; | 
 |     --a: 10em; | 
 |     width: var(--a); | 
 |   } | 
 |  | 
 |   #parent2 { | 
 |     width: 500px; | 
 |     background: blue; | 
 |     --a: 10em; | 
 |     font-size: calc( var(--a) + -150px); | 
 |   } | 
 |   #child2 { | 
 |     background: green; | 
 |     width: var(--a); | 
 |   } | 
 |  | 
 |   #parent3 { | 
 |     width: 500px; | 
 |     background: blue; | 
 |     --b: 10em; | 
 |     font-size: calc( var(--b) + -150px); | 
 |   } | 
 |   #child3 { | 
 |     background: green; | 
 |     width: var(--b); | 
 |   } | 
 |  | 
 |   #parent4 { | 
 |     width: 500px; | 
 |     background: blue; | 
 |     --b: 10em; | 
 |     font-size: calc( var(--b) + -150px); | 
 |   } | 
 |   #child4 { | 
 |     background: green; | 
 |     --a: var(--b); | 
 |     font-size: var(--a); | 
 |     width: var(--a); | 
 |   } | 
 |  | 
 |   #parent5 { | 
 |     width: 500px; | 
 |     background: blue; | 
 |     --b: 5em; | 
 |     font-size: calc( var(--b) + -70px); | 
 |   } | 
 |   #child5 { | 
 |     background: green; | 
 |     --c: var(--b); | 
 |     font-size: var(--c); | 
 |     width: var(--c); | 
 |   } | 
 | </style> | 
 | <div> | 
 |   <div id="parent1"><div id="child1"><p>test</p></div></div> | 
 |   <div id="parent2"><div id="child2"><p>test</p></div></div> | 
 |   <div id="parent3"><div id="child3"><p>test</p></div></div> | 
 |   <div id="parent4"><div id="child4"><p>test</p></div></div> | 
 |   <div id="parent5"><div id="child5"><p>test</p></div></div> | 
 | </div> | 
 | <script> | 
 |  | 
 | function test_prop(id, prop, expected) { | 
 |   assert_equals(window.getComputedStyle(document.getElementById(id)).getPropertyValue(prop).trim(), expected); | 
 | } | 
 |  | 
 | test(function() { | 
 |   CSS.registerProperty({ | 
 |     name: '--a', | 
 |     syntax: '<length>', | 
 |     inherits: true, | 
 |     initialValue: '200px' | 
 |   }) | 
 | }, "Registration is successful"); | 
 | test(function() { | 
 |   test_prop('child1', 'width', '100px'); | 
 |   test_prop('child1', '--a', '100px'); | 
 |   test_prop('child1', '--b', ''); | 
 |   test_prop('parent1', '--a', '200px'); | 
 |   test_prop('parent1', '--b', ''); | 
 | }, "JS Attributes are valid for element 1"); | 
 | test(function() { | 
 |   test_prop('child2', 'width', '200px'); | 
 |   test_prop('child2', '--a', '200px'); | 
 |   test_prop('child2', '--b', ''); | 
 |   test_prop('child2', 'font-size', '16px'); | 
 |   test_prop('parent2', '--a', '200px'); | 
 |   test_prop('parent2', '--b', ''); | 
 |   test_prop('parent2', 'font-size', '16px'); | 
 | }, "JS Attributes are valid for element 2"); | 
 | test(function() { | 
 |   test_prop('child3', 'width', '100px'); | 
 |   test_prop('child3', '--a', '200px'); | 
 |   test_prop('child3', '--b', '10em'); | 
 |   test_prop('child3', 'font-size', '10px'); | 
 |   test_prop('parent3', '--a', '200px'); | 
 |   test_prop('parent3', '--b', '10em'); | 
 |   test_prop('parent3', 'font-size', '10px'); | 
 | }, "JS Attributes are valid for element 3"); | 
 | test(function() { | 
 |   test_prop('child4', 'width', '200px'); | 
 |   test_prop('child4', '--a', '200px'); | 
 |   test_prop('child4', '--b', '10em'); | 
 |   test_prop('child4', 'font-size', '10px'); | 
 |   test_prop('parent4', '--a', '200px'); | 
 |   test_prop('parent4', '--b', '10em'); | 
 |   test_prop('parent4', 'font-size', '10px'); | 
 | }, "JS Attributes are valid for element 4"); | 
 | test(function() { | 
 |   test_prop('child5', 'width', '250px'); | 
 |   test_prop('child5', '--c', '5em'); | 
 |   test_prop('child5', '--b', '5em'); | 
 |   test_prop('child5', 'font-size', '50px'); | 
 |   test_prop('parent5', '--a', '200px'); | 
 |   test_prop('parent5', '--b', '5em'); | 
 |   test_prop('parent5', 'font-size', '10px'); | 
 | }, "JS Attributes are valid for element 5"); | 
 | </script> |