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