diff options
Diffstat (limited to 'testing/web-platform/tests/IndexedDB/idbfactory-open-request-error.html')
-rw-r--r-- | testing/web-platform/tests/IndexedDB/idbfactory-open-request-error.html | 66 |
1 files changed, 66 insertions, 0 deletions
diff --git a/testing/web-platform/tests/IndexedDB/idbfactory-open-request-error.html b/testing/web-platform/tests/IndexedDB/idbfactory-open-request-error.html new file mode 100644 index 0000000000..cfd6862afa --- /dev/null +++ b/testing/web-platform/tests/IndexedDB/idbfactory-open-request-error.html @@ -0,0 +1,66 @@ +<!DOCTYPE html> +<meta charset=utf-8> +<title>IDBFactory open(): request properties on error</title> +<link rel="help" href="https://w3c.github.io/IndexedDB/#dom-idbfactory-open"> +<script src=/resources/testharness.js></script> +<script src=/resources/testharnessreport.js></script> +<script src=resources/support.js></script> +<script> + +let saw_abort = false; + +indexeddb_test( + (t, db, tx, rq) => { + const store = db.createObjectStore('store'); + store.put({name: 'a'}, 1); + store.put({name: 'a'}, 2); + store.createIndex('index', 'name', {unique: true}); + + assert_equals( + rq.readyState, 'done', + 'request done flag should be set during upgradeneeded'); + assert_equals( + rq.result, db, + 'request result should be set (to connection) during upgradeneeded'); + assert_equals( + rq.error, null, + 'request result should be null during upgradeneeded'); + + tx.oncomplete = t.unreached_func('transaction should abort'); + tx.onabort = t.step_func(() => { + saw_abort = true; + + assert_equals( + rq.readyState, 'done', + 'request done flag should still be set during abort'); + + // Chrome is flaky here. See: https://crbug.com/723846 + /* + assert_equals( + rq.result, db, + 'request result should still be set (to connection) during abort'); + assert_equals( + rq.error, null, + 'request result should still be null during abort'); + */ + }); + + rq.onerror = t.step_func(() => { + assert_true(saw_abort, 'abort event should fire before error'); + assert_equals( + rq.readyState, 'done', + 'request done flag should be set on error'); + assert_equals( + rq.result, undefined, + 'request result should be undefined on error'); + assert_equals( + rq.error.name, 'AbortError', + 'request error should be AbortError on error'); + t.done(); + }); + }, + (t, db) => {}, + 'Properties of IDBOpenDBRequest during failed IDBFactory open()', + {upgrade_will_abort: true}); + +</script> |