Skip to content

Commit

Permalink
Fix validity checks in createPattern to follow the spec.
Browse files Browse the repository at this point in the history
Differential Revision: https://phabricator.services.mozilla.com/D63409

bugzilla-url: https://bugzilla.mozilla.org/show_bug.cgi?id=1614225
gecko-commit: aac4c06cc1cef17c5ad638fdd313801420fdd953
gecko-integration-branch: autoland
gecko-reviewers: jrmuizel
  • Loading branch information
bzbarsky authored and moz-wptsync-bot committed Feb 22, 2020
1 parent a378af2 commit 0ac5dc3
Show file tree
Hide file tree
Showing 10 changed files with 317 additions and 1 deletion.
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
<!DOCTYPE html>
<!-- DO NOT EDIT! This test has been generated by /2dcontext/tools/gentest.py. -->
<title>Canvas test: 2d.pattern.image.nonexistent-but-loading</title>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/2dcontext/resources/canvas-tests.js"></script>
<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
<body class="show_output">

<h1>2d.pattern.image.nonexistent-but-loading</h1>
<p class="desc"></p>


<p class="output">Actual output:</p>
<canvas id="c" class="output" width="100" height="50"><p class="fallback">FAIL (fallback content)</p></canvas>

<ul id="d"></ul>
<script>
var t = async_test("");
_addTest(function(canvas, ctx) {

var img = document.createElement("img");
img.src = "/images/no-such-image-really.png";
_assertSame(ctx.createPattern(img, 'repeat'), null, "ctx.createPattern(img, 'repeat')", "null");
var img = document.createElementNS("http://www.w3.org/2000/svg", "image");
img.src = "/images/no-such-image-really.png";
_assertSame(ctx.createPattern(img, 'repeat'), null, "ctx.createPattern(img, 'repeat')", "null");


});
</script>

29 changes: 29 additions & 0 deletions 2dcontext/fill-and-stroke-styles/2d.pattern.image.nonexistent.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
<!DOCTYPE html>
<!-- DO NOT EDIT! This test has been generated by /2dcontext/tools/gentest.py. -->
<title>Canvas test: 2d.pattern.image.nonexistent</title>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/2dcontext/resources/canvas-tests.js"></script>
<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
<body class="show_output">

<h1>2d.pattern.image.nonexistent</h1>
<p class="desc"></p>


<p class="output">Actual output:</p>
<canvas id="c" class="output" width="100" height="50"><p class="fallback">FAIL (fallback content)</p></canvas>

<ul id="d"></ul>
<script>
var t = async_test("");
_addTest(function(canvas, ctx) {

var img = document.getElementById('no-such-image-really.png');
assert_throws_dom("INVALID_STATE_ERR", function() { ctx.createPattern(img, 'repeat'); });


});
</script>
<img src="/images/no-such-image-really.png" id="no-such-image-really.png" class="resource">

30 changes: 30 additions & 0 deletions 2dcontext/fill-and-stroke-styles/2d.pattern.image.nosrc.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
<!DOCTYPE html>
<!-- DO NOT EDIT! This test has been generated by /2dcontext/tools/gentest.py. -->
<title>Canvas test: 2d.pattern.image.nosrc</title>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/2dcontext/resources/canvas-tests.js"></script>
<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
<body class="show_output">

<h1>2d.pattern.image.nosrc</h1>
<p class="desc"></p>


<p class="output">Actual output:</p>
<canvas id="c" class="output" width="100" height="50"><p class="fallback">FAIL (fallback content)</p></canvas>

<ul id="d"></ul>
<script>
var t = async_test("");
_addTest(function(canvas, ctx) {

var img = document.createElement("img");
_assertSame(ctx.createPattern(img, 'repeat'), null, "ctx.createPattern(img, 'repeat')", "null");
var img = document.createElementNS("http://www.w3.org/2000/svg", "image");
_assertSame(ctx.createPattern(img, 'repeat'), null, "ctx.createPattern(img, 'repeat')", "null");


});
</script>

29 changes: 29 additions & 0 deletions 2dcontext/fill-and-stroke-styles/2d.pattern.image.zeroheight.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
<!DOCTYPE html>
<!-- DO NOT EDIT! This test has been generated by /2dcontext/tools/gentest.py. -->
<title>Canvas test: 2d.pattern.image.zeroheight</title>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/2dcontext/resources/canvas-tests.js"></script>
<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
<body class="show_output">

