// 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(); }); }); } } );