chromium/third_party/blink/web_tests/external/wpt/periodic-background-sync/periodicsync.https.window.js

// META: script=/common/get-host-info.sub.js
// META: script=/service-workers/service-worker/resources/test-helpers.sub.js

'use strict'

promise_test(async test => {
  const script = 'service_workers/sw.js';
  const scope = 'service_workers' + location.pathname;

  const serviceWorkerRegistration =
      await service_worker_unregister_and_register(test, script, scope);

  assert_equals(
      serviceWorkerRegistration.active, null,
      'There must not be an activated worker');

  await promise_rejects_dom(
      test, 'InvalidStateError',
      serviceWorkerRegistration.periodicSync.register(
          'test_tag'),
      'register() must reject on pending and installing workers');
}, 'Periodic Background Sync requires an activated Service Worker');

promise_test(async test => {
  const script = 'service_workers/sw.js';
  const scope = 'service_workers' + location.pathname;

  const serviceWorkerRegistration =
      await service_worker_unregister_and_register(test, script, scope);

  assert_equals(
      serviceWorkerRegistration.active, null,
      'There must not be an activated worker');

  await serviceWorkerRegistration.periodicSync.unregister('test_tag');
  }, 'Periodic Background Sync unregister silently succeeds when Service Worker is unactivated');