<!DOCTYPE html>
<title>IDBFactory.open() - open database with a lower version than current</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 open_rq = createdb(async_test(), undefined, 13);
    var did_upgrade = false;

    open_rq.onupgradeneeded = function() {};
    open_rq.onsuccess = function(e) {
        var db = e.target.result;
        db.close();

        var open_rq2 = window.indexedDB.open(db.name, 14);
        open_rq2.onupgradeneeded = function() {};
        open_rq2.onsuccess = this.step_func(open_previous_db);
        open_rq2.onerror = fail(this, 'Unexpected error')
    }

    function open_previous_db(e) {
        var open_rq3 = window.indexedDB.open(e.target.result.name, 13);
        open_rq3.onerror = this.step_func(function(e) {
            assert_equals(e.target.error.name, 'VersionError', 'e.target.error.name')
            this.done();
        });
        open_rq3.onupgradeneeded = fail(this, 'Unexpected upgradeneeded')
        open_rq3.onsuccess = fail(this, 'Unexpected success')
    }
</script>

<div id=log></div>
