Index: third_party/WebKit/LayoutTests/fast/canvas/canvas-drawImage-shadow.html |
diff --git a/third_party/WebKit/LayoutTests/fast/canvas/canvas-drawImage-shadow.html b/third_party/WebKit/LayoutTests/fast/canvas/canvas-drawImage-shadow.html |
index b4f725814211e0c601e53f8736d3f9152abd58db..fc46ba6210a267b61389268b965e984eb435db9a 100644 |
--- a/third_party/WebKit/LayoutTests/fast/canvas/canvas-drawImage-shadow.html |
+++ b/third_party/WebKit/LayoutTests/fast/canvas/canvas-drawImage-shadow.html |
@@ -18,7 +18,6 @@ aCtx.fill(); |
// Create the image object to be drawn on the master canvas. |
var img = new Image(); |
-img.onload = drawImageToCanvasAndCheckPixels; |
img.src = aCanvas.toDataURL(); // set a data URI of the base64 enconded image as the source |
// Create master canvas. |
@@ -28,6 +27,34 @@ canvas.setAttribute('width', '600'); |
canvas.setAttribute('height', '600'); |
var ctx = canvas.getContext('2d'); |
+var testScenarios = [ |
+ ['Test solid shadow 1', 260, 300, [0, 0, 0, 0]], |
+ ['Test solid shadow 2', 350, 100, [240, 50, 50, 255]], |
+ ['Test solid shadow 3', 400, 200, [240, 50, 50, 255]], |
+ ['Test solid shadow 4', 490, 65, [0, 0, 0, 0]], |
+ ['Test solid shadow 5', 485, 65, [0, 0, 0, 0]], |
+ |
+ ['Test blurry shadow 1', 260, 400, [0, 0, 0, 0]], |
+ ['Test blurry shadow 2', 350, 300, [0, 0, 255, 'neq', 255]], |
+ ['Test blurry shadow 3', 300, 400, [0, 0, 255, 'neq', 255]], |
+ ['Test blurry shadow 4', 300, 500, [0, 0, 255, 'neq', 255]], |
+ ['Test blurry shadow 5', 400, 500, [0, 0, 255, 'neq', 255]], |
+ ['Test blurry shadow 6', 400, 400, [0, 0, 255]], |
+ ['Test blurry shadow 7', 490, 315, [0, 0, 0, 0]], |
+ ['Test blurry shadow 8', 485, 320, [0, 0, 0, 0]], |
+]; |
+ |
+function runTestScenario(x, y, expectedColor) |
+{ |
+ imageData = ctx.getImageData(x, y, 1, 1).data; |
+ if (expectedColor.length == 5) { |
+ assert_array_equals(imageData.slice(0,3), expectedColor.slice(0,3)); |
+ assert_not_equals(imageData[3], expectedColor[4]); |
+ } else { |
+ assert_array_equals(imageData.slice(0, expectedColor.length), expectedColor); |
+ } |
+} |
+ |
function drawImageToCanvasAndCheckPixels() { |
ctx.shadowOffsetX = 250; |
ctx.shadowColor = 'rgba(240, 50, 50, 1.0)'; |
@@ -39,106 +66,16 @@ function drawImageToCanvasAndCheckPixels() { |
ctx.shadowColor = 'rgba(0, 0, 255, 1.0)'; |
ctx.drawImage(img, 50, 300); |
- checkPixels(); |
-} |
+ for (var i = 0; i < testScenarios.length; i++) |
+ runTestScenario(testScenarios[i][1], |
+ testScenarios[i][2], |
+ testScenarios[i][3]);} |
-function checkPixels() { |
- test(function(t) { |
- var imageData, data; |
- |
- // Verify solid shadow. |
- imageData = ctx.getImageData(260, 300, 1, 1); |
- d = imageData.data; |
- assert_equals(d[0], 0); |
- assert_equals(d[1], 0); |
- assert_equals(d[2], 0); |
- assert_equals(d[3], 0); |
- |
- imageData = ctx.getImageData(350, 100, 1, 1); |
- d = imageData.data; |
- assert_equals(d[0], 240); |
- assert_equals(d[1], 50); |
- assert_equals(d[2], 50); |
- assert_equals(d[3], 255); |
- |
- imageData = ctx.getImageData(400, 200, 1, 1); |
- d = imageData.data; |
- assert_equals(d[0], 240); |
- assert_equals(d[1], 50); |
- assert_equals(d[2], 50); |
- assert_equals(d[3], 255); |
- |
- imageData = ctx.getImageData(490, 65, 1, 1); |
- d = imageData.data; |
- assert_equals(d[0], 0); |
- assert_equals(d[1], 0); |
- assert_equals(d[2], 0); |
- assert_equals(d[3], 0); |
- |
- imageData = ctx.getImageData(485, 65, 1, 1); |
- d = imageData.data; |
- assert_equals(d[0], 0); |
- assert_equals(d[1], 0); |
- assert_equals(d[2], 0); |
- assert_equals(d[3], 0); |
- |
- // Verify blurry shadow. |
- imageData = ctx.getImageData(260, 400, 1, 1); |
- d = imageData.data; |
- assert_equals(d[0], 0); |
- assert_equals(d[1], 0); |
- assert_equals(d[2], 0); |
- assert_equals(d[3], 0); |
- |
- imageData = ctx.getImageData(350, 300, 1, 1); |
- d = imageData.data; |
- assert_equals(d[0], 0); |
- assert_equals(d[1], 0); |
- assert_equals(d[2], 255); |
- assert_not_equals(d[3], 255); |
- |
- imageData = ctx.getImageData(300, 400, 1, 1); |
- d = imageData.data; |
- assert_equals(d[0], 0); |
- assert_equals(d[1], 0); |
- assert_equals(d[2], 255); |
- assert_not_equals(d[3], 255); |
- |
- imageData = ctx.getImageData(300, 500, 1, 1); |
- d = imageData.data; |
- assert_equals(d[0], 0); |
- assert_equals(d[1], 0); |
- assert_equals(d[2], 255); |
- assert_not_equals(d[3], 255); |
- |
- imageData = ctx.getImageData(400, 500, 1, 1); |
- d = imageData.data; |
- assert_equals(d[0], 0); |
- assert_equals(d[1], 0); |
- assert_equals(d[2], 255); |
- assert_not_equals(d[3], 255); |
- |
- imageData = ctx.getImageData(400, 400, 1, 1); |
- d = imageData.data; |
- assert_equals(d[0], 0); |
- assert_equals(d[1], 0); |
- assert_equals(d[2], 255); |
- |
- imageData = ctx.getImageData(490, 315, 1, 1); |
- d = imageData.data; |
- assert_equals(d[0], 0); |
- assert_equals(d[1], 0); |
- assert_equals(d[2], 0); |
- assert_equals(d[3], 0); |
- |
- imageData = ctx.getImageData(485, 320, 1, 1); |
- d = imageData.data; |
- assert_equals(d[0], 0); |
- assert_equals(d[1], 0); |
- assert_equals(d[2], 0); |
- assert_equals(d[3], 0); |
- |
- }, "Ensure correct behavior of canvas with image shadow. A square with a cut-out top-right corner should be displayed with solid shadow (top) and blur shadow (bottom)."); |
-} |
+async_test(t => { |
+ img.onload = function() { |
+ t.step(drawImageToCanvasAndCheckPixels); |
+ t.done(); |
+ } |
+}, "Ensure correct behavior of canvas with image shadow. A square with a cut-out top-right corner should be displayed with solid shadow (top) and blur shadow (bottom)."); |
</script> |
</body> |