<img id="png"/>
<script id="myWorker" type="text/worker">
self.onmessage = function (e) {
  var offCanvas = new OffscreenCanvas(50, 50);
  var gl = offCanvas.getContext('webgl');
  gl.clearColor(0, 1, 0, 1);
  gl.clear(gl.COLOR_BUFFER_BIT);

  // TODO: Add more image types to this test once the toImageData() for webgl
  // is completed. See crbug.com/657531.
  offCanvas.convertToBlob()
    .then(function(blob) { 
      self.postMessage({version: "png", data:blob});
    });
}
</script>
<script>
if (window.testRunner) {
  testRunner.waitUntilDone();
}

var pngImage = document.getElementById('png');
function imageLoaded() {
  if (window.testRunner) {
    window.testRunner.notifyDone();
  }
}
pngImage.addEventListener('load', imageLoaded);

var workerBlob = new Blob([document.getElementById('myWorker').textContent]);
var worker = new Worker(URL.createObjectURL(workerBlob));
worker.addEventListener("message", function(msg) {
  var blob = msg.data.data;
  switch (msg.data.version) {
    case 'png':
      pngImage.src = URL.createObjectURL(blob);
      break;
  }
});
worker.postMessage("");
</script>

