|
15 | 15 | }
|
16 | 16 |
|
17 | 17 | promise_test(function() {
|
18 |
| - function testTransferFromImageBitmapToBlobOffscreen(greenImage) { |
| 18 | + function transferFromImageBitmapToBlobOffscreen(greenImage) { |
19 | 19 | var bitmapCanvas = new OffscreenCanvas(width,height);
|
20 | 20 | var bitmapCtx = bitmapCanvas.getContext('bitmaprenderer');
|
21 | 21 | bitmapCtx.transferFromImageBitmap(greenImage);
|
22 | 22 |
|
| 23 | + return bitmapCanvas.convertToBlob(); |
| 24 | + } |
| 25 | + |
| 26 | + function drawBlobToCanvas(blob) { |
23 | 27 | // Make sure the bitmap renderer canvas is filled correctly.
|
24 | 28 | var pngImage = new Image();
|
25 |
| - bitmapCanvas.convertToBlob().then(function(blob){ |
26 |
| - pngImage.src = URL.createObjectURL(blob); |
27 |
| - var myCanvasToTest = document.createElement('canvas'); |
28 |
| - myCanvasToTest.width = width; |
29 |
| - myCanvasToTest.height = height; |
30 |
| - var myCtxToTest = myCanvasToTest.getContext('2d'); |
31 |
| - myCtxToTest.drawImage(pngImage, 0, 0); |
32 |
| - testCanvas(myCtxToTest, 0, 255, 0, 255); |
| 29 | + var myCanvasToTest = document.createElement('canvas'); |
| 30 | + myCanvasToTest.width = width; |
| 31 | + myCanvasToTest.height = height; |
| 32 | + |
| 33 | + // Wait for the blob img to load. |
| 34 | + return new Promise(function(resolve) { |
| 35 | + pngImage.src = URL.createObjectURL(blob); |
| 36 | + pngImage.onload = function() { |
| 37 | + var myCtxToTest = myCanvasToTest.getContext('2d'); |
| 38 | + myCtxToTest.drawImage(pngImage, 0, 0); |
| 39 | + resolve(myCtxToTest); |
| 40 | + }; |
33 | 41 | });
|
34 | 42 | }
|
35 | 43 |
|
|
40 | 48 | greenCtx.fillStyle = '#0f0';
|
41 | 49 | greenCtx.fillRect(0, 0, width, height);
|
42 | 50 |
|
43 |
| - return Promise.all([ |
44 |
| - createImageBitmap(greenCanvas), |
45 |
| - ]).then(([greenImage]) => { |
46 |
| - testTransferFromImageBitmapToBlobOffscreen(greenImage); |
47 |
| - }); |
48 |
| -},'Test that transferToBlob works and produce the expected image'); |
| 51 | + return createImageBitmap(greenCanvas).then( |
| 52 | + greenImage => transferFromImageBitmapToBlobOffscreen(greenImage) |
| 53 | + ).then( |
| 54 | + blob => drawBlobToCanvas(blob) |
| 55 | + ).then( |
| 56 | + ctx => testCanvas(ctx, 0, 255, 0, 255) |
| 57 | + ); |
| 58 | +},'Test that convertToBlob works and produce the expected image'); |
49 | 59 |
|
50 | 60 | </script>
|
0 commit comments