<!doctype html>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<form id="form" method="post" action="">
<input type="submit" id="submit1">
<input type="image" id="submit2">
<button type="submit" id="submit3">
</form>
<script>
promise_test(async () => {
  await new Promise(r => window.onload = r);

  let sourceElement;
  navigation.onnavigate = e => {
    e.preventDefault();
    sourceElement = e.sourceElement;
  };

  form.requestSubmit(submit1);
  await new Promise(r => navigation.onnavigateerror = r);
  assert_equals(sourceElement, submit1);

  form.requestSubmit(submit2);
  await new Promise(r => navigation.onnavigateerror = r);
  assert_equals(sourceElement, submit2);

  form.requestSubmit(submit3);
  await new Promise(r => navigation.onnavigateerror = r);
  assert_equals(sourceElement, submit3);

  form.requestSubmit();
  await new Promise(r => navigation.onnavigateerror = r);
  assert_equals(sourceElement, form);
}, "<form> requestSubmit() sets sourceElement");
</script>
