OLD | NEW |
1 <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN"> | 1 <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN"> |
2 <html> | 2 <html> |
3 <head> | 3 <head> |
4 <script src="../js/resources/js-test-pre.js"></script> | 4 <script src="../js/resources/js-test-pre.js"></script> |
5 </head> | 5 </head> |
6 <body> | 6 <body> |
7 <script> | 7 <script> |
8 description("Ensure correct behavior of createImageBitmap for invalid inputs."); | 8 description("Ensure correct behavior of createImageBitmap for invalid inputs."); |
9 window.jsTestIsAsync = true; | 9 window.jsTestIsAsync = true; |
10 | 10 |
11 var InvalidStateError = "InvalidStateError: An attempt was made to use an object
that is not, or is no longer, usable."; | 11 var InvalidStateError = "InvalidStateError: An attempt was made to use an object
that is not, or is no longer, usable."; |
12 var TypeError = "TypeError: Type error"; | 12 var TypeError = "TypeError: Type error"; |
13 var IndexSizeError = "IndexSizeError: Index or size was negative, or greater tha
n the allowed value."; | 13 var IndexSizeError = "IndexSizeError: Index or size was negative, or greater tha
n the allowed value."; |
14 | 14 |
15 function shouldNotBeCalled(imageBitmap) { | 15 var image; |
16 testFailed("shouldNotBeCalled was called."); | 16 var testBitmap; // an ImageBitmap that is uncropped. We use this to test createI
mageBitmap(testBitmap) |
17 } | 17 var d; // image.imageData |
| 18 var blob; |
| 19 var invalidBlob; |
18 | 20 |
19 var image; | 21 // Draw to an auxillary canvas. |
20 var testBitmap; // this is an ImageBitmap that is uncropped. We use this to test
createImageBitmap(testBitmap) | |
21 var d; // image.imageData | |
22 | |
23 // Create auxiliary canvas to draw to and create an image from. | |
24 var aCanvas = document.createElement("canvas"); | 22 var aCanvas = document.createElement("canvas"); |
25 aCanvas.setAttribute("width", "200"); | 23 aCanvas.setAttribute("width", "200"); |
26 aCanvas.setAttribute("height", "200"); | 24 aCanvas.setAttribute("height", "200"); |
27 var aCtx = aCanvas.getContext("2d"); | 25 var aCtx = aCanvas.getContext("2d"); |
28 | 26 |
29 image = new Image(); | 27 image = new Image(); |
30 image.onload = imageLoaded; | 28 image.onload = imageLoaded; |
31 | 29 |
32 // Before image loads | 30 // Before image loads |
33 shouldThrow("createImageBitmap(image)", "InvalidStateError"); | 31 shouldThrow("createImageBitmap(image)", "InvalidStateError"); |
34 image.src = aCanvas.toDataURL(); // set a data URI of the base64 enconded image
as the source | 32 image.src = aCanvas.toDataURL(); |
35 | 33 |
36 video = document.createElement("video"); | 34 video = document.createElement("video"); |
37 video.addEventListener("canplaythrough", videoLoaded, false); | 35 video.addEventListener("canplaythrough", videoLoaded, false); |
38 | 36 |
39 // Before video loads | 37 // Before video loads |
40 shouldThrow("createImageBitmap(video)", "InvalidStateError"); | 38 shouldThrow("createImageBitmap(video)", "InvalidStateError"); |
41 video.src = "../../compositing/resources/video.ogv"; | 39 video.src = "../../compositing/resources/video.ogv"; |
42 | 40 |
43 var imageLoaded = false; | 41 var imageLoaded = false; |
44 var videoLoaded = false; | 42 var videoLoaded = false; |
45 var imageBitmapLoaded = false; | 43 var imageBitmapLoaded = false; |
| 44 var blobLoaded = false; |
| 45 var invalidBlobLoaded = false; |
46 | 46 |
47 function imageLoaded() { | 47 function imageLoaded() { |
48 createImageBitmap(image).then(imageBitmapLoadedCallback, function() { | 48 createImageBitmap(image).then(imageBitmapLoadedCallback, function() { |
49 testFailed("Promise was rejected."); | 49 testFailed("Promise was rejected."); |
50 finishJSTest(); | 50 finishJSTest(); |
51 }); | 51 }); |
52 d = aCtx.getImageData(0, 0, 200, 200); | 52 d = aCtx.getImageData(0, 0, 200, 200); |
53 imageLoaded = true; | 53 imageLoaded = true; |
54 loaded(); | 54 loaded(); |
55 } | 55 } |
56 | 56 |
57 function videoLoaded() { | 57 function videoLoaded() { |
58 videoLoaded = true; | 58 videoLoaded = true; |
59 loaded(); | 59 loaded(); |
60 } | 60 } |
61 | 61 |
62 function imageBitmapLoadedCallback(imageBitmap) { | 62 function imageBitmapLoadedCallback(imageBitmap) { |
63 testBitmap = imageBitmap; | 63 testBitmap = imageBitmap; |
64 imageBitmapLoaded = true; | 64 imageBitmapLoaded = true; |
65 loaded(); | 65 loaded(); |
66 } | 66 } |
67 | 67 |
| 68 var xhr = new XMLHttpRequest(); |
| 69 xhr.open("GET", 'resources/pattern.png'); |
| 70 xhr.responseType = 'blob'; |
| 71 xhr.send(); |
| 72 xhr.onload = function() { |
| 73 blob = xhr.response; |
| 74 blobLoaded = true; |
| 75 loaded(); |
| 76 } |
| 77 |
| 78 var xhr2 = new XMLHttpRequest(); |
| 79 xhr2.open("GET", 'resources/repaint.js'); |
| 80 xhr2.responseType = 'blob'; |
| 81 xhr2.send(); |
| 82 xhr2.onload = function() { |
| 83 invalidBlob = xhr2.response; |
| 84 invalidBlobLoaded = true; |
| 85 loaded(); |
| 86 } |
| 87 |
68 function loaded() { | 88 function loaded() { |
69 if (imageLoaded && videoLoaded && imageBitmapLoaded) { | 89 if (imageLoaded && videoLoaded && imageBitmapLoaded && blobLoaded && invalid
BlobLoaded) { |
70 shouldThrow("createImageBitmap(undefined, shouldNotBeCalled)", "TypeErro
r"); | 90 shouldThrow("createImageBitmap(undefined)", "TypeError"); |
71 | 91 |
72 shouldThrow("createImageBitmap(image, 0, 0, 10, 0)", "IndexSizeError"); | 92 shouldThrow("createImageBitmap(image, 0, 0, 10, 0)", "IndexSizeError"); |
73 shouldThrow("createImageBitmap(image, 0, 0, 0, 10)", "IndexSizeError"); | 93 shouldThrow("createImageBitmap(image, 0, 0, 0, 10)", "IndexSizeError"); |
74 | 94 |
75 shouldThrow("createImageBitmap(video, 0, 0, 10, 0)", "IndexSizeError"); | 95 shouldThrow("createImageBitmap(video, 0, 0, 10, 0)", "IndexSizeError"); |
76 shouldThrow("createImageBitmap(video, 0, 0, 0, 10)", "IndexSizeError"); | 96 shouldThrow("createImageBitmap(video, 0, 0, 0, 10)", "IndexSizeError"); |
77 | 97 |
78 shouldThrow("createImageBitmap(aCanvas, 0, 0, 10, 0)", "IndexSizeError")
; | 98 shouldThrow("createImageBitmap(aCanvas, 0, 0, 10, 0)", "IndexSizeError")
; |
79 shouldThrow("createImageBitmap(aCanvas, 0, 0, 0, 10)", "IndexSizeError")
; | 99 shouldThrow("createImageBitmap(aCanvas, 0, 0, 0, 10)", "IndexSizeError")
; |
80 | 100 |
81 shouldThrow("createImageBitmap(d, 0, 0, 10, 0)", "IndexSizeError"); | 101 shouldThrow("createImageBitmap(d, 0, 0, 10, 0)", "IndexSizeError"); |
82 shouldThrow("createImageBitmap(d, 0, 0, 0, 10)", "IndexSizeError"); | 102 shouldThrow("createImageBitmap(d, 0, 0, 0, 10)", "IndexSizeError"); |
83 | 103 |
84 shouldThrow("createImageBitmap(aCtx, 0, 0, 10, 0)", "IndexSizeError"); | 104 shouldThrow("createImageBitmap(aCtx, 0, 0, 10, 0)", "IndexSizeError"); |
85 shouldThrow("createImageBitmap(aCtx, 0, 0, 0, 10)", "IndexSizeError"); | 105 shouldThrow("createImageBitmap(aCtx, 0, 0, 0, 10)", "IndexSizeError"); |
86 | 106 |
87 shouldThrow("createImageBitmap(testBitmap, 0, 0, 10, 0)", "IndexSizeErro
r"); | 107 shouldThrow("createImageBitmap(testBitmap, 0, 0, 10, 0)", "IndexSizeErro
r"); |
88 shouldThrow("createImageBitmap(testBitmap, 0, 0, 0, 10)", "IndexSizeErro
r"); | 108 shouldThrow("createImageBitmap(testBitmap, 0, 0, 0, 10)", "IndexSizeErro
r"); |
89 | 109 |
90 finishJSTest(); | 110 shouldThrow("createImageBitmap(blob, 0, 0, 10, 0)", "IndexSizeError"); |
| 111 shouldThrow("createImageBitmap(blob, 0, 0, 0, 10)", "IndexSizeError"); |
| 112 |
| 113 createImageBitmap(invalidBlob).then(function() { |
| 114 testFailed("Invalid blob fulfilled."); |
| 115 finishJSTest(); |
| 116 }, function() { |
| 117 testPassed("createImageBitmap(invalidBlob) was rejected."); |
| 118 finishJSTest(); |
| 119 }); |
91 } | 120 } |
92 } | 121 } |
93 | 122 |
94 </script> | 123 </script> |
95 <script src="../js/resources/js-test-post.js"></script> | 124 <script src="../js/resources/js-test-post.js"></script> |
96 </body> | 125 </body> |
97 </html> | 126 </html> |
OLD | NEW |