<!DOCTYPE html>
<script src="/resources/testharness.js"></script>
<script src="resources/testharness-helpers.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="resources/test-helpers.sub.js"></script>
<script>
function wait_for_install_event(worker) {
  return new Promise(function(resolve) {
      worker.addEventListener('statechange', function(event) {
          if (worker.state == 'installed')
            resolve(true);
          else if (worker.state == 'redundant')
            resolve(false);
        });
    });
}

promise_test(function(t) {
      var script = 'resources/install-event-type-worker.js';
      var scope = 'resources/install-event-type';
      return service_worker_unregister_and_register(t, script, scope)
        .then(function(registration) {
            return wait_for_install_event(registration.installing);
          })
        .then(function(did_install) {
           assert_true(did_install, 'The worker was installed');
          })
    }, 'install event type');

</script>
