<!DOCTYPE html>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/preload/resources/preload_helper.js"></script>
<script src="../service-workers/service-worker/resources/test-helpers.sub.js"></script>
<script>
async_test(function(t) {
    var worker_url = 'resources/fetch-destination-worker.js';
    var scope = 'resources/empty.html';
    var registration;
    verifyPreloadAndRTSupport();

    service_worker_unregister_and_register(t, worker_url, scope)
      .then(t.step_func(function(r) {
          registration = r;
          return wait_for_state(t, r.installing, 'activated');
        }))
      .then(t.step_func(function() {
          return with_iframe(scope);
        }))
      .then(t.step_func(function(frame) {
          var link = frame.contentWindow.document.createElement("link");
          link.as = "fetch";
          link.href = "resources/dummy.xml";
          link.rel = "preload";
          link.addEventListener("load", t.step_func_done(function() { registration.unregister(); }));
          link.addEventListener("error", t.step_func_done(function() {
              registration.unregister();
              assert_unreached("Fetch destination preload errored");
          }));
          frame.contentWindow.document.body.appendChild(link);
        }))
      .catch(unreached_rejection(t));
}, 'Fetch destination preload');
</script>
