forked from mirrors/gecko-dev
		
	Automatic update from web-platform-testsWorker: Separate worker-from-blob-url.window.html to filter out failing tests in a more fine-grained way This test file should be separated into 2 files (one for dedicated workers and the other for shared workers). This is because Edge and Safari don't support shared workers, and Chrome has an issue on shared workers with Blob URL revocation, so some tests are expected to fail on them. By separating the file, browsers can filter out failing tests in a more fine grained way. Bug: 655458, 800898 Change-Id: I9ea6c76dc9b6841bf6aaa98251c81f292dd460cf Reviewed-on: https://chromium-review.googlesource.com/c/1337129 Commit-Queue: Hiroki Nakagawa <nhiroki@chromium.org> Reviewed-by: Hiroshige Hayashizaki <hiroshige@chromium.org> Reviewed-by: Matt Falkenhagen <falken@chromium.org> Cr-Commit-Position: refs/heads/master@{#609586} -- wpt-commits: d0a6ed2b3686ac287842e4b8e813b44ee14553ff wpt-pr: 14066
		
			
				
	
	
		
			53 lines
		
	
	
	
		
			1.9 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			53 lines
		
	
	
	
		
			1.9 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
function message_from_port(port) {
 | 
						|
  return new Promise(resolve => {
 | 
						|
    port.onmessage = e => resolve(e.data);
 | 
						|
  });
 | 
						|
}
 | 
						|
 | 
						|
promise_test(async t => {
 | 
						|
  const run_result = 'worker_OK_';
 | 
						|
  const blob_contents =
 | 
						|
    'self.counter = 0; self.onconnect = e => {++self.counter;' +
 | 
						|
    'e.source.postMessage("' + run_result + '" + self.counter); };';
 | 
						|
  const blob = new Blob([blob_contents]);
 | 
						|
  const url = URL.createObjectURL(blob);
 | 
						|
 | 
						|
  const worker1 = new SharedWorker(url);
 | 
						|
  const reply1 = await message_from_port(worker1.port);
 | 
						|
  assert_equals(reply1, run_result + '1');
 | 
						|
  const worker2 = new SharedWorker(url);
 | 
						|
  const reply2 = await message_from_port(worker2.port);
 | 
						|
  assert_equals(reply2, run_result + '2');
 | 
						|
}, 'Creating a shared worker from a blob URL works.');
 | 
						|
 | 
						|
promise_test(async t => {
 | 
						|
  const run_result = 'worker_OK';
 | 
						|
  const blob_contents =
 | 
						|
    'self.onconnect = e => { e.source.postMessage("' + run_result + '"); };';
 | 
						|
  const blob = new Blob([blob_contents]);
 | 
						|
  const url = URL.createObjectURL(blob);
 | 
						|
 | 
						|
  const worker = new SharedWorker(url);
 | 
						|
  URL.revokeObjectURL(url);
 | 
						|
 | 
						|
  const reply = await message_from_port(worker.port);
 | 
						|
  assert_equals(reply, run_result);
 | 
						|
}, 'Creating a shared worker from a blob URL works immediately before revoking.');
 | 
						|
 | 
						|
promise_test(async t => {
 | 
						|
  const run_result = 'worker_OK_';
 | 
						|
  const blob_contents =
 | 
						|
    'self.counter = 0; self.onconnect = e => {++self.counter;' +
 | 
						|
    'e.source.postMessage("' + run_result + '" + self.counter); };';
 | 
						|
  const blob = new Blob([blob_contents]);
 | 
						|
  const url = URL.createObjectURL(blob);
 | 
						|
 | 
						|
  const worker1 = new SharedWorker(url);
 | 
						|
  URL.revokeObjectURL(url);
 | 
						|
 | 
						|
  const reply1 = await message_from_port(worker1.port);
 | 
						|
  assert_equals(reply1, run_result + '1');
 | 
						|
  const worker2 = new SharedWorker(url);
 | 
						|
  const reply2 = await message_from_port(worker2.port);
 | 
						|
  assert_equals(reply2, run_result + '2');
 | 
						|
}, 'Connecting to a shared worker on a revoked blob URL works.');
 |