<h1>2d.pattern.image.zeroheight</h1>
<p class="desc"></p>


<p class="output">Actual output:</p>
<canvas id="c" class="output" width="100" height="50"><p class="fallback">FAIL (fallback content)</p></canvas>

<ul id="d"></ul>
<script>
var t = async_test("");
_addTest(function(canvas, ctx) {

var img = document.getElementById('red-zeroheight.svg');
_assertSame(ctx.createPattern(img, 'repeat'), null, "ctx.createPattern(img, 'repeat')", "null");


});
</script>
<img src="/images/red-zeroheight.svg" id="red-zeroheight.svg" class="resource">

29 changes: 29 additions & 0 deletions 2dcontext/fill-and-stroke-styles/2d.pattern.image.zerowidth.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
<!DOCTYPE html>
<!-- DO NOT EDIT! This test has been generated by /2dcontext/tools/gentest.py. -->
<title>Canvas test: 2d.pattern.image.zerowidth</title>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/2dcontext/resources/canvas-tests.js"></script>
<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
<body class="show_output">

<h1>2d.pattern.image.zerowidth</h1>
<p class="desc"></p>


<p class="output">Actual output:</p>
<canvas id="c" class="output" width="100" height="50"><p class="fallback">FAIL (fallback content)</p></canvas>

<ul id="d"></ul>
<script>
var t = async_test("");
_addTest(function(canvas, ctx) {

var img = document.getElementById('red-zerowidth.svg');
_assertSame(ctx.createPattern(img, 'repeat'), null, "ctx.createPattern(img, 'repeat')", "null");


});
</script>
<img src="/images/red-zerowidth.svg" id="red-zerowidth.svg" class="resource">

Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
<!DOCTYPE html>
<!-- DO NOT EDIT! This test has been generated by /2dcontext/tools/gentest.py. -->
<title>Canvas test: 2d.pattern.svgimage.nonexistent</title>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/2dcontext/resources/canvas-tests.js"></script>
<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
<body class="show_output">

<h1>2d.pattern.svgimage.nonexistent</h1>
<p class="desc"></p>


<p class="output">Actual output:</p>
<canvas id="c" class="output" width="100" height="50"><p class="fallback">FAIL (fallback content)</p></canvas>

<ul id="d"></ul>
<script>
var t = async_test("");
_addTest(function(canvas, ctx) {

var img = document.getElementById('no-such-image-really.png');
assert_throws_dom("INVALID_STATE_ERR", function() { ctx.createPattern(img, 'repeat'); });


});
</script>
<svg><image xlink:href="/images/no-such-image-really.png" id="no-such-image-really.png" class="resource"></svg>

Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
<!DOCTYPE html>
<!-- DO NOT EDIT! This test has been generated by /2dcontext/tools/gentest.py. -->
<title>Canvas test: 2d.pattern.svgimage.zeroheight</title>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/2dcontext/resources/canvas-tests.js"></script>
<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
<body class="show_output">

<h1>2d.pattern.svgimage.zeroheight</h1>
<p class="desc"></p>


<p class="output">Actual output:</p>
<canvas id="c" class="output" width="100" height="50"><p class="fallback">FAIL (fallback content)</p></canvas>

<ul id="d"></ul>
<script>
var t = async_test("");
_addTest(function(canvas, ctx) {

var img = document.getElementById('red-zeroheight.svg');
_assertSame(ctx.createPattern(img, 'repeat'), null, "ctx.createPattern(img, 'repeat')", "null");


});
</script>
<svg><image xlink:href="/images/red-zeroheight.svg" id="red-zeroheight.svg" class="resource"></svg>

Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
<!DOCTYPE html>
<!-- DO NOT EDIT! This test has been generated by /2dcontext/tools/gentest.py. -->
<title>Canvas test: 2d.pattern.svgimage.zerowidth</title>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/2dcontext/resources/canvas-tests.js"></script>
<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
<body class="show_output">

<h1>2d.pattern.svgimage.zerowidth</h1>
<p class="desc"></p>


