blob: 6ebe1c6a20d7deec1cdc0a0ecd3e500964e7154c [file] [log] [blame]
<img id="png"/>
<img id="jpeg-high"/>
<img id="jpeg-low"/>
<img id="webp-high"/>
<img id="webp-low"/>
<script id="myWorker" type="text/worker">
self.onmessage = function (e) {
var offCanvas = new OffscreenCanvas(50, 50);
var offctx = offCanvas.getContext("2d");
offctx.fillStyle = "red";
offctx.fillRect(0, 0, 25, 25);
offctx.fillStyle = "green";
offctx.fillRect(25, 0, 25, 25);
offctx.fillStyle = "blue";
offctx.fillRect(0, 25, 25, 25);
offctx.fillStyle = "black";
offctx.fillRect(25, 25, 25, 25);
offctx.strokeStyle = "yellow";
offctx.strokeRect(0, 0, 50, 50);
offCanvas.convertToBlob()
.then(function(blob) {
self.postMessage({version: "png", data:blob});
});
offCanvas.convertToBlob({type: "image/jpeg"})
.then(function(blob) {
self.postMessage({version: "jpeg-high", data:blob});
});
offCanvas.convertToBlob({type: "image/jpeg", quality: 0.2})
.then(function(blob) {
self.postMessage({version: "jpeg-low", data:blob});
});
offCanvas.convertToBlob({type: "image/webp"})
.then(function(blob) {
self.postMessage({version: "webp-high", data:blob});
});
offCanvas.convertToBlob({type: "image/webp", quality: 0.2})
.then(function(blob) {
self.postMessage({version: "webp-low", data:blob});
});
}
</script>
<script>
if (window.testRunner) {
testRunner.waitUntilDone();
}
var pngImage = document.getElementById('png');
var jpegImageHigh = document.getElementById('jpeg-high');
var jpegImageLow = document.getElementById('jpeg-low');
var webpImageHigh = document.getElementById('webp-high');
var webpImageLow = document.getElementById('webp-low');
var numTestCount = 5;
function imageLoaded() {
numTestCount--;
if (numTestCount == 0 && window.testRunner) {
window.testRunner.notifyDone();
}
}
pngImage.addEventListener('load', imageLoaded);
jpegImageHigh.addEventListener('load', imageLoaded);
jpegImageLow.addEventListener('load', imageLoaded);
webpImageHigh.addEventListener('load', imageLoaded);
webpImageLow.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;
case 'jpeg-high':
jpegImageHigh.src = URL.createObjectURL(blob);
break;
case 'jpeg-low':
jpegImageLow.src = URL.createObjectURL(blob);
break;
case 'webp-high':
webpImageHigh.src = URL.createObjectURL(blob);
break;
case 'webp-low':
webpImageLow.src = URL.createObjectURL(blob);
break;
}
});
worker.postMessage("");
</script>