Update web-platform-tests to revision 4e6563687b9c03d2f54ce0f06ef0ccc8e0964328

This commit is contained in:
WPT Sync Bot 2019-01-02 21:11:44 -05:00
parent e68585a26f
commit c80d322d92
56 changed files with 1205 additions and 66 deletions

View file

@ -13,6 +13,34 @@ self.createIframe = (url, t) => new Promise(resolve => {
t.add_cleanup(() => iframe.remove());
});
/**
* @description - Function unregisters any service workers in this scope
* and then creates a new registration. The function returns
* a promise that resolves when the registered service worker
* becomes activated. The resolved promise yields the
* service worker registration
* @param {testCase} t - test case to add cleanup functions to
*/
self.createServiceWorker = async (t, sw_registration_name, scope_url) => {
let registration = await navigator.serviceWorker.getRegistration(scope_url);
if (registration)
await registration.unregister();
registration = await navigator.serviceWorker.register(sw_registration_name,
{scope_url});
t.add_cleanup(() => registration.unregister());
return new Promise(resolve => {
const serviceWorker = registration.installing || registration.active ||
registration.waiting;
serviceWorker.addEventListener('statechange', event => {
if (event.target.state === 'activated') {
resolve(serviceWorker);
}
});
})
}
/**
* Function that will return a promise that resolves when a message event
* is fired. Returns a promise that resolves to the message that was received
@ -22,3 +50,23 @@ self.waitForMessage = () => new Promise(resolve => {
resolve(event.data);
}, {once: true});
});
/**
* Sends a message via MessageChannel and waits for the response
* @param {*} message
* @returns {Promise} resolves with the response payload
*/
self.sendMessageOverChannel = (message, target) => {
return new Promise(function(resolve, reject) {
const messageChannel = new MessageChannel();
messageChannel.port1.onmessage = event => {
if (event.data.error) {
reject(event.data.error);
} else {
resolve(event.data);
}
};
target.postMessage(message, [messageChannel.port2]);
})
};