Files
tubestation/testing/web-platform/tests/IndexedDB/transaction-scheduling-mixed-scopes.any.js
Ari Chivukula c720f1bfda Bug 1770831 [wpt PR 34171] - [IndexedDB] Cleanup WPT directory, a=testonly
Automatic update from web-platform-tests
[IndexedDB] Cleanup WPT directory

Some common/resource files were in the root directory. This moves them
to the /resources/ directory and fixes up include paths.

Bug: 1218100
Change-Id: If84f7d1670e9416c95eb0fd96de63add4dcacedf
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/3661378
Auto-Submit: Ari Chivukula <arichiv@chromium.org>
Reviewed-by: Ayu Ishii <ayui@chromium.org>
Commit-Queue: Ayu Ishii <ayui@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1006619}

--

wpt-commits: 96ea2c2b7bf09644db195f0d878074615faef9e4
wpt-pr: 34171
2022-05-25 08:46:09 +00:00

64 lines
2.3 KiB
JavaScript

// META: script=resources/support.js
indexeddb_test(
(t, db) => {
const store = db.createObjectStore('store');
db.createObjectStore('a');
db.createObjectStore('b');
db.createObjectStore('c');
},
(t, db) => {
let transaction1Started = false;
let transaction1Complete = false;
let transaction2Started = false;
let transaction2Complete = false;
let transaction3Started = false;
let transaction3Complete = false;
const transaction1 = db.transaction(['a'], 'readonly');
let request = transaction1.objectStore('a').get(0);
request.onerror = t.unreached_func('request should succeed');
request.onsuccess = t.step_func(() => {
transaction1Started = true;
});
transaction1.onabort = t.unreached_func('transaction1 should complete');
transaction1.oncomplete = t.step_func(() => {
transaction1Complete = true;
assert_false(transaction2Started);
assert_false(transaction3Started);
});
// transaction2 overlaps with transaction1, so must wait until transaction1
// completes.
const transaction2 = db.transaction(['a', 'b'], 'readwrite');
request = transaction2.objectStore('a').get(0);
request.onerror = t.unreached_func('request should succeed');
request.onsuccess = t.step_func(() => {
assert_true(transaction1Complete);
transaction2Started = true;
});
transaction2.onabort = t.unreached_func('transaction2 should complete');
transaction2.oncomplete = t.step_func(() => {
transaction2Complete = true;
assert_false(transaction3Started);
});
// transaction3 overlaps with transaction2, so must wait until transaction2
// completes even though it does not overlap with transaction1.
const transaction3 = db.transaction(['b', 'c'], 'readonly');
request = transaction3.objectStore('b').get(0);
request.onerror = t.unreached_func('request should succeed');
request.onsuccess = t.step_func(() => {
assert_true(transaction1Complete);
assert_true(transaction2Complete);
transaction3Started = true;
});
transaction3.onabort = t.unreached_func('transaction3 should complete');
transaction3.oncomplete = t.step_func_done(() => {
transaction3Complete = true;
});
},
"Check that scope restrictions on mixed transactions are enforced.");