<!DOCTYPE html>
<html>
<head>
    <script>
    function debug(str) {
        var c = document.getElementById("console")
        c.innerHTML += (str + "<br>")
    }

    if (window.testRunner) {
        testRunner.dumpAsText();
        testRunner.waitUntilDone();
    }

    function runTest() {
        testRunner.setUseITPDatabase(true);
        var testDiv = document.getElementById("test");
        var testFrame = document.createElement("iframe");
        testDiv.appendChild(testFrame);
        var testFrameDocument = testFrame.contentDocument;
        testFrame.outerHTML = testFrameDocument;

        testFrameDocument.hasStorageAccess();

        debug("SUCCESS: Did not crash.")
        if (window.testRunner)
            testRunner.notifyDone();
    }
    </script>
</head>
<body onload="runTest()">
    <div id="test">
        <p>Test that querying storage access API on a detached frame doesn't crash.</p>
    </div>
    <pre id="console"></pre>
</body>
</html>
