summaryrefslogtreecommitdiffstats
path: root/testing/web-platform/tests/html/canvas/offscreen/manual/filter/offscreencanvas.filter.w.html
diff options
context:
space:
mode:
Diffstat (limited to 'testing/web-platform/tests/html/canvas/offscreen/manual/filter/offscreencanvas.filter.w.html')
-rw-r--r--testing/web-platform/tests/html/canvas/offscreen/manual/filter/offscreencanvas.filter.w.html54
1 files changed, 54 insertions, 0 deletions
diff --git a/testing/web-platform/tests/html/canvas/offscreen/manual/filter/offscreencanvas.filter.w.html b/testing/web-platform/tests/html/canvas/offscreen/manual/filter/offscreencanvas.filter.w.html
new file mode 100644
index 0000000000..d6ed915b53
--- /dev/null
+++ b/testing/web-platform/tests/html/canvas/offscreen/manual/filter/offscreencanvas.filter.w.html
@@ -0,0 +1,54 @@
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="offscreencanvas.filter.js"></script>
+<script id='myWorker' type='text/worker'>
+self.onmessage = function(e) {
+ var getOffscreenCanvasForFilter = function(filter, pattern) {
+ var oc = new OffscreenCanvas(80, 80);
+ var offCtx = oc.getContext('2d');
+ offCtx.filter = filter;
+ offCtx.drawImage(pattern, 5, 5);
+ offCtx.drawImage(pattern, 25, 25);
+ offCtx.drawImage(pattern, 45, 45);
+ return oc;
+ };
+
+ var filters = e.data.filters;
+ var pattern = e.data.pattern;
+ var ret = [];
+ for (var i = 0; i < filters.length; i++) {
+ var oc = getOffscreenCanvasForFilter(filters[i], pattern);
+ var imageBitmap = oc.transferToImageBitmap();
+ ret.push(imageBitmap);
+ }
+ self.postMessage(ret, ret);
+};
+</script>
+<script>
+var patternCanvas = createPatternCanvas();
+
+// Build a list of image data on regular canvas with different filters
+var listCanvasImageData = [];
+for (var j = 0; j < filters.length; j++) {
+ var ctx = getRegularContextForFilter(filters[j], patternCanvas);
+ listCanvasImageData.push(ctx.getImageData(0, 0, 80, 80).data);
+}
+
+function consumeImageBitmap(patternImage) {
+ async_test(t => {
+ var blob = new Blob([document.getElementById('myWorker').textContent]);
+ var worker = new Worker(URL.createObjectURL(blob));
+ worker.addEventListener('message', msg => {
+ for (var i = 0; i < msg.data.length; ++i) {
+ var outputCtx = document.createElement("canvas").getContext('2d');
+ outputCtx.drawImage(msg.data[i], 0, 0, 80, 80);
+ matchImageDataResults(outputCtx.getImageData(0, 0, 80, 80).data, listCanvasImageData[i], filters[i]);
+ }
+ t.done();
+ });
+ worker.postMessage({filters: filters, pattern: patternImage}, [patternImage]);
+ });
+}
+
+createImageBitmap(patternCanvas).then(consumeImageBitmap);
+</script>