summaryrefslogtreecommitdiffstats
path: root/browser/components/tests/browser/browser_quit_disabled.js
diff options
context:
space:
mode:
Diffstat (limited to 'browser/components/tests/browser/browser_quit_disabled.js')
-rw-r--r--browser/components/tests/browser/browser_quit_disabled.js62
1 files changed, 62 insertions, 0 deletions
diff --git a/browser/components/tests/browser/browser_quit_disabled.js b/browser/components/tests/browser/browser_quit_disabled.js
new file mode 100644
index 0000000000..3b7e99a1bf
--- /dev/null
+++ b/browser/components/tests/browser/browser_quit_disabled.js
@@ -0,0 +1,62 @@
+/* Any copyright is dedicated to the Public Domain.
+ * http://creativecommons.org/publicdomain/zero/1.0/ */
+
+add_task(async function test_appMenu_quit_disabled() {
+ await SpecialPowers.pushPrefEnv({
+ set: [["browser.quitShortcut.disabled", true]],
+ });
+
+ let win = await BrowserTestUtils.openNewBrowserWindow();
+ let doc = win.document;
+
+ let menuButton = doc.getElementById("PanelUI-menu-button");
+ menuButton.click();
+ await BrowserTestUtils.waitForEvent(win.PanelUI.mainView, "ViewShown");
+
+ let quitButton = doc.querySelector(`[key="key_quitApplication"]`);
+ is(quitButton, null, "No quit button with shortcut key");
+
+ await BrowserTestUtils.closeWindow(win);
+
+ await SpecialPowers.popPrefEnv();
+});
+
+add_task(async function test_quit_shortcut_disabled() {
+ async function testQuitShortcut(shouldQuit) {
+ let win = await BrowserTestUtils.openNewBrowserWindow();
+
+ let quitRequested = false;
+ let observer = {
+ observe(subject, topic, data) {
+ is(topic, "quit-application-requested", "Right observer topic");
+ ok(shouldQuit, "Quit shortcut should NOT have worked");
+
+ // Don't actually quit the browser when testing.
+ let cancelQuit = subject.QueryInterface(Ci.nsISupportsPRBool);
+ cancelQuit.data = true;
+
+ quitRequested = true;
+ },
+ };
+ Services.obs.addObserver(observer, "quit-application-requested");
+
+ let modifiers = { accelKey: true };
+ if (AppConstants.platform == "win") {
+ modifiers.shiftKey = true;
+ }
+ EventUtils.synthesizeKey("q", modifiers, win);
+
+ await BrowserTestUtils.closeWindow(win);
+ Services.obs.removeObserver(observer, "quit-application-requested");
+
+ is(quitRequested, shouldQuit, "Expected quit state");
+ }
+
+ // Quit shortcut should work when pref is not set.
+ await testQuitShortcut(true);
+
+ await SpecialPowers.pushPrefEnv({
+ set: [["browser.quitShortcut.disabled", true]],
+ });
+ await testQuitShortcut(false);
+});