// META: global=window,worker
// META: script=/resources/WebIDLParser.js
// META: script=/resources/idlharness.js

'use strict';

// https://notifications.spec.whatwg.org/

idl_test(
  ['notifications'],
  ['service-workers', 'html', 'dom'],
  idl_array => {
    if (self.ServiceWorkerGlobalScope) {
      idl_array.add_objects({
        ServiceWorkerGlobalScope: ['self'],
      });
      // NotificationEvent could be tested here, but the constructor requires
      // a Notification instance which cannot be created in a service worker,
      // see below.
    } else {
      // While the Notification interface is exposed in service workers, the
      // constructor (https://notifications.spec.whatwg.org/#dom-notification-notification)
      // is defined to throw a TypeError. Therefore, we only add the object in
      // the other scopes.
      idl_array.add_objects({
        Notification: ['notification'],
      });
      self.notification = new Notification('title');
    }
  }
);
