| // Copyright 2020 The Chromium Authors |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| 'use strict'; |
| |
| // Adds a message event handler that responds to 'set-app-badge' and |
| // 'clear-app-badge' commands by running setAppBadge() or |
| // clearAppBadge() on this ServiceWorkerGlobalScope. Responds with |
| // a message to the sender after the set/clearAppBadge() promise settles. |
| // |
| // Here's how to send a valid message to this service worker: |
| // |
| // (1) serviceWorker.postMessage({ command: 'set-app-badge', value: 29 }); |
| // (2) serviceWorker.postMessage({ command: 'set-app-badge' }); |
| // (3) serviceWorker.postMessage({ command: 'clear-app-badge' }); |
| addEventListener('message', async function (event) { |
| try { |
| const command = event.data.command; |
| switch (command) { |
| case 'set-app-badge': |
| const badgeValue = event.data.value; |
| if (badgeValue !== undefined) { |
| await navigator.setAppBadge(badgeValue); |
| } else { |
| await navigator.setAppBadge(); |
| } |
| event.source.postMessage('OK'); |
| break; |
| |
| case 'clear-app-badge': |
| await navigator.clearAppBadge(); |
| event.source.postMessage('OK'); |
| break; |
| |
| default: |
| throw `Unknown command: '${command}'`; |
| } |
| } catch (error) { |
| event.source.postMessage(`EXCEPTION: ${error}`); |
| } |
| }); |