Source code

Revision control

Copy as Markdown

Other Tools

Test Info: Errors

"use strict";
const TEST_URI = "https://example.com/";
add_setup(async function () {
await SpecialPowers.pushPrefEnv({
set: [["browser.navigation.requireUserInteraction", true]],
});
});
add_task(async () => {
await BrowserTestUtils.withNewTab(TEST_URI, async browser => {
// Navigate away, after causing a user interaction.
await SpecialPowers.spawn(browser, [], async () => {
content.document.notifyUserGestureActivation();
});
await followLink(TEST_URI + "2.html");
// Navigate again, without causing a user interaction.
let loaded = BrowserTestUtils.waitForLocationChange(
gBrowser,
TEST_URI + "3.html"
);
await SpecialPowers.spawn(browser, [], async () => {
content.history.pushState({}, "", "https://example.com/3.html");
});
await loaded;
// The entry with no interaction shouldn't appear.
await assertMenulist([TEST_URI + "3.html", TEST_URI]);
// Go back using history.back, which does not check for user interaction.
loaded = BrowserTestUtils.waitForLocationChange(
gBrowser,
TEST_URI + "2.html"
);
await SpecialPowers.spawn(browser, [], async () => {
content.history.back();
});
await loaded;
// We are back on entry 2, so it should appear in the list.
await assertMenulist([TEST_URI + "3.html", TEST_URI + "2.html", TEST_URI]);
});
});