mirror of
https://github.com/servo/servo.git
synced 2025-09-07 13:38:20 +01:00
Update web-platform-tests to revision 58eb04cecbbec2e18531ab440225e38944a9c444
This commit is contained in:
parent
25e8bf69e6
commit
665817d2a6
35333 changed files with 1818077 additions and 16036 deletions
|
@ -0,0 +1,154 @@
|
|||
<!DOCTYPE html>
|
||||
<meta charset=utf-8>
|
||||
<title>Transaction active flag is set during event dispatch</title>
|
||||
<link rel="help" href="https://w3c.github.io/IndexedDB/#fire-success-event">
|
||||
<link rel="help" href="https://w3c.github.io/IndexedDB/#fire-error-event">
|
||||
<script src=/resources/testharness.js></script>
|
||||
<script src=/resources/testharnessreport.js></script>
|
||||
<script src=support.js></script>
|
||||
<script>
|
||||
|
||||
indexeddb_test(
|
||||
(t, db, tx) => {
|
||||
db.createObjectStore('store');
|
||||
},
|
||||
(t, db) => {
|
||||
const tx = db.transaction('store');
|
||||
const release_tx = keep_alive(tx, 'store');
|
||||
|
||||
assert_true(is_transaction_active(tx, 'store'),
|
||||
'Transaction should be active after creation');
|
||||
|
||||
const request = tx.objectStore('store').get(0);
|
||||
request.onerror = t.unreached_func('request should succeed');
|
||||
request.onsuccess = () => {
|
||||
assert_true(is_transaction_active(tx, 'store'),
|
||||
'Transaction should be active during success handler');
|
||||
|
||||
let saw_handler_promise = false;
|
||||
Promise.resolve().then(t.step_func(() => {
|
||||
saw_handler_promise = true;
|
||||
assert_true(is_transaction_active(tx, 'store'),
|
||||
'Transaction should be active in handler\'s microtasks');
|
||||
}));
|
||||
|
||||
setTimeout(t.step_func(() => {
|
||||
assert_true(saw_handler_promise);
|
||||
assert_false(is_transaction_active(tx, 'store'),
|
||||
'Transaction should be inactive in next task');
|
||||
release_tx();
|
||||
t.done();
|
||||
}), 0);
|
||||
};
|
||||
},
|
||||
'Transactions are active during success handlers');
|
||||
|
||||
indexeddb_test(
|
||||
(t, db, tx) => {
|
||||
db.createObjectStore('store');
|
||||
},
|
||||
(t, db) => {
|
||||
const tx = db.transaction('store');
|
||||
const release_tx = keep_alive(tx, 'store');
|
||||
assert_true(is_transaction_active(tx, 'store'),
|
||||
'Transaction should be active after creation');
|
||||
|
||||
const request = tx.objectStore('store').get(0);
|
||||
request.onerror = t.unreached_func('request should succeed');
|
||||
request.addEventListener('success', () => {
|
||||
assert_true(is_transaction_active(tx, 'store'),
|
||||
'Transaction should be active during success listener');
|
||||
|
||||
let saw_listener_promise = false;
|
||||
Promise.resolve().then(t.step_func(() => {
|
||||
saw_listener_promise = true;
|
||||
assert_true(is_transaction_active(tx, 'store'),
|
||||
'Transaction should be active in listener\'s microtasks');
|
||||
}));
|
||||
|
||||
setTimeout(t.step_func(() => {
|
||||
assert_true(saw_listener_promise);
|
||||
assert_false(is_transaction_active(tx, 'store'),
|
||||
'Transaction should be inactive in next task');
|
||||
release_tx();
|
||||
t.done();
|
||||
}), 0);
|
||||
});
|
||||
},
|
||||
'Transactions are active during success listeners');
|
||||
|
||||
indexeddb_test(
|
||||
(t, db, tx) => {
|
||||
db.createObjectStore('store');
|
||||
},
|
||||
(t, db) => {
|
||||
const tx = db.transaction('store', 'readwrite');
|
||||
const release_tx = keep_alive(tx, 'store');
|
||||
assert_true(is_transaction_active(tx, 'store'),
|
||||
'Transaction should be active after creation');
|
||||
|
||||
tx.objectStore('store').put(0, 0);
|
||||
const request = tx.objectStore('store').add(0, 0);
|
||||
request.onsuccess = t.unreached_func('request should fail');
|
||||
request.onerror = e => {
|
||||
e.preventDefault();
|
||||
|
||||
assert_true(is_transaction_active(tx, 'store'),
|
||||
'Transaction should be active during error handler');
|
||||
|
||||
let saw_handler_promise = false;
|
||||
Promise.resolve().then(t.step_func(() => {
|
||||
saw_handler_promise = true;
|
||||
assert_true(is_transaction_active(tx, 'store'),
|
||||
'Transaction should be active in handler\'s microtasks');
|
||||
}));
|
||||
|
||||
setTimeout(t.step_func(() => {
|
||||
assert_true(saw_handler_promise);
|
||||
assert_false(is_transaction_active(tx, 'store'),
|
||||
'Transaction should be inactive in next task');
|
||||
release_tx();
|
||||
t.done();
|
||||
}), 0);
|
||||
};
|
||||
},
|
||||
'Transactions are active during error handlers');
|
||||
|
||||
indexeddb_test(
|
||||
(t, db, tx) => {
|
||||
db.createObjectStore('store');
|
||||
},
|
||||
(t, db) => {
|
||||
const tx = db.transaction('store', 'readwrite');
|
||||
const release_tx = keep_alive(tx, 'store');
|
||||
assert_true(is_transaction_active(tx, 'store'),
|
||||
'Transaction should be active after creation');
|
||||
|
||||
tx.objectStore('store').put(0, 0);
|
||||
const request = tx.objectStore('store').add(0, 0);
|
||||
request.onsuccess = t.unreached_func('request should fail');
|
||||
request.addEventListener('error', e => {
|
||||
e.preventDefault();
|
||||
|
||||
assert_true(is_transaction_active(tx, 'store'),
|
||||
'Transaction should be active during error listener');
|
||||
|
||||
let saw_listener_promise = false;
|
||||
Promise.resolve().then(t.step_func(() => {
|
||||
saw_listener_promise = true;
|
||||
assert_true(is_transaction_active(tx, 'store'),
|
||||
'Transaction should be active in listener\'s microtasks');
|
||||
}));
|
||||
|
||||
setTimeout(t.step_func(() => {
|
||||
assert_true(saw_listener_promise);
|
||||
assert_false(is_transaction_active(tx, 'store'),
|
||||
'Transaction should be inactive in next task');
|
||||
release_tx();
|
||||
t.done();
|
||||
}), 0);
|
||||
});
|
||||
},
|
||||
'Transactions are active during error listeners');
|
||||
|
||||
</script>
|
Loading…
Add table
Add a link
Reference in a new issue