background-fetch-sw-inner.https.html (1240B)
1 <!DOCTYPE html> 2 <script src="/resources/testharness.js"></script> 3 <script src="/resources/testharnessreport.js"></script> 4 <script src="utils.js"></script> 5 <title>Fenced frame content to report the result of background fetch in SW</title> 6 7 <body> 8 <script type="module"> 9 const [background_fetch_register_key, method] = parseKeylist(); 10 11 const getController = () => { 12 if (navigator.serviceWorker.controller) { 13 return navigator.serviceWorker.controller; 14 } 15 return new Promise(resolve => { 16 navigator.serviceWorker.addEventListener('controllerchange', () => { 17 resolve(navigator.serviceWorker.controller); 18 }); 19 }); 20 }; 21 22 const sendMessageToServiceWorker = async () => { 23 const ctrl = await getController(); 24 return new Promise(resolve => { 25 ctrl.postMessage(method); 26 navigator.serviceWorker.onmessage = e => { 27 resolve(e.data); 28 } 29 }); 30 }; 31 32 await navigator.serviceWorker.register( 33 "background-fetch-sw.js", { scope: location.href }); 34 const data = await sendMessageToServiceWorker(); 35 36 writeValueToServer(background_fetch_register_key, data); 37 </script> 38 </body>