precommitHandler-addHandler.html (1585B)
1 <!DOCTYPE html> 2 <script src="/resources/testharness.js"></script> 3 <script src="/resources/testharnessreport.js"></script> 4 <body> 5 <script> 6 promise_test(async (t) => { 7 let did_delay = false; 8 navigation.onnavigate = t.step_func((e) => { 9 e.intercept({ 10 precommitHandler: (controller) => 11 controller.addHandler( 12 t.step_func( 13 () => 14 new Promise((resolve) => 15 t.step_timeout(() => { 16 did_delay = true; 17 resolve(); 18 }, 1) 19 ) 20 ) 21 ), 22 }); 23 }); 24 await navigation.navigate("#").finished; 25 assert_true(did_delay); 26 }, "handler added in addHandler() delays navigation finish"); 27 28 promise_test(async (t) => { 29 const events = []; 30 navigation.onnavigate = t.step_func((e) => { 31 e.intercept({ 32 precommitHandler: async (controller) => { 33 controller.addHandler( 34 t.step_func(() => { 35 events.push("added"); 36 }) 37 ); 38 }, 39 handler: t.step_func(() => { 40 events.push("handler1"); 41 }), 42 }); 43 e.intercept({ 44 handler: t.step_func(() => { 45 events.push("handler2"); 46 }), 47 }); 48 }); 49 await navigation.navigate("#").finished; 50 assert_array_equals(events, ["handler1", "handler2", "added"]); 51 }, "handler added in addHandler() is executed in the correct order"); 52 </script> 53 </body>