controlled-dedicatedworker-postMessage.https.html (1628B)
1 <html> 2 <head> 3 <meta name="timeout" content="long"> 4 <script src="/resources/testharness.js"></script> 5 <script src="/resources/testharnessreport.js"></script> 6 <script src="resources/test-helpers.sub.js"></script> 7 </head> 8 <body> 9 <script> 10 promise_test(async (test) => { 11 const registration = await navigator.serviceWorker.register("postMessage-client-worker.js", { scope : 'resources' }); 12 activeWorker = registration.active; 13 if (activeWorker) 14 return; 15 16 activeWorker = registration.installing; 17 await new Promise(resolve => { 18 activeWorker.addEventListener('statechange', () => { 19 if (activeWorker.state === "activated") 20 resolve(); 21 }); 22 }); 23 }, "Register service worker"); 24 25 promise_test(async (test) => { 26 const worker = new Worker('resources/controlled-worker-postMessage.js'); 27 const event = await new Promise((resolve, reject) => { 28 test.step_timeout(() => reject("test timed out"), 3000); 29 worker.onmessage = resolve; 30 }); 31 assert_equals(event.data, 0); 32 }, "Verify dedicated worker gets messages if setting event listener early"); 33 34 promise_test(async (test) => { 35 const worker = new Worker('resources/controlled-worker-late-postMessage.js?repeatMessages'); 36 const event = await new Promise((resolve, reject) => { 37 test.step_timeout(() => reject("test timed out"), 3000); 38 worker.onmessage = resolve; 39 }); 40 assert_not_equals(event.data, "No message received"); 41 assert_true(event.data > 0); 42 }, "Verify dedicated worker does not get all messages if not setting event listener early"); 43 </script> 44 </body> 45 </html>