Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(62)

Side by Side Diff: LayoutTests/storage/indexeddb/getdatabasenames-failed-open.html

Issue 243523003: Fire window.onerror for uncaught IndexedDB errors (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Rebased and linkage fix Created 5 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 <!DOCTYPE html> 1 <!DOCTYPE html>
2 <script src="../../resources/js-test.js"></script> 2 <script src="../../resources/js-test.js"></script>
3 <script src="resources/shared.js"></script> 3 <script src="resources/shared.js"></script>
4 <script> 4 <script>
5 5
6 description('webkitGetDatabaseNames should only return successfully created data bases'); 6 description('webkitGetDatabaseNames should only return successfully created data bases');
7 7
8 function deleteDatabase(dbname) 8 function deleteDatabase(dbname)
9 { 9 {
10 return new Promise(function(resolve, reject) { 10 return new Promise(function(resolve, reject) {
11 var request = indexedDB.deleteDatabase(dbname); 11 var request = indexedDB.deleteDatabase(dbname);
12 request.onsuccess = function() { 12 request.onsuccess = function() {
13 resolve(request.result); 13 resolve(request.result);
14 }; 14 };
15 request.onerror = function() { 15 request.onerror = function(e) {
16 e.preventDefault();
16 reject(request.error); 17 reject(request.error);
17 }; 18 };
18 }); 19 });
19 } 20 }
20 21
21 function getDatabaseNames() 22 function getDatabaseNames()
22 { 23 {
23 return new Promise(function(resolve, reject) { 24 return new Promise(function(resolve, reject) {
24 var request = indexedDB.webkitGetDatabaseNames(); 25 var request = indexedDB.webkitGetDatabaseNames();
25 request.onsuccess = function() { 26 request.onsuccess = function() {
26 resolve(request.result); 27 resolve(request.result);
27 }; 28 };
28 request.onerror = function() { 29 request.onerror = function(e) {
30 e.preventDefault();
29 reject(request.error); 31 reject(request.error);
30 }; 32 };
31 }); 33 });
32 } 34 }
33 35
34 function openDatabaseAndAbortUpgrade(dbname) 36 function openDatabaseAndAbortUpgrade(dbname)
35 { 37 {
36 return new Promise(function(resolve, reject) { 38 return new Promise(function(resolve, reject) {
37 var request = indexedDB.open(dbname, 1); 39 var request = indexedDB.open(dbname, 1);
38 request.onupgradeneeded = function() { 40 request.onupgradeneeded = function() {
39 request.transaction.abort(); 41 request.transaction.abort();
40 }; 42 };
41 request.onsuccess = function() { 43 request.onsuccess = function() {
42 reject(new Error('Open should not succeed')); 44 reject(new Error('Open should not succeed'));
43 }; 45 };
44 request.onerror = function() { 46 request.onerror = function(e) {
47 e.preventDefault();
45 resolve(); 48 resolve();
46 }; 49 };
47 }); 50 });
48 } 51 }
49 52
50 setDBNameFromPath(); 53 setDBNameFromPath();
51 deleteDatabase(dbname) 54 deleteDatabase(dbname)
52 .then(getDatabaseNames) 55 .then(getDatabaseNames)
53 .then(function(names) { 56 .then(function(names) {
54 if (names.contains(dbname)) 57 if (names.contains(dbname))
55 throw Error('Database should have been deleted if present'); 58 throw Error('Database should have been deleted if present');
56 59
57 return openDatabaseAndAbortUpgrade(dbname); 60 return openDatabaseAndAbortUpgrade(dbname);
58 }) 61 })
59 .then(getDatabaseNames) 62 .then(getDatabaseNames)
60 .then(function(names) { 63 .then(function(names) {
61 if (names.contains(dbname)) 64 if (names.contains(dbname))
62 throw Error('Database name should not be present'); 65 throw Error('Database name should not be present');
63 66
64 testPassed('Database name was not present'); 67 testPassed('Database name was not present');
65 finishJSTest(); 68 finishJSTest();
66 }) 69 })
67 .catch(function(reason) { 70 .catch(function(reason) {
68 testFailed(reason.name + ': ' + reason.message); 71 testFailed(reason.name + ': ' + reason.message);
69 finishJSTest(); 72 finishJSTest();
70 }); 73 });
71 74
72 </script> 75 </script>
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698