<!doctype html><scriptsrc="/resources/testharness.js"></script><scriptsrc="/resources/testharnessreport.js"></script><body><script>promise_test(asynct=>{navigation.addEventListener("navigate",e=>{e.intercept({focusReset:"after-transition"});},{once:true});constbutton=document.body.appendChild(document.createElement("button"));constbutton2=document.body.appendChild(document.createElement("button"));button2.tabIndex=0;t.add_cleanup(()=>{button.remove();button2.remove();});assert_equals(document.activeElement,document.body,"Start on body");button.focus();assert_equals(document.activeElement,button,"focus() worked");letnavigatesuccess_called=false;navigation.onnavigatesuccess=t.step_func(()=>{navigatesuccess_called=true;assert_equals(document.activeElement,document.body,"Focus must be reset before navigatesuccess");});awaitnavigation.navigate("#1").finished;assert_true(navigatesuccess_called);},"Focus should be reset before navigatesuccess");promise_test(asynct=>{navigation.addEventListener("navigate",e=>{e.intercept({handler:()=>Promise.reject(),focusReset:"after-transition"});},{once:true});constbutton=document.body.appendChild(document.createElement("button"));constbutton2=document.body.appendChild(document.createElement("button"));button2.tabIndex=0;t.add_cleanup(()=>{button.remove();button2.remove();});assert_equals(document.activeElement,document.body,"Start on body");button.focus();assert_equals(document.activeElement,button,"focus() worked");letnavigateerror_called=false;navigation.onnavigateerror=t.step_func(()=>{navigateerror_called=true;assert_equals(document.activeElement,document.body,"Focus must be reset before navigateerror");});awaitpromise_rejects_exactly(t,undefined,navigation.navigate("#2").finished);assert_true(navigateerror_called);},"Focus should be reset before navigateerror");</script></body>