<!DOCTYPE html>
<script src="../../resources/testharness.js"></script>
<script src="../../resources/testharnessreport.js"></script>
<script>
async_test(t => {
  var channel = new MessageChannel();
  var canvas = document.createElement('canvas');
  canvas.width = canvas.height = 10;
  var offscreen = canvas.transferControlToOffscreen();
  channel.port2.onmessage = function(message) {
    var ctx = message.data.getContext('2d');
    ctx.fillStyle = '#0f0';
    ctx.fillRect(0, 0, 10, 10);
    setTimeout(() => {
      requestAnimationFrame(() => {
        requestAnimationFrame(() => {
          var canvas2 = document.createElement('canvas');
          canvas2.width = canvas2.height = 10;
          var ctx2 = canvas2.getContext('2d');
          ctx2.drawImage(canvas, 0, 0);
          var pixel = ctx2.getImageData(0, 0, 1, 1).data;
          t.step(function() {
            assert_array_equals(pixel, [0, 255, 0, 255]);
          });
          t.done();
        });
      });
    }, 0);
  }
  channel.port1.postMessage(offscreen, [offscreen]);
}, "Verify that posting an OffscreenCanvas through a MessageChannel works as intended.");

test(function() {
  var channel = new MessageChannel();
  var canvas = document.createElement('canvas');
  canvas.width = canvas.height = 10;
  var offscreen = canvas.transferControlToOffscreen();
  channel.port2.onmessage = function() {};
  assert_throws("DataCloneError", function() {channel.port1.postMessage(offscreen)});
}, "Verify that cloning an OffscreenCanvas through a MessageChannel throws an exception")

</script>
