<!DOCTYPE html>
<html class="reftest-wait">
<link rel="help" href="https://drafts.css-houdini.org/css-paint-api/">
<link rel="match" href="two-element-one-custom-property-animation-ref.html">
<style>
#footainer1 {
  width: 200px;
  height: 200px;
}
.fooanimate1 {
  background-image: paint(foo);
  /* Use long animations that start at 50% progress where the slope of the
     selected timing function is zero. By setting up the animations in this way,
     we accommodate lengthy delays in running the test without a potential drift
     in the animated properties values. This is important for avoiding flakes,
     especially on debug builds. The screenshots are taken as soon as the
     animations are ready, thus the long animation duration has no bearing on
     the actual duration of the test. */
  animation: anim1 1000000s cubic-bezier(0,1,1,0);
  animation-delay: -500000s;
}
#footainer2 {
  width: 200px;
  height: 200px;
}
.fooanimate2 {
  background-image: paint(foo);
  animation: anim2 1000000s cubic-bezier(0,1,1,0);
  animation-delay: -500000s;
}
@keyframes anim1 {
  0% { --foo: rgb(200, 0, 0); }
  100% { --foo: rgb(0, 0, 200); }
}
@keyframes anim2 {
  0% { --foo: rgb(200, 0, 0); }
  100% { --foo: rgb(0, 200, 0); }
}
</style>
<script src="/common/reftest-wait.js"></script>
<script src="/common/worklet-reftest.js"></script>
<body>
<div id="footainer1"></div>
<div id="footainer2"></div>

<script id="code" type="text/worklet">
registerPaint('foo', class {
  static get inputProperties() { return ['--foo']; }
  paint(ctx, geom, properties) {
    ctx.fillStyle = properties.get('--foo').toString();
    ctx.fillRect(0, 0, 200, 200);
  }
});
</script>

<script type="text/javascript">
CSS.registerProperty({
  name: '--foo',
  syntax: '<color>',
  initialValue: 'rgb(0, 0, 0)',
  inherits: false
});
</script>

<script>
var code = document.getElementById('code').textContent;
var blob = new Blob([code], {type: 'text/javascript'});
CSS.paintWorklet.addModule(URL.createObjectURL(blob)).then(function() {
  document.getElementById('footainer1').classList.add('fooanimate1');
  document.getElementById('footainer2').classList.add('fooanimate2');
  const animations = document.getAnimations();
  // Wait for all animations to start before completing the test.
  Promise.all([animations[0].ready, animations[1].ready]).then(() => {
    takeScreenshot();
  });
});
</script>
</body>
</html>
