// 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 (ex) { dump("Error " + ex + "\n"); clients.forEach(function (client) { client.postMessage({ ok: false }); }); }); }) ); };