| if (window.testRunner) { |
| testRunner.dumpAsText(); |
| testRunner.waitUntilDone(); |
| } |
| |
| var numToBlobCalls = 9; |
| var numToDataURLCalls = 3; |
| var testImages = []; |
| var canvasCtxs = []; |
| |
| // Create an original canvas with content |
| var canvas = document.createElement("canvas"); |
| var ctx = canvas.getContext("2d"); |
| ctx.fillStyle = "#EE21AF"; |
| ctx.fillRect(0, 0, 2500, 1750); |
| |
| function testIfAllImagesAreCorrect() |
| { |
| // All resultant images should be the same as both async and main threads use the same image encoder |
| var imageMatched = true; |
| var firstImageData = canvasCtxs[0].getImageData(0, 0, 2500, 1750).data; |
| for (var i = 1; i < (numToBlobCalls + numToDataURLCalls); i++) |
| { |
| var nextImageData = canvasCtxs[i].getImageData(0, 0, 2500, 1750).data; |
| for (var k = 0; k < firstImageData.length; k++) |
| { |
| if (firstImageData[k]!=nextImageData[k]) |
| { |
| imageMatched = false; |
| break; |
| } |
| } |
| if (!imageMatched) |
| break; |
| } |
| if (imageMatched) |
| testPassed("All images encoded by both async and main threads match one another"); |
| else |
| testFailed("Not all images encoded by async and main threads match one another"); |
| } |
| |
| var counter = numToBlobCalls + numToDataURLCalls; |
| function onCanvasDrawCompleted(ctx_test) |
| { |
| counter = counter - 1; |
| if (counter == 0) { |
| testIfAllImagesAreCorrect(); |
| if (window.testRunner) |
| testRunner.notifyDone(); |
| } |
| } |
| |
| function createTestCase(i) |
| { |
| var canvas_test = document.createElement("canvas"); |
| var ctx_test = canvas_test.getContext("2d"); |
| canvasCtxs[i] = ctx_test; |
| |
| var newImg = new Image(); |
| newImg.onload = function() { |
| ctx_test.drawImage(newImg, 0, 0, 2500, 1750); |
| onCanvasDrawCompleted(ctx_test); |
| } |
| testImages[i] = newImg; |
| } |
| |
| for (var i = 0; i < (numToBlobCalls + numToDataURLCalls); i++) |
| { |
| createTestCase(i); |
| } |