<!DOCTYPE html>
<html>
<body>
Test for crbug.com/224317: data:uri images should load asynchronously and reload synchronously.<br/>
<script>
    if (window.testRunner) {
        testRunner.waitUntilDone();
        testRunner.dumpAsText();
    }

    var image = new Image();
    image.src = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGQAAABkCAIAAAD/gAIDAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAnklEQVR42u3QMQEAAAgDoGlyo1vBzwciUJlw1ApkyZIlS5YsBbJkyZIlS5YCWbJkyZIlS4EsWbJkyZKlQJYsWbJkyVIgS5YsWbJkKZAlS5YsWbIUyJIlS5YsWQpkyZIlS5YsBbJkyZIlS5YCWbJkyZIlS4EsWbJkyZKlQJYsWbJkyVIgS5YsWbJkKZAlS5YsWbIUyJIlS5YsWQpkyfq2MosBSIeKONMAAAAASUVORK5CYII=";

    if (location.hash != "#reloaded") {
        if (image.width == 100 || image.height == 100) {
            document.write("FAIL");
            if (window.testRunner)
                testRunner.notifyDone();
        } else {
            location.hash = "#reloaded";
            location.reload();
        }
    } else {
        if (image.width == 100 || image.height == 100) {
            document.write("PASS");
        } else {
            document.write("FAIL");
        }
        if (window.testRunner)
            testRunner.notifyDone();
    }
</script>
</body>
</html>
