Skip to content

Commit 34476a9

Browse files
graveljpmoz-wptsync-bot
authored andcommitted
Bug 1825099 [wpt PR 39255] - Reject kernelMatrix with 0 width in convolveMatrix CanvasFilters., a=testonly
Automatic update from web-platform-tests Reject kernelMatrix with 0 width in convolveMatrix CanvasFilters. Only the height was checked (rejecting `[]` kernels) but kernels with zero width like `[[], []]` were incorrectly accepted. The current CanvasFilter specification is defined by reusing the SVG specification for how the filters attributes work (whatwg/html#6763). For the "feConvolveMatrix" filter, the SVG specification says (https://www.w3.org/TR/SVG11/filters.html#feConvolveMatrixElement): "Attribute definitions: - order = "<number-optional-number>" Indicates the number of cells in each dimension for ‘kernelMatrix’. The values provided must be <integer>s greater than zero. The first number, <orderX>, indicates the number of columns in the matrix. The second number, <orderY>, indicates the number of rows in the matrix. If <orderY> is not provided, it defaults to <orderX>." Change-Id: I23baf05db73e679a52cd9d553d7c6308d91b56f9 Bug: 1428652 Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/4377066 Reviewed-by: Aaron Krajeski <[email protected]> Commit-Queue: Jean-Philippe Gravel <[email protected]> Cr-Commit-Position: refs/heads/main@{#1124423} -- wpt-commits: 8b9f4e275162d151dc2a0c847601542d75051cbf wpt-pr: 39255
1 parent 8777cd2 commit 34476a9

4 files changed

+24
-0
lines changed

testing/web-platform/tests/html/canvas/element/filters/2d.filter.canvasFilterObject.convolveMatrix.exceptions.tentative.html

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,8 +28,14 @@ <h1>2d.filter.canvasFilterObject.convolveMatrix.exceptions.tentative</h1>
2828
assert_throws_js(TypeError, function() { new CanvasFilter({filter: "convolveMatrix", kernelMatrix: [[1, 0], 0]}); });
2929
assert_throws_js(TypeError, function() { new CanvasFilter({filter: "convolveMatrix", kernelMatrix: [[1, 0], [0, Infinity]]}); });
3030
assert_throws_js(TypeError, function() { new CanvasFilter({filter: "convolveMatrix", kernelMatrix: []}); });
31+
assert_throws_js(TypeError, function() { new CanvasFilter({filter: "convolveMatrix", kernelMatrix: [1]}); });
32+
assert_throws_js(TypeError, function() { new CanvasFilter({filter: "convolveMatrix", kernelMatrix: [1, 2, 3, 4]}); });
33+
assert_throws_js(TypeError, function() { new CanvasFilter({filter: "convolveMatrix", kernelMatrix: [[], []]}); });
34+
assert_throws_js(TypeError, function() { new CanvasFilter({filter: "convolveMatrix", kernelMatrix: [[1, 2], []]}); });
35+
assert_throws_js(TypeError, function() { new CanvasFilter({filter: "convolveMatrix", kernelMatrix: [[], [1, 2]]}); });
3136
// This should not throw an error
3237
ctx.filter = new CanvasFilter({filter: "convolveMatrix", kernelMatrix: [[]]});
38+
ctx.filter = new CanvasFilter({filter: "convolveMatrix", kernelMatrix: [[1]]});
3339

3440

3541
});

testing/web-platform/tests/html/canvas/offscreen/filters/2d.filter.canvasFilterObject.convolveMatrix.exceptions.tentative.html

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,8 +30,14 @@ <h1>2d.filter.canvasFilterObject.convolveMatrix.exceptions.tentative</h1>
3030
assert_throws_js(TypeError, function() { new CanvasFilter({filter: "convolveMatrix", kernelMatrix: [[1, 0], 0]}); });
3131
assert_throws_js(TypeError, function() { new CanvasFilter({filter: "convolveMatrix", kernelMatrix: [[1, 0], [0, Infinity]]}); });
3232
assert_throws_js(TypeError, function() { new CanvasFilter({filter: "convolveMatrix", kernelMatrix: []}); });
33+
assert_throws_js(TypeError, function() { new CanvasFilter({filter: "convolveMatrix", kernelMatrix: [1]}); });
34+
assert_throws_js(TypeError, function() { new CanvasFilter({filter: "convolveMatrix", kernelMatrix: [1, 2, 3, 4]}); });
35+
assert_throws_js(TypeError, function() { new CanvasFilter({filter: "convolveMatrix", kernelMatrix: [[], []]}); });
36+
assert_throws_js(TypeError, function() { new CanvasFilter({filter: "convolveMatrix", kernelMatrix: [[1, 2], []]}); });
37+
assert_throws_js(TypeError, function() { new CanvasFilter({filter: "convolveMatrix", kernelMatrix: [[], [1, 2]]}); });
3338
// This should not throw an error
3439
ctx.filter = new CanvasFilter({filter: "convolveMatrix", kernelMatrix: [[]]});
40+
ctx.filter = new CanvasFilter({filter: "convolveMatrix", kernelMatrix: [[1]]});
3541
})(canvas, ctx);
3642
t.done();
3743

