transaction-abort-request-error.any.js (2614B)
1 // META: title=IndexedDB: Test error events fired at requests from aborted transaction 2 // META: global=window,worker 3 // META: script=resources/support-promises.js 4 // META: script=resources/support.js 5 6 // Spec: https://w3c.github.io/IndexedDB/#abort-transaction 7 8 'use strict'; 9 10 indexeddb_test( 11 (t, db) => { 12 db.createObjectStore('store'); 13 }, 14 (t, db) => { 15 const tx = db.transaction('store', 'readonly'); 16 const request = tx.objectStore('store').get(0); 17 tx.abort(); 18 request.onsuccess = t.unreached_func('request should not succeed'); 19 20 let connection_saw_error = false; 21 let transaction_saw_error = false; 22 23 request.onerror = t.step_func(e => { 24 assert_equals( 25 request.readyState, 'done', 'Request\'s done flag should be set'); 26 assert_equals( 27 request.result, undefined, 'Request\'s result should be undefined'); 28 assert_equals( 29 request.error.name, 'AbortError', 30 'Request\'s error should be AbortError'); 31 32 assert_equals(e.target, request, 'event target should be request'); 33 assert_equals(e.type, 'error', 'Event type should be error'); 34 assert_true(e.bubbles, 'Event should bubble'); 35 assert_true(e.cancelable, 'Event should cancelable'); 36 37 assert_true( 38 connection_saw_error, 'Event propagated through connection'); 39 assert_true( 40 transaction_saw_error, 'Event propagated through transaction'); 41 t.done(); 42 }); 43 44 // Event propagates via "get the parent" on request and transaction. 45 46 db.addEventListener( 47 'error', t.step_func(e => { 48 connection_saw_error = true; 49 assert_equals(e.target, request, 'event target should be request'); 50 assert_equals(e.type, 'error', 'Event type should be error'); 51 assert_true(e.bubbles, 'Event should bubble'); 52 assert_true(e.cancelable, 'Event should cancelable'); 53 }), 54 true); 55 56 tx.addEventListener( 57 'error', t.step_func(e => { 58 transaction_saw_error = true; 59 assert_equals(e.target, request, 'event target should be request'); 60 assert_equals(e.type, 'error', 'Event type should be error'); 61 assert_true(e.bubbles, 'Event should bubble'); 62 assert_true(e.cancelable, 'Event should cancelable'); 63 64 assert_true( 65 connection_saw_error, 'Event propagated through connection'); 66 }), 67 true); 68 }, 69 'Properties of error events fired at requests when aborting a transaction');