self.addEventListener('fetch', async function (event) { const requestUrl = new URL(event.request.url); let responseTxt; if (requestUrl.pathname === '/echo' && event.request.headers.has('X-Mock-Response')) { if (requestUrl.search === '?setBadge') { if (navigator.setAppBadge()) { try { await navigator.setAppBadge(42); responseTxt = 'SUCCESS setting app badge'; await navigator.clearAppBadge(); } catch (ex) { responseTxt = 'ERROR setting app badge ' + ex; } } else { responseTxt = 'ERROR navigator.setAppBadge is not available in ServiceWorker!'; } } else if (requestUrl.search === '?clearBadge') { if (navigator.clearAppBadge()) { try { await navigator.clearAppBadge(); responseTxt = 'SUCCESS clearing app badge'; } catch (ex) { responseTxt = 'ERROR clearing app badge ' + ex; } } else { responseTxt = 'ERROR navigator.clearAppBadge is not available in ServiceWorker!'; } } const mockResponse = new Response(responseTxt); event.respondWith(mockResponse); } });