<!DOCTYPE html>
<html class="reftest-wait">
<link rel="help" href="https://drafts.css-houdini.org/css-paint-api/">
<link rel="match" href="style-background-image-ref.html">
<style>
.container {
  width: 100px;
  height: 100px;
  margin-left: 2px;
  --foo: bar;
}

#canvas-geometry {
  background-image: paint(geometry);
}
</style>
<script src="/common/reftest-wait.js"></script>
<script src="/common/worklet-reftest.js"></script>
<body>
<div id="canvas-geometry" class="container"></div>

<script id="code" type="text/worklet">
registerPaint('geometry', class {
    static get inputProperties() {
        return [
            '--bar',
            '--foo',
            'empty-cells',
            'margin-left',
        ];
    }
    paint(ctx, geom, styleMap) {
        const properties = [...styleMap.keys()].sort();
        var serializedStrings = [];
        for (let i = 0; i < properties.length; i++) {
            const value = styleMap.get(properties[i]);
            let serialized;
            if (value)
                serialized = properties[i].toString() + ': [' + value.constructor.name + '=' + value.toString() + ']';
            else
                serialized = properties[i].toString() + ': [null]';
            serializedStrings.push(serialized);
        }
        ctx.fillStyle = 'green';
        if (serializedStrings[0] != "--bar: [CSSUnparsedValue=]")
            ctx.fillStyle = 'red';
        if (serializedStrings[1] != "--foo: [CSSUnparsedValue= bar]")
            ctx.fillStyle = 'blue';
        if (serializedStrings[2] != "empty-cells: [CSSKeywordValue=show]")
            ctx.fillStyle = 'yellow';
        if (serializedStrings[3] != "margin-left: [CSSUnitValue=2px]")
            ctx.fillStyle = 'cyan';
        ctx.fillRect(0, 0, geom.width, geom.height);
    }
});
</script>

<script>
    importWorkletAndTerminateTestAfterAsyncPaint(CSS.paintWorklet, document.getElementById('code').textContent);
</script>
</body>
</html>
