/* 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/. */ "use strict"; const PREF_DRAG_SPACE = "browser.tabs.extraDragSpace"; add_task(async function setup() { await startCustomizing(); }); add_task(async function test_dragspace_checkbox() { let win = document.getElementById("main-window"); let checkbox = document.getElementById( "customization-extra-drag-space-checkbox" ); is( Services.prefs.getBoolPref(PREF_DRAG_SPACE), false, "Drag space is disabled initially." ); ok(!checkbox.checked, "Checkbox state reflects disabled drag space."); let dragSpaceEnabled = BrowserTestUtils.waitForAttribute( "extradragspace", win, "true" ); EventUtils.synthesizeMouseAtCenter(checkbox, {}); await dragSpaceEnabled; is( Services.prefs.getBoolPref(PREF_DRAG_SPACE), true, "Drag space is enabled." ); EventUtils.synthesizeMouseAtCenter(checkbox, {}); await BrowserTestUtils.waitForCondition( () => !win.hasAttribute("extradragspace") ); is( Services.prefs.getBoolPref(PREF_DRAG_SPACE), false, "Drag space is disabled." ); }); add_task(async function test_dragspace_checkbox_disable() { let dragSpaceCheckbox = document.getElementById( "customization-extra-drag-space-checkbox" ); let titleBarCheckbox = document.getElementById( "customization-titlebar-visibility-checkbox" ); ok(!titleBarCheckbox.checked, "Title bar is disabled initially."); ok( !dragSpaceCheckbox.hasAttribute("disabled"), "Drag space checkbox is enabled initially." ); let checkboxDisabled = BrowserTestUtils.waitForAttribute( "disabled", dragSpaceCheckbox, "true" ); EventUtils.synthesizeMouseAtCenter(titleBarCheckbox, {}); await checkboxDisabled; info("Checkbox was disabled!"); EventUtils.synthesizeMouseAtCenter(titleBarCheckbox, {}); await BrowserTestUtils.waitForCondition( () => !dragSpaceCheckbox.hasAttribute("disabled") ); info("Checkbox was enabled!"); }); add_task(async function test_dragspace_reset() { let win = document.getElementById("main-window"); let checkbox = document.getElementById( "customization-extra-drag-space-checkbox" ); is( Services.prefs.getBoolPref(PREF_DRAG_SPACE), false, "Drag space is disabled initially." ); ok(!checkbox.checked, "Checkbox state reflects disabled drag space."); // Enable dragspace manually. let dragSpaceEnabled = BrowserTestUtils.waitForAttribute( "extradragspace", win, "true" ); EventUtils.synthesizeMouseAtCenter(checkbox, {}); await dragSpaceEnabled; is( Services.prefs.getBoolPref(PREF_DRAG_SPACE), true, "Drag space is enabled." ); // Disable dragspace through reset. await gCustomizeMode.reset(); await BrowserTestUtils.waitForCondition( () => !win.hasAttribute("extradragspace") ); is( Services.prefs.getBoolPref(PREF_DRAG_SPACE), false, "Drag space is disabled." ); // Undo reset and check that dragspace is enabled again. dragSpaceEnabled = BrowserTestUtils.waitForAttribute( "extradragspace", win, "true" ); await gCustomizeMode.undoReset(); await dragSpaceEnabled; is( Services.prefs.getBoolPref(PREF_DRAG_SPACE), true, "Drag space is enabled." ); Services.prefs.clearUserPref(PREF_DRAG_SPACE); }); add_task(async function cleanup() { await endCustomizing(); Services.prefs.clearUserPref(PREF_DRAG_SPACE); });