testing/web-platform/tests/html/canvas/offscreen/filters/2d.filter.canvasFilterObject.convolveMatrix.exceptions.tentative.worker.js

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,8 +25,14 @@ assert_throws_js(TypeError, function() { new CanvasFilter({filter: "convolveMatr
2525
assert_throws_js(TypeError, function() { new CanvasFilter({filter: "convolveMatrix", kernelMatrix: [[1, 0], 0]}); });
2626
assert_throws_js(TypeError, function() { new CanvasFilter({filter: "convolveMatrix", kernelMatrix: [[1, 0], [0, Infinity]]}); });
2727
assert_throws_js(TypeError, function() { new CanvasFilter({filter: "convolveMatrix", kernelMatrix: []}); });
28+
assert_throws_js(TypeError, function() { new CanvasFilter({filter: "convolveMatrix", kernelMatrix: [1]}); });
29+
assert_throws_js(TypeError, function() { new CanvasFilter({filter: "convolveMatrix", kernelMatrix: [1, 2, 3, 4]}); });
30+
assert_throws_js(TypeError, function() { new CanvasFilter({filter: "convolveMatrix", kernelMatrix: [[], []]}); });
31+
assert_throws_js(TypeError, function() { new CanvasFilter({filter: "convolveMatrix", kernelMatrix: [[1, 2], []]}); });
32+
assert_throws_js(TypeError, function() { new CanvasFilter({filter: "convolveMatrix", kernelMatrix: [[], [1, 2]]}); });
2833
// This should not throw an error
2934
ctx.filter = new CanvasFilter({filter: "convolveMatrix", kernelMatrix: [[]]});
35+
ctx.filter = new CanvasFilter({filter: "convolveMatrix", kernelMatrix: [[1]]});
3036
t.done();
3137

3238
});

testing/web-platform/tests/html/canvas/tools/yaml-new/filters.yaml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -154,8 +154,14 @@
154154
@assert throws TypeError new CanvasFilter({filter: "convolveMatrix", kernelMatrix: [[1, 0], 0]});
155155
@assert throws TypeError new CanvasFilter({filter: "convolveMatrix", kernelMatrix: [[1, 0], [0, Infinity]]});
156156
@assert throws TypeError new CanvasFilter({filter: "convolveMatrix", kernelMatrix: []});
157+
@assert throws TypeError new CanvasFilter({filter: "convolveMatrix", kernelMatrix: [1]});
158+
@assert throws TypeError new CanvasFilter({filter: "convolveMatrix", kernelMatrix: [1, 2, 3, 4]});
159+
@assert throws TypeError new CanvasFilter({filter: "convolveMatrix", kernelMatrix: [[], []]});
160+
@assert throws TypeError new CanvasFilter({filter: "convolveMatrix", kernelMatrix: [[1, 2], []]});
161+
@assert throws TypeError new CanvasFilter({filter: "convolveMatrix", kernelMatrix: [[], [1, 2]]});
157162
// This should not throw an error
158163
ctx.filter = new CanvasFilter({filter: "convolveMatrix", kernelMatrix: [[]]});
164+
ctx.filter = new CanvasFilter({filter: "convolveMatrix", kernelMatrix: [[1]]});
159165
160166
- name: 2d.filter.canvasFilterObject.componentTransfer.linear.tentative
161167
desc: Test pixels on CanvasFilter() componentTransfer with linear type

0 commit comments

Comments
 (0)