Index: LayoutTests/fast/canvas/canvas-createImageBitmap-immutable.html |
diff --git a/LayoutTests/fast/canvas/canvas-createImageBitmap-immutable.html b/LayoutTests/fast/canvas/canvas-createImageBitmap-immutable.html |
new file mode 100644 |
index 0000000000000000000000000000000000000000..5e6245af1190f4b1f4f8cab66e9c3aff9b2e6fda |
--- /dev/null |
+++ b/LayoutTests/fast/canvas/canvas-createImageBitmap-immutable.html |
@@ -0,0 +1,105 @@ |
+<html> |
+<body> |
+<script> |
+if (window.testRunner) |
+ window.testRunner.waitUntilDone(); |
+ |
+function shouldNotBeCalled() { |
+ testFailed("Promise was rejected."); |
+ finishJSTest(); |
+} |
+ |
+var aCanvas = document.createElement('canvas'); |
+aCanvas.setAttribute('width', '10'); |
+aCanvas.setAttribute('height', '10'); |
+var aCtx = aCanvas.getContext('2d'); |
+aCtx.fillStyle = 'green'; |
+aCtx.fillRect(0, 0, 20, 20); |
+ |
+var bCanvas = document.createElement('canvas'); |
+bCanvas.setAttribute('width', '10'); |
+bCanvas.setAttribute('height', '10'); |
+var bCtx = bCanvas.getContext('2d'); |
+bCtx.fillStyle = 'red'; |
+bCtx.fillRect(0, 0, 20, 20); |
+ |
+var canvas = document.createElement('canvas'); |
+canvas.setAttribute('width', '40'); |
+canvas.setAttribute('height', '30'); |
+var ctx = canvas.getContext('2d'); |
+document.body.appendChild(canvas); |
+ |
+var image = new Image(); |
+image.onload = imageLoaded; |
+image.src = aCanvas.toDataURL(); |
+ |
+var d; |
+ |
+function imageLoaded() { |
+ d = aCtx.getImageData(0, 0, 10, 10); |
+ createImageBitmap(image).then(callback('Image'), shouldNotBeCalled); |
+ createImageBitmap(d).then(callback('Data'), shouldNotBeCalled); |
+ createImageBitmap(aCanvas).then(callback('Canvas'), shouldNotBeCalled); |
+} |
+ |
+var imageBitmapImage, imageBitmapData, imageBitmapCanvas; |
+var i = 0; |
+function callback(name) { |
+ var name = name; |
+ return function(imageBitmap) { |
+ switch(name) { |
+ case 'Image': |
+ imageBitmapImage = imageBitmap; |
+ image.onload = draw(imageBitmapImage); |
+ image.src = bCanvas.toDataURL(); |
+ createImageBitmap(imageBitmapImage).then(callback('ImageBitmapImage', shouldNotBeCalled)); |
+ break; |
+ case 'Data': |
+ imageBitmapData = imageBitmap; |
+ d = 0; |
+ ctx.drawImage(imageBitmapData, 11, 0); |
+ createImageBitmap(imageBitmapData).then(callback('ImageBitmapData', shouldNotBeCalled)); |
+ checkIfDone(); |
+ break; |
+ case 'Canvas': |
+ imageBitmapCanvas = imageBitmap; |
+ aCtx.clearRect(0, 0, 10, 10); |
+ ctx.drawImage(imageBitmapCanvas, 22, 0); |
+ createImageBitmap(imageBitmapCanvas).then(callback('ImageBitmapCanvas', shouldNotBeCalled)); |
+ checkIfDone(); |
+ break; |
+ case 'ImageBitmapImage': |
+ imageBitmapImage = 0; |
+ ctx.drawImage(imageBitmap, 0, 11); |
+ checkIfDone(); |
+ break; |
+ case 'ImageBitmapData': |
+ d = 0; |
+ imageBitmapData = 0; |
+ ctx.drawImage(imageBitmap, 11, 11); |
+ checkIfDone(); |
+ break; |
+ case 'ImageBitmapCanvas': |
+ aCtx.clearRect(0, 0, 10, 10); |
+ imageBitmapCanvas = 0; |
+ ctx.drawImage(imageBitmap, 22, 11); |
+ checkIfDone(); |
+ break; |
+ } |
+ } |
+} |
+ |
+function draw(imageBitmap) { |
+ ctx.drawImage(imageBitmap, 0, 0); |
+ checkIfDone(); |
+} |
+ |
+function checkIfDone() { |
+ if (++i == 6 && window.testRunner) |
+ window.testRunner.notifyDone(); |
+} |
+ |
+</script> |
+<p>There should be 6 green squares displayed in a 2 row by 3 column grid.</p> |
+</body> |
+</html> |