idbfactory_deleteDatabase.any.js (3827B)
1 // META: title=IDBFactory.deleteDatabase() 2 // META: global=window,worker 3 // META: script=resources/support.js 4 5 'use strict'; 6 7 async_test(t => { 8 const delete_rq = indexedDB.deleteDatabase('db-that-doesnt-exist'); 9 delete_rq.onerror = fail(t, 'delete_rq.error'); 10 delete_rq.onsuccess = t.step_func(e => { 11 assert_equals(e.oldVersion, 0, 'event.oldVersion'); 12 assert_equals(e.target.source, null, 'event.target.source'); 13 }); 14 15 const open_rq = createdb(t, undefined, 9); 16 open_rq.onupgradeneeded = t.step_func(e => {}); 17 open_rq.onsuccess = t.step_func(e => { 18 const db = e.target.result; 19 db.close(); 20 21 const delete_rq1 = indexedDB.deleteDatabase(db.name); 22 delete_rq1.onerror = fail(t, 'delete_rq1.error'); 23 delete_rq1.onsuccess = t.step_func(e => { 24 assert_equals(e.oldVersion, 9, 'event.oldVersion'); 25 assert_equals(e.target.source, null, 'event.target.source'); 26 }); 27 28 const delete_rq2 = indexedDB.deleteDatabase(db.name); 29 delete_rq2.onerror = fail(t, 'delete_rq2.error'); 30 31 delete_rq2.onsuccess = t.step_func_done(e => { 32 assert_equals(e.oldVersion, 0, 'event.oldVersion'); 33 assert_equals(e.target.source, null, 'event.target.source'); 34 }); 35 }); 36 }, 'deleteDatabase() request should have no source, and deleting a non-existent\ 37 database should succeed with oldVersion of 0.'); 38 39 async_test(t => { 40 const open_rq = createdb(t, undefined, 9); 41 42 open_rq.onupgradeneeded = t.step_func(e => {}); 43 44 open_rq.onsuccess = t.step_func(e => { 45 const db = e.target.result; 46 db.close(); 47 48 const delete_rq = indexedDB.deleteDatabase(db.name); 49 delete_rq.onerror = t.step_func(e => { 50 assert_unreached('Unexpected delete_rq.error event'); 51 }); 52 53 delete_rq.onsuccess = t.step_func(e => { 54 assert_equals(e.target.result, undefined, 'result'); 55 t.done(); 56 }); 57 }); 58 }, 'Result of the deleteDatabase() request is set to undefined.'); 59 60 async_test(t => { 61 let db; 62 const open_rq = createdb(t, undefined, 9); 63 64 open_rq.onupgradeneeded = t.step_func(e => { 65 db = e.target.result; 66 db.createObjectStore('os'); 67 }); 68 69 open_rq.onsuccess = t.step_func(e => { 70 db.close(); 71 72 const delete_rq = indexedDB.deleteDatabase(db.name); 73 delete_rq.onerror = t.step_func(e => { 74 assert_unreached('Unexpected delete_rq.error event'); 75 }); 76 77 delete_rq.onsuccess = t.step_func(e => { 78 assert_equals(e.oldVersion, 9, 'oldVersion'); 79 assert_equals(e.newVersion, null, 'newVersion'); 80 assert_equals(e.target.result, undefined, 'result'); 81 assert_true( 82 e instanceof IDBVersionChangeEvent, 83 'e instanceof IDBVersionChangeEvent'); 84 t.done(); 85 }); 86 }); 87 }, 'The deleteDatabase() request\'s success event is an IDBVersionChangeEvent.'); 88 89 async_test(t => { 90 const dbname = location + '-' + t.name; 91 92 indexedDB.deleteDatabase(dbname); 93 94 let db; 95 const openrq = indexedDB.open(dbname, 3); 96 97 openrq.onupgradeneeded = t.step_func(e => { 98 e.target.result.createObjectStore('store'); 99 }); 100 101 openrq.onsuccess = t.step_func(e => { 102 db = e.target.result; 103 104 // Errors 105 db.onversionchange = fail(t, 'db.versionchange'); 106 db.onerror = fail(t, 'db.error'); 107 db.abort = fail(t, 'db.abort'); 108 109 step_timeout(t.step_func(() => Second(t, dbname)), 4); 110 db.close(); 111 }); 112 113 // Errors 114 openrq.onerror = fail(t, 'open.error'); 115 openrq.onblocked = fail(t, 'open.blocked'); 116 }, 'Delete an existing database - Test events opening a second \ 117 database when one connection is open already'); 118 119 function Second(t, dbname) { 120 const deleterq = indexedDB.deleteDatabase(dbname); 121 122 deleterq.onsuccess = e => { 123 t.done(); 124 }; 125 126 deleterq.onerror = fail(t, 'delete.error'); 127 deleterq.onblocked = fail(t, 'delete.blocked'); 128 deleterq.onupgradeneeded = fail(t, 'delete.upgradeneeded'); 129 }