OLD | NEW |
1 <!DOCTYPE html> | 1 <script src="../../resources/testharness.js"></script> |
| 2 <script src="../../resources/testharnessreport.js"></script> |
| 3 |
2 <canvas id="mycanvas"><button id="button"></button></canvas> | 4 <canvas id="mycanvas"><button id="button"></button></canvas> |
3 <script src="../../resources/js-test.js"></script> | |
4 <script> | 5 <script> |
5 description("This tests verifies that canvas API calls on a canvas with no backi
ng or no visibility do not crash or throw exceptions."); | |
6 | |
7 if (window.testRunner) { | |
8 testRunner.dumpAsText(); | |
9 } | |
10 | |
11 var canvas = document.getElementById('mycanvas'); | 6 var canvas = document.getElementById('mycanvas'); |
12 var ctx = canvas.getContext('2d'); | 7 var ctx = canvas.getContext('2d'); |
13 var button = document.getElementById('button'); | 8 var button = document.getElementById('button'); |
14 button.focus(); | 9 button.focus(); |
15 | 10 |
16 function testAPICalls() { | 11 function testAPICalls() { |
17 try { | 12 ctx.beginPath(); |
18 ctx.beginPath(); | 13 ctx.rect(0, 0, 10, 10); |
19 ctx.rect(0, 0, 10, 10); | 14 ctx.fill(); |
20 ctx.fill(); | 15 ctx.stroke(); |
21 ctx.stroke(); | 16 ctx.drawFocusIfNeeded(button); |
22 ctx.drawFocusIfNeeded(button); | 17 ctx.isPointInPath(0,0); |
23 ctx.isPointInPath(0,0); | 18 ctx.isPointInStroke(0,0); |
24 ctx.isPointInStroke(0,0); | 19 ctx.clearRect(0, 0, 5, 5); |
25 ctx.clearRect(0, 0, 5, 5); | 20 ctx.fillRect(0, 0, 5, 5); |
26 ctx.fillRect(0, 0, 5, 5); | 21 ctx.strokeRect(0, 0, 5, 5); |
27 ctx.strokeRect(0, 0, 5, 5); | 22 ctx.scrollPathIntoView(); |
28 ctx.scrollPathIntoView(); | 23 data = ctx.createImageData(5, 5); |
29 data = ctx.createImageData(5, 5); | 24 ctx.putImageData(data, 0, 0); |
30 ctx.putImageData(data, 0, 0); | 25 ctx.font = "20px arial"; |
31 ctx.font = "20px arial"; | 26 ctx.fillText("Test", 20, 20); |
32 ctx.fillText("Test", 20, 20); | 27 ctx.strokeText("Test", 20, 20); |
33 ctx.strokeText("Test", 20, 20); | 28 ctx.measureText("Test"); |
34 » ctx.measureText("Test"); | 29 ctx.clip(); |
35 ctx.clip(); | 30 ctx.drawImage(canvas, 0, 0); |
36 ctx.drawImage(canvas, 0, 0); | 31 ctx.getImageData(0, 0, 5, 5); |
37 ctx.getImageData(0, 0, 5, 5); | 32 canvas.toDataURL(); |
38 canvas.toDataURL(); | |
39 } catch(err) { | |
40 testFailed("Unexpected exception."); | |
41 } | |
42 } | 33 } |
43 | 34 |
44 // First pass: normal conditions | 35 test(function(){ |
45 testAPICalls(); | |
46 | 36 |
47 // Test a zero size canvas | 37 // First pass: normal conditions |
48 canvas.width = 0; | 38 testAPICalls(); |
49 testAPICalls(); | |
50 | 39 |
51 // Test a canvas so large that it has no chance of successful allocating a backi
ng | 40 // Test a zero size canvas |
52 canvas.width = 10000000; | 41 canvas.width = 0; |
53 canvas.height = 10000000; | 42 testAPICalls(); |
54 testAPICalls(); | |
55 | 43 |
56 // Test a canvas that is valid, but detached from the DOM | 44 // Test a canvas so large that it has no chance of successful allocating a b
acking |
57 canvas.width = 100; | 45 canvas.width = 10000000; |
58 canvas.height = 100; | 46 canvas.height = 10000000; |
59 canvas.remove(); | 47 testAPICalls(); |
60 testAPICalls(); | |
61 | 48 |
| 49 // Test a canvas that is valid, but detached from the DOM |
| 50 canvas.width = 100; |
| 51 canvas.height = 100; |
| 52 canvas.remove(); |
| 53 testAPICalls(); |
| 54 |
| 55 }, "Verify that canvas API calls on a canvas with no backing or no visibility do
not crash or throw exceptions."); |
62 </script> | 56 </script> |
OLD | NEW |