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