summaryrefslogtreecommitdiffstats
path: root/browser/components/urlbar/tests/browser/browser_whereToOpen.js
diff options
context:
space:
mode:
Diffstat (limited to 'browser/components/urlbar/tests/browser/browser_whereToOpen.js')
-rw-r--r--browser/components/urlbar/tests/browser/browser_whereToOpen.js192
1 files changed, 192 insertions, 0 deletions
diff --git a/browser/components/urlbar/tests/browser/browser_whereToOpen.js b/browser/components/urlbar/tests/browser/browser_whereToOpen.js
new file mode 100644
index 0000000000..339a20d90e
--- /dev/null
+++ b/browser/components/urlbar/tests/browser/browser_whereToOpen.js
@@ -0,0 +1,192 @@
+/* Any copyright is dedicated to the Public Domain.
+ http://creativecommons.org/publicdomain/zero/1.0/ */
+
+"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);
+ }
+});