diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-07 09:22:09 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-07 09:22:09 +0000 |
commit | 43a97878ce14b72f0981164f87f2e35e14151312 (patch) | |
tree | 620249daf56c0258faa40cbdcf9cfba06de2a846 /testing/web-platform/tests/web-locks/mode-shared.tentative.https.any.js | |
parent | Initial commit. (diff) | |
download | firefox-upstream.tar.xz firefox-upstream.zip |
Adding upstream version 110.0.1.upstream/110.0.1upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to '')
-rw-r--r-- | testing/web-platform/tests/web-locks/mode-shared.tentative.https.any.js | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/testing/web-platform/tests/web-locks/mode-shared.tentative.https.any.js b/testing/web-platform/tests/web-locks/mode-shared.tentative.https.any.js new file mode 100644 index 0000000000..fc4a6012fa --- /dev/null +++ b/testing/web-platform/tests/web-locks/mode-shared.tentative.https.any.js @@ -0,0 +1,38 @@ +// META: title=Web Locks API: Shared Mode +// META: global=window,dedicatedworker,sharedworker,serviceworker + +'use strict'; + +promise_test(async t => { + const granted = []; + function log_grant(n) { return () => { granted.push(n); }; } + + await Promise.all([ + navigator.locks.request('a', {mode: 'shared'}, log_grant(1)), + navigator.locks.request('b', {mode: 'shared'}, log_grant(2)), + navigator.locks.request('c', {mode: 'shared'}, log_grant(3)), + navigator.locks.request('a', {mode: 'shared'}, log_grant(4)), + navigator.locks.request('b', {mode: 'shared'}, log_grant(5)), + navigator.locks.request('c', {mode: 'shared'}, log_grant(6)), + ]); + + assert_array_equals(granted, [1, 2, 3, 4, 5, 6]); +}, 'Lock requests are granted in order'); + +promise_test(async t => { + let a_acquired = false, a_acquired_again = false; + + await navigator.locks.request('a', {mode: 'shared'}, async lock => { + a_acquired = true; + + // Since lock is held, this request would be blocked if the + // lock was not 'shared', causing this test to time out. + + await navigator.locks.request('a', {mode: 'shared'}, lock => { + a_acquired_again = true; + }); + }); + + assert_true(a_acquired, 'first lock acquired'); + assert_true(a_acquired_again, 'second lock acquired'); +}, 'Shared locks are not exclusive'); |