traverseTo-same-document.html (1970B)
1 <!doctype html> 2 <script src="/resources/testharness.js"></script> 3 <script src="/resources/testharnessreport.js"></script> 4 <script> 5 async_test(t => { 6 let start_length = navigation.entries().length; 7 let start_index = navigation.currentEntry.index; 8 // Wait for after the load event so that the navigation doesn't get converted 9 // into a replace navigation. 10 window.onload = () => t.step_timeout(() => { 11 assert_equals(navigation.entries().length, start_length); 12 13 let onnavigate_count = 0; 14 navigation.onnavigate = () => onnavigate_count++; 15 16 let key = navigation.currentEntry.key; 17 navigation.navigate("#").committed 18 .then(t.step_func(() => { 19 assert_equals(navigation.entries().length, start_length + 1); 20 assert_equals(navigation.currentEntry, navigation.entries()[start_index + 1]); 21 assert_not_equals(key, navigation.currentEntry.key); 22 return navigation.traverseTo(key).committed; 23 })) 24 .then(t.step_func(() => { 25 assert_equals(navigation.entries().length, start_length + 1); 26 assert_equals(navigation.currentEntry, navigation.entries()[start_index]); 27 assert_equals(key, navigation.currentEntry.key); 28 assert_true(navigation.canGoForward); 29 return navigation.forward().committed; 30 })) 31 .then(t.step_func(() => { 32 assert_equals(navigation.entries().length, start_length + 1); 33 assert_equals(navigation.currentEntry, navigation.entries()[start_index + 1]); 34 assert_true(navigation.canGoBack); 35 return navigation.back().committed; 36 })) 37 .then(t.step_func_done(() => { 38 assert_equals(navigation.entries().length, start_length + 1); 39 assert_equals(navigation.currentEntry, navigation.entries()[start_index]); 40 assert_equals(key, navigation.currentEntry.key); 41 assert_equals(onnavigate_count, 4); 42 })); 43 }, 0); 44 }, "same-document navigate.traverseTo(), back(), and forward()"); 45 </script>