var portResolves = [];
onmessage = function(e) {
- var message = e.data;
- if ('port' in message) {
- var resolve = self.portResolves.shift();
- if (resolve)
- resolve(message.port);
- else
- self.pendingPorts.push(message.port);
- }
+ var message = e.data;
+ if ('port' in message) {
+ var resolve = self.portResolves.shift();
+ if (resolve)
+ resolve(message.port);
+ else
+ self.pendingPorts.push(message.port);
+ }
};
function fulfillPromise() {
- return new Promise(function(resolve) {
- // Make sure the oninstall/onactivate callback returns first.
- Promise.resolve().then(function() {
- var port = self.pendingPorts.shift();
- if (port)
- resolve(port);
- else
- self.portResolves.push(resolve);
+ return new Promise(function(resolve) {
+ // Make sure the oninstall/onactivate callback returns first.
+ Promise.resolve().then(function() {
+ var port = self.pendingPorts.shift();
+ if (port)
+ resolve(port);
+ else
+ self.portResolves.push(resolve);
});
}).then(function(port) {
port.postMessage('SYNC');
return new Promise(function(resolve) {
port.onmessage = function(e) {
- if (e.data == 'ACK')
- resolve();
+ if (e.data == 'ACK')
+ resolve();
};
- });
- });
+ });
+ });
}
function rejectPromise() {
- return new Promise(function(resolve, reject) {
- // Make sure the oninstall/onactivate callback returns first.
- Promise.resolve().then(reject);
+ return new Promise(function(resolve, reject) {
+ // Make sure the oninstall/onactivate callback returns first.
+ Promise.resolve().then(reject);
});
}
function stripScopeName(scope) {
- return scope.split('/').slice(-1)[0];
+ return scope.split('/').slice(-1)[0];
}
oninstall = function(e) {
- switch (stripScopeName(self.scope)) {
- case 'install-fulfilled':
- e.waitUntil(fulfillPromise());
- break;
- case 'install-rejected':
- e.waitUntil(rejectPromise());
- break;
- }
+ switch (stripScopeName(self.scope)) {
+ case 'install-fulfilled':
+ e.waitUntil(fulfillPromise());
+ break;
+ case 'install-rejected':
+ e.waitUntil(rejectPromise());
+ break;
+ }
};
onactivate = function(e) {
- switch (stripScopeName(self.scope)) {
- case 'activate-fulfilled':
- e.waitUntil(fulfillPromise());
- break;
- case 'activate-rejected':
- e.waitUntil(rejectPromise());
- break;
- case 'activate-multiple-fulfilled':
- e.waitUntil(fulfillPromise());
- e.waitUntil(fulfillPromise());
- break;
- case 'activate-reject-precedence':
- e.waitUntil(fulfillPromise());
- e.waitUntil(rejectPromise());
- break;
- }
+ switch (stripScopeName(self.scope)) {
+ case 'activate-fulfilled':
+ e.waitUntil(fulfillPromise());
+ break;
+ case 'activate-rejected':
+ e.waitUntil(rejectPromise());
+ break;
+ case 'activate-multiple-fulfilled':
+ e.waitUntil(fulfillPromise());
+ e.waitUntil(fulfillPromise());
+ break;
+ case 'activate-reject-precedence':
+ e.waitUntil(fulfillPromise());
+ e.waitUntil(rejectPromise());
+ break;
+ }
};