<!doctype html>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<iframe id="i" src="/common/blank.html"></iframe>
<script>
promise_test(async t => {
  // Wait for after the load event so that the navigation doesn't get converted
  // into a replace navigation.
  await new Promise(resolve => window.onload = () => t.step_timeout(resolve, 0));

  let destination_key = i.contentWindow.navigation.currentEntry.key;
  let destination_id = i.contentWindow.navigation.currentEntry.id;
  let destination_index = i.contentWindow.navigation.currentEntry.index;
  await i.contentWindow.navigation.navigate("#1").finished;

  let back_destination;
  i.contentWindow.navigation.onnavigate = e => back_destination = e.destination;
  await i.contentWindow.navigation.back().finished;

  // Before detach, key/id/index are valid.
  assert_equals(back_destination.key, destination_key);
  assert_equals(back_destination.id, destination_id);
  assert_equals(back_destination.index, destination_index);

  i.remove();

  // After detach, key/id/index are invalid, but the url is still valid.
  assert_equals(back_destination.key, "");
  assert_equals(back_destination.id, "");
  assert_equals(new URL(back_destination.url).pathname, "/common/blank.html");
  assert_equals(back_destination.index, -1);
}, "navigate event destination after iframe detach");
</script>
