chromium/third_party/blink/web_tests/fast/canvas/OffscreenCanvas-Bitmaprenderer-TransferToImageBitmapResetsToBlack.html

<html>
<br> <canvas id="normalColors" width="60" height="60"></canvas>
<br> <canvas id="blackColors" width="60" height="60"></canvas>

<script>
  function requestAnimationFrameNtimesThen(times, fn) {
    if(times>0) {
      requestAnimationFrame(() => {
        requestAnimationFrameNtimesThen(times-1, fn);
      });
    } else
      fn();
  };

  if (window.testRunner) {
    testRunner.waitUntilDone();
  }
  // source content as canvas
  var htmlCanvas = document.createElement('canvas');
  htmlCanvas.width = 60;
  htmlCanvas.height = 60;
  var htmlCanvasCtx = htmlCanvas.getContext("2d");
  htmlCanvasCtx.fillStyle = "blue";
  htmlCanvasCtx.fillRect(0, 0, 15, 60);
  htmlCanvasCtx.fillStyle = "red";
  htmlCanvasCtx.fillRect(15, 0, 45, 30);
  htmlCanvasCtx.fillStyle = "green";
  htmlCanvasCtx.fillRect(15, 30, 45, 30);

  createImageBitmap(htmlCanvas).then(function(bmap){
    // This offscreen canvas will be used in several tests
    var canNewOffscreen = new OffscreenCanvas(60,60);
    var ctxNewOffscreen = canNewOffscreen.getContext("bitmaprenderer");
    ctxNewOffscreen.transferFromImageBitmap(bmap);

    var outputCanvas = document.getElementById("normalColors");
    var outputCanvasRenderer = outputCanvas.getContext("bitmaprenderer");
    outputCanvasRenderer.transferFromImageBitmap(canNewOffscreen.transferToImageBitmap());

    var outputCanvas = document.getElementById("blackColors");
    var outputCanvasRenderer = outputCanvas.getContext("bitmaprenderer");
    outputCanvasRenderer.transferFromImageBitmap(canNewOffscreen.transferToImageBitmap());

    if (window.testRunner) {
      requestAnimationFrameNtimesThen(1, () => {
        testRunner.notifyDone();
      });
    }
  });

</script>
</html>