| Index: third_party/WebKit/LayoutTests/storage/indexeddb/empty-transaction-order.html
|
| diff --git a/third_party/WebKit/LayoutTests/storage/indexeddb/empty-transaction-order.html b/third_party/WebKit/LayoutTests/storage/indexeddb/empty-transaction-order.html
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..d6f5f71821ba5320ab5004516fca35469d5918b4
|
| --- /dev/null
|
| +++ b/third_party/WebKit/LayoutTests/storage/indexeddb/empty-transaction-order.html
|
| @@ -0,0 +1,85 @@
|
| +<!DOCTYPE html>
|
| +<title>IndexedDB: Commit ordering of empty transactions</title>
|
| +<script src='../../resources/testharness.js'></script>
|
| +<script src='../../resources/testharnessreport.js'></script>
|
| +<script src='resources/testharness-helpers.js'></script>
|
| +<script>
|
| +
|
| +function expect(t, expected) {
|
| + var results = [];
|
| + return result => {
|
| + results.push(result);
|
| + if (results.length === expected.length) {
|
| + assert_array_equals(results, expected);
|
| + t.done();
|
| + }
|
| + };
|
| +}
|
| +
|
| +indexeddb_test(
|
| + (t, db) => {
|
| + db.createObjectStore('store');
|
| + },
|
| + (t, db) => {
|
| + var saw = expect(t, ['rq1.onsuccess',
|
| + 'rq2.onsuccess',
|
| + 'tx1.oncomplete',
|
| + 'tx2.oncomplete']);
|
| +
|
| + var tx1 = db.transaction('store', 'readwrite');
|
| + tx1.onabort = t.unreached_func('transaction should commit');
|
| + tx1.oncomplete = t.step_func(() => saw('tx1.oncomplete'));
|
| +
|
| + var store = tx1.objectStore('store');
|
| + var rq1 = store.put('a', 1);
|
| + rq1.onerror = t.unreached_func('put should succeed');
|
| + rq1.onsuccess = t.step_func(() => {
|
| + saw('rq1.onsuccess');
|
| +
|
| + var tx2 = db.transaction('store', 'readonly');
|
| + tx2.onabort = t.unreached_func('transaction should commit');
|
| + tx2.oncomplete = t.step_func(() => saw('tx2.oncomplete'));
|
| +
|
| + var rq2 = store.put('b', 2);
|
| + rq2.onsuccess = t.step_func(() => saw('rq2.onsuccess'));
|
| + rq2.onerror = t.unreached_func('request should succeed');
|
| + });
|
| +
|
| + },
|
| + 'Transactions without requests complete in the expected order');
|
| +
|
| +indexeddb_test(
|
| + (t, db) => {
|
| + db.createObjectStore('store');
|
| + },
|
| + (t, db) => {
|
| + var saw = expect(t, ['rq1.onsuccess',
|
| + 'rq2.onsuccess',
|
| + 'tx1.oncomplete',
|
| + 'tx2.oncomplete',
|
| + 'tx3.oncomplete']);
|
| + var tx1 = db.transaction('store', 'readwrite');
|
| + tx1.onabort = t.unreached_func('transaction should commit');
|
| + tx1.oncomplete = t.step_func(() => saw('tx1.oncomplete'));
|
| +
|
| + var store = tx1.objectStore('store');
|
| + var rq1 = store.put('a', 1);
|
| + rq1.onerror = t.unreached_func('put should succeed');
|
| + rq1.onsuccess = t.step_func(() => {
|
| + saw('rq1.onsuccess');
|
| +
|
| + var tx2 = db.transaction('store', 'readonly');
|
| + tx2.onabort = t.unreached_func('transaction should commit');
|
| + tx2.oncomplete = t.step_func(() => saw('tx2.oncomplete'));
|
| +
|
| + var tx3 = db.transaction('store', 'readonly');
|
| + tx3.onabort = t.unreached_func('transaction should commit');
|
| + tx3.oncomplete = t.step_func(() => saw('tx3.oncomplete'));
|
| +
|
| + var rq2 = store.put('b', 2);
|
| + rq2.onsuccess = t.step_func(() => saw('rq2.onsuccess'));
|
| + rq2.onerror = t.unreached_func('request should succeed');
|
| + });
|
| + },
|
| + 'Multiple transactions without requests complete in the expected order');
|
| +</script>
|
|
|