blob: 3b436f5bf4a8d45080141dd5e2fdf6f9e3ac00ba [file] [log] [blame]
<!DOCTYPE html>
<script src="../../resources/js-test.js"></script>
<script src="resources/shared.js"></script>
<script>
description('webkitGetDatabaseNames should only return successfully created databases');
function deleteDatabase(dbname)
{
return new Promise(function(resolve, reject) {
var request = indexedDB.deleteDatabase(dbname);
request.onsuccess = function() {
resolve(request.result);
};
request.onerror = function() {
reject(request.error);
};
});
}
function getDatabaseNames()
{
return new Promise(function(resolve, reject) {
var request = indexedDB.webkitGetDatabaseNames();
request.onsuccess = function() {
resolve(request.result);
};
request.onerror = function() {
reject(request.error);
};
});
}
function openDatabaseAndAbortUpgrade(dbname)
{
return new Promise(function(resolve, reject) {
var request = indexedDB.open(dbname, 1);
request.onupgradeneeded = function() {
request.transaction.abort();
};
request.onsuccess = function() {
reject(new Error('Open should not succeed'));
};
request.onerror = function() {
resolve();
};
});
}
setDBNameFromPath();
deleteDatabase(dbname)
.then(getDatabaseNames)
.then(function(names) {
if (names.contains(dbname))
throw Error('Database should have been deleted if present');
return openDatabaseAndAbortUpgrade(dbname);
})
.then(getDatabaseNames)
.then(function(names) {
if (names.contains(dbname))
throw Error('Database name should not be present');
testPassed('Database name was not present');
finishJSTest();
})
.catch(function(reason) {
testFailed(reason.name + ': ' + reason.message);
finishJSTest();
});
</script>