Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(39)

Side by Side Diff: LayoutTests/fast/canvas/canvas-createImageBitmap-invalid-args.html

Issue 20748002: Blob creation methods for ImageBitmap. (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Make ImageBitmapFactories a class. Created 7 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
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 debug("PASS 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>
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698