Test that navigateEvent.defaultPrevented remains false if the navigation is cancelled after event dispatch

Fixed: 1426994
Change-Id: I6581d820f0212c5186b54cb52f4a7d9c481b8148
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/4375509
Auto-Submit: Nate Chapin <japhet@chromium.org>
Reviewed-by: Domenic Denicola <domenic@chromium.org>
Commit-Queue: Domenic Denicola <domenic@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1122797}
diff --git a/navigation-api/navigate-event/defaultPrevented-navigation-preempted.html b/navigation-api/navigate-event/defaultPrevented-navigation-preempted.html
new file mode 100644
index 0000000..1df4f56
--- /dev/null
+++ b/navigation-api/navigate-event/defaultPrevented-navigation-preempted.html
@@ -0,0 +1,19 @@
+<!doctype html>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script>
+test(() => {
+  let navigateEvent;
+  let navigateError_called = false;
+  navigation.onnavigate = e => navigateEvent = e;
+  navigation.onnavigateerror = () => navigateError_called = true;
+
+  navigation.navigate("#1");
+  assert_false(navigateEvent.defaultPrevented);
+  assert_false(navigateError_called);
+
+  navigation.navigate("#2");
+  assert_false(navigateEvent.defaultPrevented);
+  assert_true(navigateError_called);
+}, "navigateEvent.defaultPrevented isn't affected when the navigation is preempted after dispatch");
+</script>
diff --git a/navigation-api/navigate-event/defaultPrevented-window-stop-after-dispatch.html b/navigation-api/navigate-event/defaultPrevented-window-stop-after-dispatch.html
new file mode 100644
index 0000000..da5de10
--- /dev/null
+++ b/navigation-api/navigate-event/defaultPrevented-window-stop-after-dispatch.html
@@ -0,0 +1,16 @@
+<!doctype html>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script>
+async_test(t => {
+  window.onload = t.step_func_done(() => {
+    let navigateEvent;
+    navigation.onnavigate = e => navigateEvent = e;
+    navigation.navigate("?1");
+    assert_false(navigateEvent.defaultPrevented);
+
+    window.stop();
+    assert_false(navigateEvent.defaultPrevented);
+  });
+}, "window.stop() doesn't affect navigateEvent.defaultPrevented after dispatch");
+</script>