<!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(getComputedStyle(inner).color, '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(getComputedStyle(inner).color, '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(getComputedStyle(element).color, 'rgb(4, 4, 4)');
}, 'Registering a property does not affect parsing');


</script>
