<!DOCTYPE html><!-- webkit-test-runner [ CSSPaintingAPIEnabled=true ] -->
<meta name="author" title="Justin Michaud" href="mailto:justin_michaud@webkit.org">
<meta name="assert" content="Test that paint worklets do not crash if the constructor throws">
<link rel="help" content="https://drafts.css-houdini.org/css-paint-api-1/">
<script src="resources/testharness.js"></script>

<script id="code" type="text/worklet">
  class MyPaint {
    constructor() {
      throw "Hello!";
    }

    paint(ctx, geom) {
      ctx.fillStyle = "green";
      ctx.fillRect(0, 0, geom.width, geom.height);
    }
  }

  class MyPaint2 {
    constructor() {
    }

    paint(ctx, geom) {
      ctx.fillStyle = "green";
      ctx.fillRect(0, 0, geom.width, geom.height);
    }
  }
  registerPaint('my-paint', MyPaint);
  registerPaint('my-paint2', MyPaint2);
</script>

<script type="text/javascript">
  importWorklet(CSS.paintWorklet, document.getElementById('code').textContent);
  setTimeout(function() {
    if (window.internals && window.internals.isAnyWorkletGlobalScopeAlive()) {
      document.getElementById('leaks').style.background = "green";
    }
  }, 500);
</script>

<style>
  .paint {
    width: 150px;
    height: 150px;
  }
</style>

<body>
  <div class="paint" style="background-image: paint(my-paint);"></div>
  <div class="paint" style="background-image: paint(my-paint2);"></div>
  <div id="leaks" style="background: red; width: 150px; height: 150px;"></div>
</body>
