forked from mirrors/gecko-dev
		
	 d79e8ec3f8
			
		
	
	
		d79e8ec3f8
		
	
	
	
	
		
			
			This removes `tentative` from Web Locks tests which all three engines are passing. A couple of exceptions from https://wpt.fyi/results/web-locks?label=experimental&label=master&aligned * clientids: The test follows the spec, I think this is a Chrome bug. (https://w3c.github.io/web-locks/#dom-lockmanager-request, the use of environment's id) * signal: A couple of WebKit failures because of lack of AbortSignal custom reason support. Differential Revision: https://phabricator.services.mozilla.com/D200477
		
			
				
	
	
		
			34 lines
		
	
	
	
		
			1 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			34 lines
		
	
	
	
		
			1 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| // META: title=Web Locks API: Exclusive 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', log_grant(1)),
 | |
|     navigator.locks.request('a', log_grant(2)),
 | |
|     navigator.locks.request('a', log_grant(3))
 | |
|   ]);
 | |
|   assert_array_equals(granted, [1, 2, 3]);
 | |
| }, 'Lock requests are granted in order');
 | |
| 
 | |
| promise_test(async t => {
 | |
|   const granted = [];
 | |
|   function log_grant(n) { return () => { granted.push(n); }; }
 | |
| 
 | |
|   let inner_promise;
 | |
|   await navigator.locks.request('a', async lock => {
 | |
|     inner_promise = Promise.all([
 | |
|       // This will be blocked.
 | |
|       navigator.locks.request('a', log_grant(1)),
 | |
|       // But this should be grantable immediately.
 | |
|       navigator.locks.request('b', log_grant(2))
 | |
|     ]);
 | |
|   });
 | |
| 
 | |
|   await inner_promise;
 | |
|   assert_array_equals(granted, [2, 1]);
 | |
| }, 'Requests for distinct resources can be granted');
 |