<!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>
  #test1 {
    font-size: var(--foo, 30px);
    --foo: var(--bar, 20px);
    --bar: var(--baz, var(--foo));
  }
</style>
<div>
  <h2 id=test1>This is text</h2>
</div>
<script>
var computedStyle = getComputedStyle(test1);
var inlineStyle = test1.style;

test(function() {
  assert_equals(computedStyle.getPropertyValue('--baz'), '');
  assert_equals(computedStyle.getPropertyValue('--foo'), '');
  assert_equals(computedStyle.getPropertyValue('--bar'), '');
  assert_equals(computedStyle.getPropertyValue('font-size'), '30px');
}, "Fallback is handled correctly, and we don't crash");

test(function() {
  inlineStyle.setProperty('--baz', '   40px');
  assert_equals(computedStyle.getPropertyValue('--baz'), ' 40px');
  assert_equals(computedStyle.getPropertyValue('--foo'), '');
  assert_equals(computedStyle.getPropertyValue('--bar'), '');
  assert_equals(computedStyle.getPropertyValue('--baz'), ' 40px');
  assert_equals(computedStyle.getPropertyValue('font-size'), '30px');
  inlineStyle.removeProperty('--baz');
  assert_equals(computedStyle.getPropertyValue('--baz'), '');
  assert_equals(computedStyle.getPropertyValue('--foo'), '');
  assert_equals(computedStyle.getPropertyValue('--bar'), '');
  assert_equals(computedStyle.getPropertyValue('font-size'), '30px');
  assert_equals(computedStyle.getPropertyValue('--baz'), '');
}, "Setting the inline style is handled correctly");

test(function() {
  CSS.registerProperty({name: '--foo', syntax: '<length>', initialValue: '200px', inherits: true});
  CSS.registerProperty({name: '--bar', syntax: '<length>', initialValue: '200px', inherits: true});
  CSS.registerProperty({name: '--baz', syntax: '<length>', initialValue: '200px', inherits: true});
}, "CSS.registerProperty");

test(function() {
  inlineStyle.setProperty('--baz', '   40px');
  assert_equals(computedStyle.getPropertyValue('--baz'), '40px');
  assert_equals(computedStyle.getPropertyValue('--foo'), '');
  assert_equals(computedStyle.getPropertyValue('--bar'), '');
  assert_equals(computedStyle.getPropertyValue('--baz'), '40px');
  assert_equals(computedStyle.getPropertyValue('font-size'), '30px');
  inlineStyle.removeProperty('--baz');
  assert_equals(computedStyle.getPropertyValue('--baz'), '200px');
  assert_equals(computedStyle.getPropertyValue('--foo'), '');
  assert_equals(computedStyle.getPropertyValue('--bar'), '');
  assert_equals(computedStyle.getPropertyValue('font-size'), '30px');
  assert_equals(computedStyle.getPropertyValue('--baz'), '200px');
}, "Setting the inline style is handled correctly when registered");

</script>
