Bug 1435142 - Part 2: add a browser mochitest for closeTabByDblclick. r=dao,mixedpuppy draft
authorHector Zhao <bzhao@mozilla.com>
Tue, 06 Mar 2018 16:50:38 +0800
changeset 771500 381ce559b0d6158fd4ce95c91d652609d08369ae
parent 771499 f9aaaa4ee6bf005e40b6f9f88255c589d2695e74
child 771501 b9ed2788e672f628310575f8eddedadc5074bb7d
push id103692
push userbmo:bzhao@mozilla.com
push dateFri, 23 Mar 2018 05:10:09 +0000
reviewersdao, mixedpuppy
bugs1435142
milestone61.0a1
Bug 1435142 - Part 2: add a browser mochitest for closeTabByDblclick. r=dao,mixedpuppy MozReview-Commit-ID: 1UEnYflvtLw
browser/base/content/test/tabs/browser.ini
browser/base/content/test/tabs/browser_close_tab_by_dblclick.js
--- 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");
+});