- add third_party src.
[platform/framework/web/crosswalk.git] / src / third_party / WebKit / LayoutTests / fast / canvas / canvas-createImageBitmap-invalid-args.html
1 <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
2 <html>
3 <head>
4 <script src="../js/resources/js-test-pre.js"></script>
5 </head>
6 <body>
7 <script>
8 description("Ensure correct behavior of createImageBitmap for invalid inputs.");
9 window.jsTestIsAsync = true;
10
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";
13 var IndexSizeError = "IndexSizeError: Index or size was negative, or greater than the allowed value.";
14
15 var image;
16 var testBitmap; // an ImageBitmap that is uncropped. We use this to test createImageBitmap(testBitmap)
17 var d;          // image.imageData
18 var blob;
19 var invalidBlob;
20
21 // Draw to an auxillary canvas.
22 var aCanvas = document.createElement("canvas");
23 aCanvas.setAttribute("width", "200");
24 aCanvas.setAttribute("height", "200");
25 var aCtx = aCanvas.getContext("2d");
26
27 image = new Image();
28 image.onload = imageLoaded;
29
30 // Before image loads
31 shouldThrow("createImageBitmap(image)", "InvalidStateError");
32 image.src = aCanvas.toDataURL();
33
34 video = document.createElement("video");
35 video.addEventListener("canplaythrough", videoLoaded, false);
36
37 // Before video loads
38 shouldThrow("createImageBitmap(video)", "InvalidStateError");
39 video.src = "../../compositing/resources/video.ogv";
40
41 var imageLoaded = false;
42 var videoLoaded = false;
43 var imageBitmapLoaded = false;
44 var blobLoaded = false;
45 var invalidBlobLoaded = false;
46
47 function imageLoaded() {
48     createImageBitmap(image).then(imageBitmapLoadedCallback, function() {
49         testFailed("Promise was rejected.");
50         finishJSTest();
51     });
52     d = aCtx.getImageData(0, 0, 200, 200);
53     imageLoaded = true;
54     loaded();
55 }
56
57 function videoLoaded() {
58     videoLoaded = true;
59     loaded();
60 }
61
62 function imageBitmapLoadedCallback(imageBitmap) {
63     testBitmap = imageBitmap;
64     imageBitmapLoaded = true;
65     loaded();
66 }
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
88 function loaded() {
89     if (imageLoaded && videoLoaded && imageBitmapLoaded && blobLoaded && invalidBlobLoaded) {
90         shouldThrow("createImageBitmap(undefined)", "TypeError");
91
92         shouldThrow("createImageBitmap(image, 0, 0, 10, 0)", "IndexSizeError");
93         shouldThrow("createImageBitmap(image, 0, 0, 0, 10)", "IndexSizeError");
94
95         shouldThrow("createImageBitmap(video, 0, 0, 10, 0)", "IndexSizeError");
96         shouldThrow("createImageBitmap(video, 0, 0, 0, 10)", "IndexSizeError");
97
98         shouldThrow("createImageBitmap(aCanvas, 0, 0, 10, 0)", "IndexSizeError");
99         shouldThrow("createImageBitmap(aCanvas, 0, 0, 0, 10)", "IndexSizeError");
100
101         shouldThrow("createImageBitmap(d, 0, 0, 10, 0)", "IndexSizeError");
102         shouldThrow("createImageBitmap(d, 0, 0, 0, 10)", "IndexSizeError");
103
104         shouldThrow("createImageBitmap(aCtx, 0, 0, 10, 0)", "IndexSizeError");
105         shouldThrow("createImageBitmap(aCtx, 0, 0, 0, 10)", "IndexSizeError");
106
107         shouldThrow("createImageBitmap(testBitmap, 0, 0, 10, 0)", "IndexSizeError");
108         shouldThrow("createImageBitmap(testBitmap, 0, 0, 0, 10)", "IndexSizeError");
109
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         });
120     }
121 }
122
123 </script>
124 </body>
125 </html>