Bug 1435142 - Part 2: add a browser mochitest for closeTabByDblclick. r=dao,mixedpuppy
MozReview-Commit-ID: 1UEnYflvtLw
--- a/browser/base/content/test/tabs/browser.ini
+++ b/browser/base/content/test/tabs/browser.ini
@@ -2,16 +2,17 @@
support-files =
head.js
dummy_page.html
[browser_abandonment_telemetry.js]
[browser_accessibility_indicator.js]
[browser_allow_process_switches_despite_related_browser.js]
[browser_bug580956.js]
+[browser_close_tab_by_dblclick.js]
[browser_contextmenu_openlink_after_tabnavigated.js]
support-files =
test_bug1358314.html
[browser_isLocalAboutURI.js]
[browser_tabCloseProbes.js]
[browser_tabSpinnerProbe.js]
skip-if = !e10s # Tab spinner is e10s only.
[browser_tabSwitchPrintPreview.js]
new file mode 100644
--- /dev/null
+++ b/browser/base/content/test/tabs/browser_close_tab_by_dblclick.js
@@ -0,0 +1,36 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+
+const PREF_CLOSE_TAB_BY_DBLCLICK = "browser.tabs.closeTabByDblclick";
+
+function triggerDblclickOn(target) {
+ let promise = BrowserTestUtils.waitForEvent(target, "dblclick");
+ EventUtils.synthesizeMouseAtCenter(target, { clickCount: 1 });
+ EventUtils.synthesizeMouseAtCenter(target, { clickCount: 2 });
+ return promise;
+}
+
+add_task(async function dblclick() {
+ let tab = gBrowser.selectedTab;
+ await triggerDblclickOn(tab);
+ ok(!tab.closing, "Double click the selected tab won't close it");
+});
+
+add_task(async function dblclickWithPrefSet() {
+ await SpecialPowers.pushPrefEnv({set: [
+ [PREF_CLOSE_TAB_BY_DBLCLICK, true]
+ ]});
+
+ let tab = BrowserTestUtils.addTab(gBrowser, "about:mozilla", {
+ skipAnimation: true
+ });
+ isnot(tab, gBrowser.selectedTab, "The new tab is in the background");
+
+ await triggerDblclickOn(tab);
+ is(tab, gBrowser.selectedTab, "Double click a background tab will select it");
+
+ await triggerDblclickOn(tab);
+ ok(tab.closing, "Double click the selected tab will close it");
+});