<html>
<script>
    if (window.testRunner) {
        testRunner.dumpResourceLoadCallbacks();
        testRunner.dumpAsText();
        testRunner.waitUntilDone();
    }
    if (window.internals)
        internals.setAlwaysAllowLocalWebarchive(true);
    function frameLoaded() {
        if (window.testRunner)
            testRunner.notifyDone();
    }
</script>
<body>
    <iframe onload="frameLoaded();" src="resources/helloworld.webarchive"></iframe>
    This tests that doing a "normal load" of a webarchive (not using loadArchive) does not cause a cancelled error to be called.
</body>
</html>
