<!DOCTYPE html>
<script src="../resources/testharness.js"></script>
<script src="../resources/testharnessreport.js"></script>
<script src="resources/test-helpers.js"></script>
<script>
async_test(function(t) {
    var scope = 'scope/installing-waiting-active-after-registration';
    var worker_url = 'resources/empty-worker.js';
    var expected_url = normalizeURL(worker_url);

    service_worker_unregister_and_register(t, worker_url, scope)
      .then(function(r) {
          registration = r;
          assert_equals(registration.installing, null,
                        'installing before updatefound');
          assert_equals(registration.waiting, null,
                        'waiting before updatefound');
          assert_equals(registration.active, null,
                        'active before updatefound');
          return wait_for_update(t, registration);
        })
      .then(function(worker) {
          assert_equals(registration.installing.scriptURL, expected_url,
                        'installing after updatefound');
          assert_equals(registration.waiting, null,
                        'waiting after updatefound');
          assert_equals(registration.active, null,
                        'active after updatefound');
          return wait_for_state(t, registration.installing, 'installed');
        })
      .then(function() {
          assert_equals(registration.installing, null,
                        'installing after installed');
          assert_equals(registration.waiting.scriptURL, expected_url,
                        'waiting after installed');
          assert_equals(registration.active, null,
                        'active after installed');
          return wait_for_state(t, registration.waiting, 'activated');
        })
      .then(function() {
          assert_equals(registration.installing, null,
                        'installing after activated');
          assert_equals(registration.waiting, null,
                        'waiting after activated');
          assert_equals(registration.active.scriptURL, expected_url,
                        'active after activated');
          return Promise.all([
              wait_for_state(t, registration.active, 'redundant'),
              registration.unregister()
            ]);
        })
      .then(function() {
          assert_equals(registration.installing, null,
                        'installing after redundant');
          assert_equals(registration.waiting, null,
                        'waiting after redundant');
          assert_equals(registration.active.scriptURL, expected_url,
                        'active after redundant');
          t.done();
        })
      .catch(unreached_rejection(t));
  }, 'installing/waiting/active after registration');
</script>

Add test for ServiceWorkerRegistration's attributes after register is called
Add test for ServiceWorkerRegistration's attributes after register is called

This wasn't systemically tested before. Some tests partially covered it,
which clouds those tests' purpose and makes it unclear what the total
coverage of ServiceWorkerRegistration is.

BUG=396400

Review URL: https://codereview.chromium.org/487203002

git-svn-id: bf5cd6ccde378db821296732a091cfbcf5285fbd@180619 bbb929c8-8fbe-4397-9dbb-9b2b20218538
