<!DOCTYPE html>
<title>IDBFactory.open() - no version opens current database</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);
        open_rq2.onsuccess = this.step_func(function(e) {
            assert_equals(e.target.result.version, 13, "db.version")
            this.done();
        });
        open_rq2.onupgradeneeded = fail(this, 'Unexpected upgradeneeded')
        open_rq2.onerror = fail(this, 'Unexpected error')
    }
</script>

<div id=log></div>
