<!DOCTYPE html>
<title>IDBDatabase.close() - unblock the version change transaction created by an open database request</title>
<link rel="author" title="Microsoft" href="http://www.microsoft.com">
<script src="../../../resources/testharness.js"></script>
<script src="../../../resources/testharnessreport.js"></script>
<script src="support.js"></script>

<script>
var db;
var versionchange_fired;
var blocked_fired;
var upgradeneeded_fired;
var t = async_test();
var open_rq = createdb(t);
var counter = 0;

open_rq.onupgradeneeded = function() {}
open_rq.onsuccess = function(e) {
    db = e.target.result;
    db.onversionchange = t.step_func(function(e) {
        versionchange_fired = counter++;
    });
    var rq = window.indexedDB.open(db.name, db.version + 1);
    rq.onblocked = t.step_func(function (e) {
        blocked_fired = counter++;
        db.close();
    });
    rq.onupgradeneeded = t.step_func(function (e) {
        upgradeneeded_fired = counter++;
    });
    rq.onsuccess = t.step_func(function (e) {
        assert_equals(versionchange_fired, 0, 'versionchange event fired #')
        assert_equals(blocked_fired, 1, 'block event fired #')
        assert_equals(upgradeneeded_fired, 2, 'second upgradeneeded event fired #')

        t.done();
    });
    rq.onerror = fail(t, 'Unexpected database deletion error');
};

</script>

<div id="log"></div>
