if (this.importScripts) { importScripts('../../../resources/js-test.js'); importScripts('shared.js'); } description("Ensure that IDBDatabase objects are deleted when there are no retaining paths left"); indexedDBTest(prepareDatabase, openSuccess); function prepareDatabase() { } function openSuccess() { db = event.target.result; evalAndLog("db.close()"); var openRequest = evalAndLog("indexedDB.open(dbname)"); openRequest.onblocked = unexpectedBlockedCallback; openRequest.onupgradeneeded = unexpectedUpgradeNeededCallback; openRequest.onerror = unexpectedErrorCallback; openRequest.onsuccess = function() { debug("Dropping references to new connection."); // After leaving this function, there are no remaining references to the // db, so it should get deleted. setTimeout(setVersion, 2); }; } function setVersion() { evalAndLog("gc()"); debug("Open request should not receive a blocked event:"); var request = evalAndLog("indexedDB.open(dbname, 2)"); request.onerror = unexpectedErrorCallback; request.onblocked = unexpectedBlockedCallback; request.onsuccess = finishJSTest; }