blob: 88dc9bf7e690b9c263c3a436b3d6c24c3373335d [file] [log] [blame]
<!DOCTYPE html>
<script src="../../../resources/testharness.js"></script>
<script src="../../../resources/testharnessreport.js"></script>
<script>
function testCanvas_0f0(ctx) {
var colorData = ctx.getImageData(50, 50, 1, 1).data;
assert_equals(colorData[0], 0);
assert_equals(colorData[1], 255);
assert_equals(colorData[2], 0);
assert_equals(colorData[3], 255);
}
function testException(image) {
var dstCanvas = document.createElement('canvas');
dstCanvas.width = dstCanvas.height = 100;
var dstCtx = dstCanvas.getContext('bitmaprenderer');
assert_true(dstCtx instanceof ImageBitmapRenderingContext);
dstCtx.transferFromImageBitmap(image);
// image is detached after calling transferFromImageBitmap,
// so call transferFromImageBitmap(image) should throw InvalidStateError
assert_throws_dom("InvalidStateError", function() {dstCtx.transferFromImageBitmap(image);});
}
function testDrawCanvasWithImageBitamp(image) {
var dstCanvas = document.createElement('canvas');
dstCanvas.width = dstCanvas.height = 100;
var dstCtx = dstCanvas.getContext('bitmaprenderer');
assert_true(dstCtx instanceof ImageBitmapRenderingContext);
dstCtx.transferFromImageBitmap(image);
// Calling dstCtx.canvas should get the same canvas as the dstCanvas
var testCanvas = dstCtx.canvas;
assert_equals(dstCanvas.width, testCanvas.width);
assert_equals(dstCanvas.height, testCanvas.height);
// After transferFromImageBitmap, image's width && height should be 0
assert_equals(image.width, 0);
assert_equals(image.height, 0);
var myCanvas = document.createElement('canvas');
myCanvas.width = myCanvas.height = 100;
var myCtx = myCanvas.getContext('2d');
myCtx.drawImage(dstCanvas, 10, 10);
testCanvas_0f0(myCtx);
}
promise_test(function() {
var canvas = document.createElement('canvas');
canvas.width = canvas.height = 100;
var ctx = canvas.getContext('2d');
ctx.fillStyle = '#0f0';
ctx.fillRect(0, 0, 100, 100);
testCanvas_0f0(ctx);
return createImageBitmap(canvas).then(testDrawCanvasWithImageBitamp);
}, 'testDrawCanvasWithImageBitamp should not return any error');
promise_test(function() {
var canvas = document.createElement('canvas');
canvas.width = canvas.height = 100;
var ctx = canvas.getContext('2d');
ctx.fillStyle = '#0f0';
ctx.fillRect(0, 0, 100, 100);
return createImageBitmap(canvas).then(testException);
}, 'transferFromImageBitmap(image) with a neutered image should throw InvalidStateError');
</script>