Index: third_party/WebKit/LayoutTests/storage/indexeddb/getdatabasenames-failed-open.html |
diff --git a/third_party/WebKit/LayoutTests/storage/indexeddb/getdatabasenames-failed-open.html b/third_party/WebKit/LayoutTests/storage/indexeddb/getdatabasenames-failed-open.html |
new file mode 100644 |
index 0000000000000000000000000000000000000000..3b436f5bf4a8d45080141dd5e2fdf6f9e3ac00ba |
--- /dev/null |
+++ b/third_party/WebKit/LayoutTests/storage/indexeddb/getdatabasenames-failed-open.html |
@@ -0,0 +1,72 @@ |
+<!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> |