| <script src="../../resources/testharness.js"></script> |
| <script src="../../resources/testharnessreport.js"></script> |
| <script> |
| |
| function checkPixels(ctx, coordinates, color) { |
| for (i = 0; i < coordinates.length; i++) { |
| var pixel = ctx.getImageData(coordinates[i][0], coordinates[i][1], 1, 1).data; |
| var message = "Pixel at " + coordinates[i] + " must be " + color; |
| assert_array_equals(pixel, color, message); |
| } |
| } |
| |
| function checkLines(ctx, lines, areVertical, color) { |
| var pixels; |
| for (l = 0; l < lines.length; l++) { |
| line = lines[l]; |
| if (areVertical) |
| pixels = ctx.getImageData(line[0], line[1], 1, line[2]).data; |
| else |
| pixels = ctx.getImageData(line[0], line[1], line[2], 1).data; |
| for (i = 0; i < line[2]; i++) { |
| var pixel = pixels.slice(i * 4, i * 4 + 4); |
| var message = "Pixel #" + i + " must be " + color; |
| assert_array_equals(pixel, color, message); |
| } |
| } |
| } |
| |
| async_test(function(t) { |
| var aCanvas = document.createElement("canvas"); |
| aCanvas.setAttribute("width", "300"); |
| aCanvas.setAttribute("height", "300"); |
| var aCtx = aCanvas.getContext("2d"); |
| aCtx.fillStyle = 'red'; |
| aCtx.fillRect(0, 0, 300, 300); |
| aCtx.fillStyle = 'green'; |
| aCtx.fillRect(100, 100, 100, 100); |
| |
| var canvas = document.createElement("canvas"); |
| canvas.setAttribute("width", "350"); |
| canvas.setAttribute("height", "200"); |
| var ctx = canvas.getContext("2d"); |
| |
| var greenPixels = [[10, 10], [10,109], [109,10], [109,109], |
| [150, 10], [150,159], [299,10], [299,159]]; |
| // x, y, length |
| var noBleedingHorizontalLines = [[9, 9, 102], [9, 110, 102], |
| [149, 9, 152], [149, 160, 152]]; |
| var noBleedingVerticalLines = [[9, 9, 100], [110, 9, 100], |
| [149, 9, 152], [300, 9, 152]]; |
| |
| createImageBitmap(aCanvas, 100, 100, 100, 100).then(t.step_func_done(function(imageBitmap) { |
| ctx.drawImage(imageBitmap, 10, 10); |
| ctx.drawImage(imageBitmap, 150, 10, 150, 150); |
| checkPixels(ctx, greenPixels, [0, 128, 0, 255]); |
| checkLines(ctx, noBleedingHorizontalLines, false, [0, 0, 0, 0]); |
| checkLines(ctx, noBleedingVerticalLines, true, [0, 0, 0, 0]); |
| t.done(); |
| })); |
| }, "Two green squares with no color bleeding should be visible."); |
| </script> |
| |