// META: title=IndexedDB: Test error events fired at requests from aborted transaction // META: global=window,worker // META: script=resources/support-promises.js // META: script=resources/support.js // Spec: https://w3c.github.io/IndexedDB/#abort-transaction 'use strict'; indexeddb_test( (t, db) => { db.createObjectStore('store'); }, (t, db) => { const tx = db.transaction('store', 'readonly'); const request = tx.objectStore('store').get(0); tx.abort(); request.onsuccess = t.unreached_func('request should not succeed'); let connection_saw_error = false; let transaction_saw_error = false; request.onerror = t.step_func(e => { assert_equals( request.readyState, 'done', 'Request\'s done flag should be set'); assert_equals( request.result, undefined, 'Request\'s result should be undefined'); assert_equals( request.error.name, 'AbortError', 'Request\'s error should be AbortError'); assert_equals(e.target, request, 'event target should be request'); assert_equals(e.type, 'error', 'Event type should be error'); assert_true(e.bubbles, 'Event should bubble'); assert_true(e.cancelable, 'Event should cancelable'); assert_true( connection_saw_error, 'Event propagated through connection'); assert_true( transaction_saw_error, 'Event propagated through transaction'); t.done(); }); // Event propagates via "get the parent" on request and transaction. db.addEventListener( 'error', t.step_func(e => { connection_saw_error = true; assert_equals(e.target, request, 'event target should be request'); assert_equals(e.type, 'error', 'Event type should be error'); assert_true(e.bubbles, 'Event should bubble'); assert_true(e.cancelable, 'Event should cancelable'); }), true); tx.addEventListener( 'error', t.step_func(e => { transaction_saw_error = true; assert_equals(e.target, request, 'event target should be request'); assert_equals(e.type, 'error', 'Event type should be error'); assert_true(e.bubbles, 'Event should bubble'); assert_true(e.cancelable, 'Event should cancelable'); assert_true( connection_saw_error, 'Event propagated through connection'); }), true); }, 'Properties of error events fired at requests when aborting a transaction');