Source code

Revision control

Copy as Markdown

Other Tools

Test Info: Warnings

/* Any copyright is dedicated to the Public Domain.
"use strict";
const NON_EMPTY_TAB = "example.com/non-empty";
const EMPTY_TAB = "about:blank";
const META_KEY = AppConstants.platform == "macosx" ? "metaKey" : "ctrlKey";
const ENTER = new KeyboardEvent("keydown", {});
const ALT_ENTER = new KeyboardEvent("keydown", { altKey: true });
const ALTGR_ENTER = new KeyboardEvent("keydown", { modifierAltGraph: true });
const CLICK = new MouseEvent("click", { button: 0 });
const META_CLICK = new MouseEvent("click", { button: 0, [META_KEY]: true });
const MIDDLE_CLICK = new MouseEvent("click", { button: 1 });
let old_openintab = Preferences.get("browser.urlbar.openintab");
registerCleanupFunction(async function () {
Preferences.set("browser.urlbar.openintab", old_openintab);
});
add_task(async function openInTab() {
// Open a non-empty tab.
let tab = (gBrowser.selectedTab = await BrowserTestUtils.openNewForegroundTab(
gBrowser,
NON_EMPTY_TAB
));
for (let test of [
{
pref: false,
event: ALT_ENTER,
desc: "Alt+Enter, non-empty tab, default prefs",
},
{
pref: false,
event: ALTGR_ENTER,
desc: "AltGr+Enter, non-empty tab, default prefs",
},
{
pref: false,
event: META_CLICK,
desc: "Meta+click, non-empty tab, default prefs",
},
{
pref: false,
event: MIDDLE_CLICK,
desc: "Middle click, non-empty tab, default prefs",
},
{ pref: true, event: ENTER, desc: "Enter, non-empty tab, openInTab" },
{
pref: true,
event: CLICK,
desc: "Normal click, non-empty tab, openInTab",
},
]) {
info(test.desc);
Preferences.set("browser.urlbar.openintab", test.pref);
let where = gURLBar._whereToOpen(test.event);
is(where, "tab", "URL would be loaded in a new tab");
}
// Clean up.
BrowserTestUtils.removeTab(tab);
});
add_task(async function keepEmptyTab() {
// Open an empty tab.
let tab = (gBrowser.selectedTab = await BrowserTestUtils.openNewForegroundTab(
gBrowser,
EMPTY_TAB
));
for (let test of [
{
pref: false,
event: META_CLICK,
desc: "Meta+click, empty tab, default prefs",
},
{
pref: false,
event: MIDDLE_CLICK,
desc: "Middle click, empty tab, default prefs",
},
]) {
info(test.desc);
Preferences.set("browser.urlbar.openintab", test.pref);
let where = gURLBar._whereToOpen(test.event);
is(where, "tab", "URL would be loaded in a new tab");
}
// Clean up.
BrowserTestUtils.removeTab(tab);
});
add_task(async function reuseEmptyTab() {
// Open an empty tab.
let tab = (gBrowser.selectedTab = await BrowserTestUtils.openNewForegroundTab(
gBrowser,
EMPTY_TAB
));
for (let test of [
{
pref: false,
event: ALT_ENTER,
desc: "Alt+Enter, empty tab, default prefs",
},
{
pref: false,
event: ALTGR_ENTER,
desc: "AltGr+Enter, empty tab, default prefs",
},
{ pref: true, event: ENTER, desc: "Enter, empty tab, openInTab" },
{ pref: true, event: CLICK, desc: "Normal click, empty tab, openInTab" },
]) {
info(test.desc);
Preferences.set("browser.urlbar.openintab", test.pref);
let where = gURLBar._whereToOpen(test.event);
is(where, "current", "New URL would reuse the current empty tab");
}
// Clean up.
BrowserTestUtils.removeTab(tab);
});
add_task(async function openInCurrentTab() {
for (let test of [
{
pref: false,
url: NON_EMPTY_TAB,
event: ENTER,
desc: "Enter, non-empty tab, default prefs",
},
{
pref: false,
url: NON_EMPTY_TAB,
event: CLICK,
desc: "Normal click, non-empty tab, default prefs",
},
{
pref: false,
url: EMPTY_TAB,
event: ENTER,
desc: "Enter, empty tab, default prefs",
},
{
pref: false,
url: EMPTY_TAB,
event: CLICK,
desc: "Normal click, empty tab, default prefs",
},
{
pref: true,
url: NON_EMPTY_TAB,
event: ALT_ENTER,
desc: "Alt+Enter, non-empty tab, openInTab",
},
{
pref: true,
url: NON_EMPTY_TAB,
event: ALTGR_ENTER,
desc: "AltGr+Enter, non-empty tab, openInTab",
},
{
pref: true,
url: NON_EMPTY_TAB,
event: META_CLICK,
desc: "Meta+click, non-empty tab, openInTab",
},
{
pref: true,
url: NON_EMPTY_TAB,
event: MIDDLE_CLICK,
desc: "Middle click, non-empty tab, openInTab",
},
]) {
info(test.desc);
// Open a new tab.
let tab = (gBrowser.selectedTab =
await BrowserTestUtils.openNewForegroundTab(gBrowser, test.url));
Preferences.set("browser.urlbar.openintab", test.pref);
let where = gURLBar._whereToOpen(test.event);
is(where, "current", "URL would open in the current tab");
// Clean up.
BrowserTestUtils.removeTab(tab);
}
});