Removed 'anonymous' from namespace, added whitespace in thread_restrictions.cc
[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;
25 resolveCallback();
26 sendMessageToClients('sync', 'ok - delay completed');
27 return;
30 if (event.data === 'rejectDelayedOneShot') {
31 if (rejectCallback === null) {
32 sendMessageToClients('sync', 'error - rejectCallback is null');
33 return;
36 rejectCallback();
37 sendMessageToClients('sync', 'ok - delay rejected');
41 this.onsync = function(event) {
42 if (event.registration === undefined) {
43 sendMessageToClients('sync', 'error - event missing registration');
44 return;
47 if (event.registration.tag === undefined) {
48 sendMessageToClients('sync', 'error - registration missing tag');
49 return;
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;
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 });