| <!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', '160px'); |
| test_prop('child2', '--a', '160px'); |
| test_prop('child2', '--b', ''); |
| test_prop('child2', 'font-size', '16px'); |
| test_prop('parent2', '--a', '160px'); |
| 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', '100px'); |
| test_prop('child4', '--a', '100px'); |
| 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> |