<!DOCTYPE html>
<title>ServiceWorkerGlobalScope: update</title>
<script src='/resources/testharness.js'></script>
<script src='/resources/testharnessreport.js'></script>
<script src='../resources/test-helpers.sub.js'></script>
<script>

promise_test(function(t) {
    var script = 'resources/update-worker.py';
    var scope = 'resources/scope/update';
    var registration;
    var frame1;

    return service_worker_unregister_and_register(t, script, scope)
      .then(function(r) {
          t.add_cleanup(function() {
              return service_worker_unregister(t, scope);
            });

          registration = r;
          return wait_for_state(t, registration.installing, 'activated');
        })
      .then(function() { return with_iframe(scope); })
      .then(function(f) {
          frame1 = f;
          registration.active.postMessage('update');
          return wait_for_update(t, registration);
        })
      .then(function() { return with_iframe(scope); })
      .then(function(frame2) {
          var expected_events_seen = [
            'updatefound',  // by register().
            'activate',
            'fetch',
            'message',
            'updatefound',  // by update() in the message handler.
            'fetch',
          ];
          assert_equals(
              frame2.contentDocument.body.textContent,
              expected_events_seen.toString(),
              'events seen by the worker');
          frame1.remove();
          frame2.remove();
        });
  }, 'Update a registration on ServiceWorkerGlobalScope');

</script>
