<!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.requestStorageAccess();

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