<!DOCTYPE html><!-- webkit-test-runner [ experimental: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;
    --my-custom-prop: 100px;
    width: var(--my-custom-prop);
  }

  #parent2 {
    width: 500px;
    background: blue;
  }
  #child2 {
    background: green;
    width: var(--my-custom-prop2);
  }

  #parent3 {
    width: 500px;
    background: blue;
  }
  #child3 {
    background: green;
    width: var(--my-custom-prop3);
  }

  #parent4 {
    width: 500px;
    background: blue;
  }
  #child4 {
    background: green;
    width: var(--my-custom-prop3, 300px);
  }

  #parent5 {
    width: 500px;
    background: blue;
  }
  #child5 {
    background: green;
    width: var(--my-custom-prop2, 300px);
  }
</style>
<div>
  <p> Specified </p>
  <div id="parent1"><div id="child1"><p>100px green</p></div> </div>
  <p> Not specified, use initial value </p>
  <div id="parent2"><div id="child2"><p>200px green</p></div> </div>
  <p> Not specified, but not registered so use initial value for width </p>
  <div id="parent3"><div id="child3"><p>500px green</p></div> </div>
  <p> Has a fallback for unregistered property </p>
  <div id="parent4"><div id="child4"><p>300px green</p></div> </div>
  <p> Has a fallback for a registered property </p>
  <div id="parent5"><div id="child5"><p>200px green</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: '--my-custom-prop',
    syntax: '<length>',
    inherits: false,
    initialValue: '200px'
  })

  CSS.registerProperty({
    name: '--my-custom-prop2',
    syntax: '<length>',
    inherits: false,
    initialValue: '200px'
  })
}, "Registration is successful");
test(function() {
  test_prop('child1', 'width', '100px');
  test_prop('child1', '--my-custom-prop', '100px');
  test_prop('child1', '--my-custom-prop2', '200px');
}, "JS Attributes are valid for element 1");
test(function() {
  test_prop('child2', 'width', '200px');
  test_prop('child2', '--my-custom-prop', '200px');
  test_prop('child2', '--my-custom-prop2', '200px');
}, "JS Attributes are valid for element 2");
test(function() {
  test_prop('child3', 'width', '500px');
  test_prop('child3', '--my-custom-prop3', '');
  test_prop('child3', '--my-custom-prop2', '200px');
}, "JS Attributes are valid for element 3");
test(function() {
  test_prop('child4', 'width', '300px');
  test_prop('child5', 'width', '200px');
  test_prop('child4', '--my-custom-prop2', '200px');
  test_prop('child5', '--my-custom-prop2', '200px');
}, "JS Attributes are valid for element 4 and 5");
</script>
