Update broken references to image assets
[chromium-blink-merge.git] / content / test / data / background_sync / service_worker.js
blob7dfebe5351eb8f77521f05a649c260210c231df2
1 // Copyright 2015 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 // The "onsync" event currently understands commands (passed as
6 // registration tags) coming from the test. Any other tag is
7 // passed through to the document unchanged.
8 //
9 // "delay" - Delays finishing the sync event with event.waitUntil.
10 //           Send a postMessage of "completeDelayedOneShot" to finish the
11 //           event.
13 'use strict';
15 var resolveCallback = null;
16 var rejectCallback = null;
18 this.onmessage = function(event) {
19   if (event.data === 'completeDelayedOneShot') {
20     if (resolveCallback === null) {
21       sendMessageToClients('sync', 'error - resolveCallback is null');
22       return;
23     }
25     resolveCallback();
26     sendMessageToClients('sync', 'ok - delay completed');
27     return;
28   }
30   if (event.data === 'rejectDelayedOneShot') {
31     if (rejectCallback === null) {
32       sendMessageToClients('sync', 'error - rejectCallback is null');
33       return;
34     }
36     rejectCallback();
37     sendMessageToClients('sync', 'ok - delay rejected');
38   }
41 this.onsync = function(event) {
42   if (event.registration === undefined) {
43     sendMessageToClients('sync', 'error - event missing registration');
44     return;
45   }
47   if (event.registration.tag === undefined) {
48     sendMessageToClients('sync', 'error - registration missing tag');
49     return;
50   }
52   var tag = event.registration.tag;
54   if (tag === 'delay') {
55     var syncPromise = new Promise(function(resolve, reject) {
56       resolveCallback = resolve;
57       rejectCallback = reject;
58     });
59     event.waitUntil(syncPromise);
60     return;
61   }
63   sendMessageToClients('sync', tag + ' fired');
66 function sendMessageToClients(type, data) {
67   clients.matchAll().then(function(clients) {
68     clients.forEach(function(client) {
69       client.postMessage({type, data});
70     });
71   }, function(error) {
72     console.log(error);
73   });