<p class="output">Actual output:</p>
<canvas id="c" class="output" width="100" height="50"><p class="fallback">FAIL (fallback content)</p></canvas>

<ul id="d"></ul>
<script>
var t = async_test("");
_addTest(function(canvas, ctx) {

var img = document.getElementById('red-zerowidth.svg');
_assertSame(ctx.createPattern(img, 'repeat'), null, "ctx.createPattern(img, 'repeat')", "null");


});
</script>
<svg><image xlink:href="/images/red-zerowidth.svg" id="red-zerowidth.svg" class="resource"></svg>

6 changes: 6 additions & 0 deletions 2dcontext/tools/gentestutils.py
Original file line number Diff line number Diff line change
Expand Up @@ -361,6 +361,12 @@ def expand_test_code(code):
used_images[i] = 1
i = '../images/%s' % i
images += '<img src="%s" id="%s" class="resource">\n' % (i,id)
for i in test.get('svgimages', []):
id = i.split('/')[-1]
if '/' not in i:
used_images[i] = 1
i = '../images/%s' % i
images += '<svg><image xlink:href="%s" id="%s" class="resource"></svg>\n' % (i,id)
images = images.replace("../images/", "/images/")

fonts = ''
Expand Down
76 changes: 75 additions & 1 deletion 2dcontext/tools/tests2d.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -2898,13 +2898,87 @@
- name: 2d.pattern.image.broken
testing:
- 2d.pattern.incomplete.image
- 2d.pattern.broken.image
images:
- broken.png
code: |
var img = document.getElementById('broken.png');
@assert ctx.createPattern(img, 'repeat') === null;
- name: 2d.pattern.image.nonexistent
testing:
- 2d.pattern.nonexistent.image
images:
- no-such-image-really.png
code: |
var img = document.getElementById('no-such-image-really.png');
@assert throws INVALID_STATE_ERR ctx.createPattern(img, 'repeat');
- name: 2d.pattern.svgimage.nonexistent
testing:
- 2d.pattern.nonexistent.svgimage
svgimages:
- no-such-image-really.png
code: |
var img = document.getElementById('no-such-image-really.png');
@assert throws INVALID_STATE_ERR ctx.createPattern(img, 'repeat');
- name: 2d.pattern.image.nonexistent-but-loading
testing:
- 2d.pattern.nonexistent-but-loading.image
code: |
var img = document.createElement("img");
img.src = "/images/no-such-image-really.png";
@assert ctx.createPattern(img, 'repeat') === null;
var img = document.createElementNS("http://www.w3.org/2000/svg", "image");
img.src = "/images/no-such-image-really.png";
@assert ctx.createPattern(img, 'repeat') === null;
- name: 2d.pattern.image.nosrc
testing:
- 2d.pattern.nosrc.image
code: |
var img = document.createElement("img");
@assert ctx.createPattern(img, 'repeat') === null;
var img = document.createElementNS("http://www.w3.org/2000/svg", "image");
@assert ctx.createPattern(img, 'repeat') === null;
- name: 2d.pattern.image.zerowidth
testing:
- 2d.pattern.zerowidth.image
images:
- red-zerowidth.svg
code: |
var img = document.getElementById('red-zerowidth.svg');
@assert ctx.createPattern(img, 'repeat') === null;
- name: 2d.pattern.image.zeroheight
testing:
- 2d.pattern.zeroheight.image
images:
- red-zeroheight.svg
code: |
var img = document.getElementById('red-zeroheight.svg');
@assert ctx.createPattern(img, 'repeat') === null;
- name: 2d.pattern.svgimage.zerowidth
testing:
- 2d.pattern.zerowidth.svgimage
svgimages:
- red-zerowidth.svg
code: |
var img = document.getElementById('red-zerowidth.svg');
@assert ctx.createPattern(img, 'repeat') === null;
- name: 2d.pattern.svgimage.zeroheight
testing:
- 2d.pattern.zeroheight.svgimage
svgimages:
- red-zeroheight.svg
code: |
var img = document.getElementById('red-zeroheight.svg');
@assert ctx.createPattern(img, 'repeat') === null;
- name: 2d.pattern.repeat.empty
testing:
- 2d.pattern.missing
Expand Down

0 comments on commit 0ac5dc3

Please sign in to comment.