<!DOCTYPE html>
<html>
<head>
    <script src="../../resources/js-test-pre.js"></script>
</head>
<body>
    <script>
        if (window.testRunner) {
            testRunner.dumpAsText();
            testRunner.waitUntilDone();
        }

        var svg = new Image();
        svg.src = "resources/svg-with-feimage-with-link.svg";

        svg.onload = function() {
            var canvas = document.createElement("canvas");
            window.ctx = canvas.getContext("2d");

            ctx.getImageData(0, 0, 1, 1);

            // Wait for the data uri in the image to load.
            setTimeout(function() {
                ctx.fillStyle = ctx.createPattern(svg, 'repeat');
                ctx.fillRect(0, 0, 200, 200);

                shouldThrow("window.ctx.getImageData(0, 0, 1, 1)");

                if (window.testRunner)
                    testRunner.notifyDone();
            }, 50);
        };
    </script>
</body>
</html>
