| <!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> |