Commit 365e0d3c authored by jsbell@chromium.org's avatar jsbell@chromium.org

IndexedDB: Regression test for db enumeration including failed opens

Bug fixed on the Chromium side, just adding a layout test as well
for full coverage.

BUG=395472
R=cmumford@chromium.org

Review URL: https://codereview.chromium.org/462153002

git-svn-id: svn://svn.chromium.org/blink/trunk@180103 bbb929c8-8fbe-4397-9dbb-9b2b20218538
parent 6ff64fe9
webkitGetDatabaseNames should only return successfully created databases
On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
dbname = "getdatabasenames-failed-open.html"
PASS Database name was not present
PASS successfullyParsed is true
TEST COMPLETE
<!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>
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment