| <!doctype html> |
| <script src="/resources/testharness.js"></script> |
| <script src="/resources/testharnessreport.js"></script> |
| <script src="../navigation-methods/return-value/resources/helpers.js"></script> |
| <script src="resources/precommitHandler-helpers.js"></script> |
| <body> |
| <script> |
| let start_index = navigation.currentEntry.index; |
| |
| // Note that `destinationIndex` is chosen relative to `start_index`, and the |
| // tests begin at `start_index` + 4. So: |
| // * "rejectBeforeCommit" will try to go back 4 steps and fail. |
| // * "rejectAfterCommit" will go back 3 steps, then reject after commit. |
| // * "success" will go forward 2 steps |
| let tests = [ |
| { mode: "rejectBeforeCommit", destinationIndex: start_index, description: "precommitHandler for a traverse navigation, reject before commit" }, |
| { mode: "rejectAfterCommit", destinationIndex: start_index + 1, description: "precommitHandler for a traverse navigation, reject after commit" }, |
| { mode: "success", destinationIndex: start_index + 3, description: "precommitHandler for a traverse navigation, success" } |
| ]; |
| |
| // Push a bunch of history entries so each test case can target a unique entry. |
| history.pushState("", "", "#1"); |
| history.pushState("", "", "#2"); |
| history.pushState("", "", "#3"); |
| history.pushState("", "", "#4"); |
| |
| let onload_promise = new Promise(resolve => window.onload = resolve); |
| for (let test of tests) { |
| promise_test(async t => { |
| await onload_promise; |
| await testDeferredCommit(t, "traverse", test.mode, test.destinationIndex); |
| }, test.description); |
| } |
| </script> |
| </body> |