<!DOCTYPE html>
<html class="reftest-wait">
<link rel="help" href="https://drafts.css-houdini.org/css-paint-api/">
<link rel="match" href="parse-input-arguments-018-ref.html">
<style>
.container {
    width: 100px;
    height: 100px;
}

#canvas-geometry {
    background-image: paint(failureIndicator), paint(geometry);
}
</style>
<script src="/common/reftest-wait.js"></script>
<script src="/common/worklet-reftest.js"></script>
<body>
<p>This test result should show a green rect. The registerPaint('failureIndicator')
will be called twice and the inputArguments will return two different strings,
which will throw an exception and the paint function with 'failureIndicator'
should never be called. In other words, there should be no red painted in the result.</p>
<div id="canvas-geometry" class="container"></div>

<script id="code" type="text/worklet">
function generateRandString(length) {
    var text = "";
    var possible = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
    for (var i = 0; i < length; i++)
        text += possible.charAt(Math.floor(Math.random() * possible.length));
    return text;
}

try {
    registerPaint('failureIndicator', class {
        static get inputArguments() {
            // This test is testing the case where an exception should be thrown
            // when two paint definitions with different properties are registered
            // to the same paint worklet. In order to do that, we randomly generate
            // the input properties here. We make the string length 100 to make sure
            // that it is veryyyyyyyyyyyy unlikely that two strings will be the same
            // when running this test.
            var current_str = generateRandString(100);
            return [current_str];
        }
        // The paint function here should never be called because the inputArguments
        // will generate two different properties, and that should throw an
        // exception.
        paint(ctx, geom) {
            ctx.fillStyle = 'red';
            ctx.fillRect(0, 0, 50, 50);
        }
    });
} catch(ex) {
}

registerPaint('geometry', class {
    paint(ctx, geom) {
        ctx.fillStyle = 'green';
        ctx.fillRect(50, 50, 50, 50);
    }
});
</script>

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