| <!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> |