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