navigation-api-multiple-entries.https.html (2677B)
1 <!DOCTYPE html> 2 <meta name="timeout" content="long"> 3 <script src="/resources/testharness.js"></script> 4 <script src="/resources/testharnessreport.js"></script> 5 <script src="/common/utils.js"></script> 6 <script src="/common/dispatcher/dispatcher.js"></script> 7 <script src="/html/browsers/browsing-the-web/remote-context-helper/resources/remote-context-helper.js"></script> 8 <script src="../resources/utils.js"></script> 9 <script src="resources/utils.js"></script> 10 11 <body> 12 <script> 13 setup(() => assertSpeculationRulesIsSupported()); 14 15 promise_test(async t => { 16 const rcHelper = new PrerenderingRemoteContextHelper(); 17 18 const referrerRC1 = await rcHelper.addWindow(undefined, { features: 'noopener' }); 19 const referrerRC2 = await referrerRC1.navigateToNew(); 20 const referrerRC3 = await referrerRC2.navigateToNew(); 21 assert_equals(await referrerRC3.executeScript(() => navigation.entries().length), 3); 22 23 let referrerRC3CurrentId = await referrerRC3.executeScript(() => navigation.currentEntry.id); 24 25 const prerenderedRC = await referrerRC3.addPrerender(); 26 let activationStateBeforeActivation = await prerenderedRC.executeScript(() => { 27 return { 28 entries: navigation.entries().map(e => ({ id: e.id, })), 29 activationEntryId: navigation.activation.entry?.id, 30 activationFromId: navigation.activation.from?.id, 31 activationNavigationType : navigation.activation.navigationType, 32 } 33 }); 34 assert_equals(activationStateBeforeActivation.entries.length, 1); 35 assert_equals(activationStateBeforeActivation.activationFromId, referrerRC3CurrentId); 36 assert_equals(activationStateBeforeActivation.activationEntryId, activationStateBeforeActivation.entries[0].id); 37 assert_equals(activationStateBeforeActivation.activationNavigationType, "push"); 38 39 await referrerRC3.navigateExpectingPrerenderingActivation(prerenderedRC); 40 41 let activationStateAfterActivation = await prerenderedRC.executeScript(() => { 42 return { 43 entries: navigation.entries().map(e => ({ id: e.id, })), 44 activationEntryId: navigation.activation.entry?.id, 45 activationFromId: navigation.activation.from?.id, 46 activationNavigationType : navigation.activation.navigationType, 47 } 48 }); 49 assert_equals(activationStateAfterActivation.entries.length, 4); 50 assert_equals(activationStateAfterActivation.activationFromId, activationStateAfterActivation.entries[2].id); 51 assert_equals(activationStateAfterActivation.activationEntryId, activationStateAfterActivation.entries[3].id); 52 assert_equals(activationStateAfterActivation.activationNavigationType, "push"); 53 },`navigation.entries() and navigation.activation should be updated on activation - multiple entries`); 54 </script>