| // Copyright 2015 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| // The MessagePort to communicate with the client. |
| var messagePort = null; |
| |
| // If true this service worker will show a notification when a push message is |
| // received. |
| var notifyOnPush = true; |
| |
| // The number of notifications shown. |
| var notificationCounter = 0; |
| |
| // Sends a message to the test, via the page. |
| function sendToTest(message) { |
| messagePort.postMessage(JSON.stringify({ |
| 'type': 'sendToTest', |
| 'data': message |
| })); |
| } |
| |
| self.onmessage = event => { |
| if (event.data instanceof MessagePort) { |
| messagePort = event.data; |
| messagePort.postMessage('ready'); |
| return; |
| } |
| |
| var message = JSON.parse(event.data); |
| if (message.type == 'setNotifyOnPush') { |
| notifyOnPush = message.data; |
| sendToTest('setNotifyOnPush ' + message.data + ' ok'); |
| return; |
| } |
| |
| sendToTest('Unknown message type.'); |
| }; |
| |
| self.onpush = event => { |
| if (notifyOnPush) { |
| notificationCounter++; |
| event.waitUntil(registration.showNotification( |
| 'push notification ' + notificationCounter)); |
| } |
| }; |