// Any copyright is dedicated to the Public Domain. // http://creativecommons.org/publicdomain/zero/1.0/ // function promisifyTimerFocus(client, delay) { return new Promise(function(resolve, reject) { setTimeout(function() { client.focus().then(resolve, reject); }, delay); }); } onnotificationclick = function(e) { e.waitUntil(self.clients.matchAll().then(function(clients) { if (clients.length === 0) { dump("********************* CLIENTS LIST EMPTY! Test will timeout! ***********************\n"); return Promise.resolve(); } var immediatePromise = clients[0].focus(); var withinTimeout = promisifyTimerFocus(clients[0], 100); var afterTimeout = promisifyTimerFocus(clients[0], 2000).then(function() { throw "Should have failed!"; }, function() { return Promise.resolve(); }); return Promise.all([immediatePromise, withinTimeout, afterTimeout]).then(function() { clients.forEach(function(client) { client.postMessage({ok: true}); }); }).catch(function(e) { dump("Error " + e + "\n"); clients.forEach(function(client) { client.postMessage({ok: false}); }); }); })); }