<!DOCTYPE html>
<script>

var db;
var openErrorFired = false;
var request = window.indexedDB.open("TestIndexedDB");
request.onsuccess = (event) => {
    db = event.target.result;
    db.onclose = (event) => {
        if (openErrorFired) {
            var thirdOpenRequest = window.indexedDB.open("TestIndexedDB");
            thirdOpenRequest.onsuccess = (event) => {
                window.webkit.messageHandlers.testHandler.postMessage("First Database Connection Closed, Second Database Connection Not Failed, Third Database Connection Opened");
            }
            thirdOpenRequest.onblock = (event) => {
                window.webkit.messageHandlers.testHandler.postMessage("Third Database Connection Blocked");
            }
            thirdOpenRequest.onerror = (event) => {
                window.webkit.messageHandlers.testHandler.postMessage("Third Database Connection Failed");
            }
        } else {
            window.webkit.messageHandlers.testHandler.postMessage("Second Database Connection Not Failed");
        }
    }

    var secondOpenRequest = window.indexedDB.open("TestIndexedDB", db.version + 1);
    secondOpenRequest.onerror = (event) => {
        openErrorFired = true;
    }

    window.webkit.messageHandlers.testHandler.postMessage("First Database Connection Opened");
}
request.onerror = (event) => {
    window.webkit.messageHandlers.testHandler.postMessage("First Database Connection Failed");
}

</script>
