<!DOCTYPE html>
<script src="../../resources/gc.js"></script>
<script src="../../resources/js-test.js"></script>
<script src="resources/shared.js"></script>
<script>

description("Regression test to ensure that IndexedDB connections don't leak");

setDBNameFromPath();
waitForRequests([
    indexedDB.deleteDatabase(dbname)
], doFirstOpen);

function doFirstOpen()
{
    preamble();

    evalAndLog("request = indexedDB.open(dbname, 1)");
    evalAndLog("sawUpgradeNeeded1 = false");
    request.onerror = unexpectedErrorCallback;
    request.onblocked = unexpectedBlockedCallback;
    request.onupgradeneeded = function onUpgradeNeeded1() {
        preamble();
        evalAndLog("sawUpgradeNeeded1 = true");
    };
    request.onsuccess = function onOpenSuccess1() {
        preamble();
        shouldBeTrue("sawUpgradeNeeded1");
        evalAndLog("db = request.result");
        evalAndLog("db.close()");

        doSecondOpen();
    };
}

function doSecondOpen()
{
    preamble();

    evalAndLog("request = indexedDB.open(dbname, 1)");
    request.onerror = unexpectedErrorCallback;
    request.onblocked = unexpectedBlockedCallback;
    request.onupgradeneeded = unexpectedUpgradeNeededCallback;
    request.onsuccess = function onOpenSuccess2() {
        preamble();
        evalAndLog("db = request.result");

        evalAndLog("db = null");
        evalAndLog("request = null");

        debug("Run GC outside of request's callback via setTimeout()");
        asyncGC(function () {
            doThirdOpen();
        });
    };
}

function doThirdOpen()
{
    preamble();

    evalAndLog("request = indexedDB.open(dbname, 2)");
    evalAndLog("sawUpgradeNeeded3 = false");
    request.onerror = unexpectedErrorCallback;
    request.onblocked = unexpectedBlockedCallback;
    request.onupgradeneeded = function onUpgradeNeeded2() {
        preamble();
        evalAndLog("sawUpgradeNeeded3 = true");
    };
    request.onsuccess = function onOpenSuccess3() {
        preamble();
        shouldBeTrue("sawUpgradeNeeded3");
        evalAndLog("db = request.result");
        evalAndLog("db.close()");

        finishJSTest();
    };
}

</script>
