<!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.onblocked = (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>
