transition-realms-and-identity.html (1590B)
1 <!doctype html> 2 <script src="/resources/testharness.js"></script> 3 <script src="/resources/testharnessreport.js"></script> 4 5 <iframe id="i" src="/common/blank.html"></iframe> 6 7 <script> 8 promise_test(async () => { 9 await new Promise(resolve => window.onload = resolve); 10 11 i.contentWindow.navigation.addEventListener("navigate", e => { 12 e.intercept(); 13 }); 14 15 const returnValueFinished1 = i.contentWindow.navigation.navigate("?1").finished; 16 const transition1 = i.contentWindow.navigation.transition; 17 const transitionFinished1 = transition1.finished; 18 19 assert_true(returnValueFinished1 instanceof i.contentWindow.Promise); 20 assert_true(transition1 instanceof i.contentWindow.NavigationTransition); 21 assert_true(transitionFinished1 instanceof i.contentWindow.Promise); 22 23 assert_not_equals(returnValueFinished1, transitionFinished1); 24 25 // Ensure the getters aren't generating new objects each time. 26 assert_equals(i.contentWindow.navigation.transition, transition1); 27 assert_equals(i.contentWindow.navigation.transition.finished, transitionFinished1); 28 29 assert_equals(await transitionFinished1, undefined); 30 31 // Ensure stuff does change after another navigation. 32 const committed2 = i.contentWindow.navigation.navigate("?2").committed; 33 const transition2 = i.contentWindow.navigation.transition; 34 const transitionFinished2 = transition2.finished; 35 36 assert_not_equals(transition2, transition1); 37 assert_not_equals(transitionFinished2, transitionFinished1); 38 39 await committed2; 40 }, "Realm and identity of the navigation.transition object and its finished promise"); 41 </script>