mirror of
https://github.com/servo/servo.git
synced 2025-06-25 09:34:32 +01:00
43 lines
1.4 KiB
JavaScript
43 lines
1.4 KiB
JavaScript
// META: global=window,worker
|
|
// META: script=/resources/WebIDLParser.js
|
|
// META: script=/resources/idlharness.js
|
|
// META: script=/service-workers/service-worker/resources/test-helpers.sub.js
|
|
// META: timeout=long
|
|
|
|
// https://w3c.github.io/push-api/
|
|
|
|
idl_test(
|
|
['push-api'],
|
|
['service-workers', 'hr-time', 'html', 'dom', 'permissions'],
|
|
async (idl_array, t) => {
|
|
const isServiceWorker = 'ServiceWorkerGlobalScope' in self
|
|
&& self instanceof ServiceWorkerGlobalScope;
|
|
if (isServiceWorker) {
|
|
idl_array.add_objects({
|
|
ServiceWorkerGlobalScope: ['self'],
|
|
PushEvent: ['new PushEvent("type")'],
|
|
PushSubscriptionChangeEvent: [
|
|
'new PushSubscriptionChangeEvent("pushsubscriptionchange")'
|
|
],
|
|
})
|
|
}
|
|
if (GLOBAL.isWindow() || isServiceWorker) {
|
|
idl_array.add_objects({
|
|
// self.registration set for window below, and registration is already
|
|
// part of ServiceWorkerGlobalScope.
|
|
ServiceWorkerRegistration: ['registration'],
|
|
PushManager: ['registration.pushManager'],
|
|
});
|
|
}
|
|
|
|
if (GLOBAL.isWindow()) {
|
|
const scope = '/service-workers/service-worker/resources/';
|
|
const worker = `${scope}empty-worker.js`;
|
|
return service_worker_unregister_and_register(t, worker, scope)
|
|
.then(registration => {
|
|
self.registration = registration;
|
|
t.add_cleanup(function () { registration.unregister(); });
|
|
});
|
|
}
|
|
}
|
|
);
|