<!--
  Any copyright is dedicated to the Public Domain.
  http://creativecommons.org/publicdomain/zero/1.0/
-->
<!DOCTYPE HTML>
<html>
<head>
  <title>Bug 1408734</title>
  <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
  <script src="/tests/SimpleTest/SimpleTest.js"></script>
  <script src="error_reporting_helpers.js"></script>
  <script src="utils.js"></script>
</head>
<body>
<p id="display"></p>
<div id="content" style="display: none"></div>
<pre id="test"></pre>
<script class="testbody" type="text/javascript">

// setup prefs
add_task(() => {
  return SpecialPowers.pushPrefEnv({"set": [
    ["dom.serviceWorkers.enabled", true],
    ["dom.serviceWorkers.testing.enabled", true],
  ]});
});

// test for bug 1408734
add_task(async () => {
  // register a service worker
  let registration = await navigator.serviceWorker.register("fetch.js",
                                                            {scope: "./"});
  // wait for service worker be activated
  await waitForState(registration.installing, "activated");

  // get the ServiceWorkerRegistration we just register through GetRegistration
  registration = await navigator.serviceWorker.getRegistration("./");
  ok(registration, "should get the registration under scope './'");

  // call unregister()
  await registration.unregister();

  // access registration.updateViaCache to trigger the bug
  // we really care that we don't crash. In the future we will fix
  is(registration.updateViaCache, "imports",
     "registration.updateViaCache should work after unregister()");
});

</script>
</pre>
</body>
</html>
