diff --git a/browser/base/content/test/tabs/browser.ini b/browser/base/content/test/tabs/browser.ini index 8856b7bc79f9..6589a9a2d61d 100644 --- a/browser/base/content/test/tabs/browser.ini +++ b/browser/base/content/test/tabs/browser.ini @@ -7,6 +7,7 @@ support-files = [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 diff --git a/browser/base/content/test/tabs/browser_close_tab_by_dblclick.js b/browser/base/content/test/tabs/browser_close_tab_by_dblclick.js new file mode 100644 index 000000000000..54acf4673d70 --- /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"); +});