From 26a029d407be480d791972afb5975cf62c9360a6 Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Fri, 19 Apr 2024 02:47:55 +0200 Subject: Adding upstream version 124.0.1. Signed-off-by: Daniel Baumann --- .../tests/web-locks/mode-shared.https.any.js | 38 ++++++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 testing/web-platform/tests/web-locks/mode-shared.https.any.js (limited to 'testing/web-platform/tests/web-locks/mode-shared.https.any.js') diff --git a/testing/web-platform/tests/web-locks/mode-shared.https.any.js b/testing/web-platform/tests/web-locks/mode-shared.https.any.js new file mode 100644 index 0000000000..fc4a6012fa --- /dev/null +++ b/testing/web-platform/tests/web-locks/mode-shared.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'); -- cgit v1.2.3