Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(240)

Side by Side Diff: third_party/WebKit/LayoutTests/fast/canvas/script-tests/canvas-toBlob-toDataURL-race.js

Issue 1355333005: Implement Asynchronous image encoding for Canvas.toBlob (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Change async func to static so no need worry if canvas instance does not live long enough Created 5 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
1 if (window.testRunner) {
2 testRunner.dumpAsText();
3 testRunner.waitUntilDone();
4 }
5
6 var numToBlobCalls = 9;
7 var numToDataURLCalls = 3;
8 var testImages = [];
9 var canvasCtxs = [];
10
11 // Create an original canvas with content
12 var canvas = document.createElement("canvas");
13 var ctx = canvas.getContext("2d");
14 ctx.fillStyle = "#EE21AF";
15 ctx.fillRect(0, 0, 2500, 1750);
16
17 function testIfAllImagesAreCorrect()
18 {
19 // All resultant images should be the same as both async and main threads us e the same image encoder
20 var imageMatched = true;
21 var firstImageData = canvasCtxs[0].getImageData(0, 0, 2500, 1750).data;
22 for (var i = 1; i < (numToBlobCalls + numToDataURLCalls); i++)
23 {
24 var nextImageData = canvasCtxs[i].getImageData(0, 0, 2500, 1750).data;
25 for (var k = 0; k < firstImageData.length; k++)
26 {
27 if (firstImageData[k]!=nextImageData[k])
28 {
29 imageMatched = false;
30 break;
31 }
32 }
33 if (!imageMatched)
34 break;
35 }
36 if (imageMatched)
37 testPassed("All images encoded by both async and main threads match one another");
38 else
39 testFailed("Not all images encoded by async and main threads match one a nother");
40 }
41
42 var counter = numToBlobCalls + numToDataURLCalls;
43 function onCanvasDrawCompleted(ctx_test)
44 {
45 counter = counter - 1;
46 if (counter == 0) {
47 testIfAllImagesAreCorrect();
48 if (window.testRunner)
49 testRunner.notifyDone();
50 }
51 }
52
53 function createTestCase(i)
54 {
55 var canvas_test = document.createElement("canvas");
56 var ctx_test = canvas_test.getContext("2d");
57 canvasCtxs[i] = ctx_test;
58
59 var newImg = new Image();
60 newImg.onload = function() {
61 ctx_test.drawImage(newImg, 0, 0, 2500, 1750);
62 onCanvasDrawCompleted(ctx_test);
63 }
64 testImages[i] = newImg;
65 }
66
67 for (var i = 0; i < (numToBlobCalls + numToDataURLCalls); i++)
68 {
69 createTestCase(i);
70 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698