replaceState-inside-back-handler-infinite.optional.html (831B)
1 <!doctype html> 2 <script src="/resources/testharness.js"></script> 3 <script src="/resources/testharnessreport.js"></script> 4 <script src="../navigation-methods/return-value/resources/helpers.js"></script> 5 <script> 6 promise_test(async t => { 7 await new Promise(resolve => window.onload = () => t.step_timeout(resolve, 0)); 8 await navigation.navigate("#push").finished; 9 let { reject, promise } = Promise.withResolvers(); 10 navigation.addEventListener("navigate", () => { 11 try { 12 history.replaceState(null, "", "#"); 13 } catch (e) { 14 reject(e); 15 } 16 }); 17 await Promise.all([ 18 promise_rejects_dom(t, "SecurityError", promise, "Infinite recursion in replaceState"), 19 assertBothRejectDOM(t, navigation.back(), "AbortError")]); 20 }, "infinite replaceState inside a navigate event for navigation.back()"); 21 </script>