<!doctype html>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<iframe id="i" src="/common/blank.html"></iframe>
<script>
async_test(t => {
  window.onload = t.step_func(() => {
    i.contentWindow.navigation.onnavigate = t.step_func_done(e => {
      assert_equals(e.navigationType, "reload");
      assert_true(e.cancelable);
      assert_true(e.canIntercept);
      assert_false(e.userInitiated);
      assert_false(e.hashChange);
      assert_equals(e.downloadRequest, null);
      assert_equals(new URL(e.destination.url).pathname, "/common/blank.html");
      assert_false(e.destination.sameDocument);
      assert_equals(e.destination.key, "");
      assert_equals(e.destination.id, "");
      assert_equals(e.destination.index, -1);
      assert_equals(e.formData, null);
      assert_equals(e.sourceElement, null);
      e.preventDefault();
    });

    i.contentWindow.history.go(0);
  });
}, "history.go(0) fires the navigate event");
</script>
