<!DOCTYPE html><!-- webkit-test-runner [ CSSCustomPropertiesAndValuesEnabled=true CSSTypedOMEnabled=true CSSPaintingAPIEnabled=true ] -->
<meta name="author" title="Justin Michaud" href="mailto:justin_michaud@webkit.org">
<meta name="assert" content="Test paint worklet input properties and arguments">
<link rel="help" content="https://drafts.css-houdini.org/css-paint-api-1/">
<script src="resources/testharness.js"></script>

<style>
  .paint {
    background-image: paint(my-paint,150px,helloworld1,helloworld2);
    width: 150px;
    height: 150px;
    --my-prop:helloworld1;
    --my-registered-prop:helloworld2;
  }

  .paint2 {
    background-image: paint(my-paint,150px,helloworld1,initialValueProp);
    width: 150px;
    height: 150px;
    --my-prop:helloworld1;
  }
</style>

<div class="paint"></div>
<div class="paint2"></div>

<script id="code" type="text/worklet">
class MyPaint {
  static get inputProperties() { return ['height', '--my-prop', '--my-registered-prop', "--never-specified"]; }
  static get inputArguments() { return ['*', '*', '*']; }

  constructor() { this.myAttribute = 42; }

  testThis() { return this.myAttribute; }

  paint(ctx, geom, properties, args) {
    assert_true(properties instanceof StylePropertyMapReadOnly);
    assert_equals(properties.get('height').toString(), args[0].toString());
    assert_equals(properties.get('height').value, 150);
    assert_equals(properties.get('height').unit, 'px');
    assert_equals(properties.get('--my-prop').toString(), args[1].toString());
    assert_equals(properties.get('--my-registered-prop').toString(), args[2].toString());
    assert_equals(properties.get('width'), null);
    assert_equals(properties.get('--never-specified'), null);

    assert_equals(this.testThis(), 42);

    for (var i = 0; i < 6; i++){
      for (var j = 0; j < 6; j++){
        ctx.fillStyle = 'rgb(' + Math.floor(255 - 42.5 * i) + ',' +
                         Math.floor(255 - 42.5 * j) + ',0)';
        ctx.fillRect(j * 25, i * 25, 25, 25);
      }
    }
  }
}
registerPaint('my-paint', MyPaint);
</script>

<script>
importWorklet(CSS.paintWorklet, document.getElementById('code').textContent);
CSS.registerProperty({
  name: '--my-registered-prop',
  syntax: '*',
  initialValue: 'initialValueProp',
  inherits: false
});
</script>
