<!DOCTYPE html>
<meta charset="utf-8">
<title>Canvas's ImageBitmapRenderingContext test</title>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<link rel="help" href="https://html.spec.whatwg.org/multipage/scripting.html#the-imagebitmap-rendering-context">
<script>
var width = 10;
var height = 10;

promise_test(function() {
    function testException(image) {
        var dstCanvas = document.createElement('canvas');
        dstCanvas.width = width;
        dstCanvas.height = height;
        var dstCtx = dstCanvas.getContext('bitmaprenderer');
        dstCtx.transferFromImageBitmap(image);

        // The image should be detached after transferFromImageBitmap.
        assert_equals(image.width, 0);
        assert_equals(image.height, 0);
        assert_throws("InvalidStateError", function() { dstCtx.transferFromImageBitmap(image); });
    }

    var srcCanvas = document.createElement('canvas');
    srcCanvas.width = width;
    srcCanvas.height = height;
    var ctx = srcCanvas.getContext('2d');
    ctx.fillStyle = 'rgba(0, 255, 0, 0.5)';
    ctx.fillRect(0, 0, width, height);
    return createImageBitmap(srcCanvas).then(testException);
}, "Test transferFromImageBitmap(image) with a detached image should throw InvalidStateError");

</script>
