blob: 7a9adeb3d2e6a0f6c75a37624579a594c6286cf6 [file] [log] [blame]
"use strict";
// Usage examples:
// navigateAndWaitForChange(frameWindow, w => w.location.href = "...");
// navigateAndWaitForChange(frameWindow, w => w.history.back());
// navigateAndWaitForChange(frameWindow, w => w.history.back(), { assumeSuccessAfter: 100 });
window.navigateAndWaitForChange = (w, navigationAction, { assumeSuccessAfter } = {}) => {
return new Promise(resolve => {
w.addEventListener("hashchange", listener);
function listener() {
w.removeEventListener("hashchange", listener);
resolve();
}
if (assumeSuccessAfter !== undefined) {
step_timeout(resolve, assumeSuccessAfter);
}
navigationAction(w);
});
};