michael@0: /* This Source Code Form is subject to the terms of the Mozilla Public michael@0: * License, v. 2.0. If a copy of the MPL was not distributed with this michael@0: * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ michael@0: michael@0: "use strict"; michael@0: michael@0: // Restoring default should show an "undo" option which undoes the restoring operation. michael@0: add_task(function() { michael@0: let homeButtonId = "home-button"; michael@0: CustomizableUI.removeWidgetFromArea(homeButtonId); michael@0: yield startCustomizing(); michael@0: ok(!CustomizableUI.inDefaultState, "Not in default state to begin with"); michael@0: is(CustomizableUI.getPlacementOfWidget(homeButtonId), null, "Home button is in palette"); michael@0: let undoResetButton = document.getElementById("customization-undo-reset-button"); michael@0: is(undoResetButton.hidden, true, "The undo button is hidden before reset"); michael@0: michael@0: yield gCustomizeMode.reset(); michael@0: michael@0: ok(CustomizableUI.inDefaultState, "In default state after reset"); michael@0: is(undoResetButton.hidden, false, "The undo button is visible after reset"); michael@0: michael@0: undoResetButton.click(); michael@0: yield waitForCondition(function() !gCustomizeMode.resetting); michael@0: ok(!CustomizableUI.inDefaultState, "Not in default state after reset-undo"); michael@0: is(undoResetButton.hidden, true, "The undo button is hidden after clicking on the undo button"); michael@0: is(CustomizableUI.getPlacementOfWidget(homeButtonId), null, "Home button is in palette"); michael@0: michael@0: yield gCustomizeMode.reset(); michael@0: }); michael@0: michael@0: // Performing an action after a reset will hide the reset button. michael@0: add_task(function() { michael@0: let homeButtonId = "home-button"; michael@0: CustomizableUI.removeWidgetFromArea(homeButtonId); michael@0: ok(!CustomizableUI.inDefaultState, "Not in default state to begin with"); michael@0: is(CustomizableUI.getPlacementOfWidget(homeButtonId), null, "Home button is in palette"); michael@0: let undoResetButton = document.getElementById("customization-undo-reset-button"); michael@0: is(undoResetButton.hidden, true, "The undo button is hidden before reset"); michael@0: michael@0: yield gCustomizeMode.reset(); michael@0: michael@0: ok(CustomizableUI.inDefaultState, "In default state after reset"); michael@0: is(undoResetButton.hidden, false, "The undo button is visible after reset"); michael@0: michael@0: CustomizableUI.addWidgetToArea(homeButtonId, CustomizableUI.AREA_PANEL); michael@0: is(undoResetButton.hidden, true, "The undo button is hidden after another change"); michael@0: }); michael@0: michael@0: // "Restore defaults", exiting customize, and re-entering shouldn't show the Undo button michael@0: add_task(function() { michael@0: let undoResetButton = document.getElementById("customization-undo-reset-button"); michael@0: is(undoResetButton.hidden, true, "The undo button is hidden before a reset"); michael@0: ok(!CustomizableUI.inDefaultState, "The browser should not be in default state"); michael@0: yield gCustomizeMode.reset(); michael@0: michael@0: is(undoResetButton.hidden, false, "The undo button is visible after a reset"); michael@0: yield endCustomizing(); michael@0: yield startCustomizing(); michael@0: is(undoResetButton.hidden, true, "The undo reset button should be hidden after entering customization mode"); michael@0: }); michael@0: michael@0: // Bug 971626 - Restore Defaults should collapse the Title Bar michael@0: add_task(function() { michael@0: if (Services.appinfo.OS != "WINNT" && michael@0: Services.appinfo.OS != "Darwin") { michael@0: return; michael@0: } michael@0: let prefName = "browser.tabs.drawInTitlebar"; michael@0: let defaultValue = Services.prefs.getBoolPref(prefName); michael@0: let restoreDefaultsButton = document.getElementById("customization-reset-button"); michael@0: let titleBarButton = document.getElementById("customization-titlebar-visibility-button"); michael@0: let undoResetButton = document.getElementById("customization-undo-reset-button"); michael@0: ok(CustomizableUI.inDefaultState, "Should be in default state at start of test"); michael@0: ok(restoreDefaultsButton.disabled, "Restore defaults button should be disabled when in default state"); michael@0: is(titleBarButton.hasAttribute("checked"), !defaultValue, "Title bar button should reflect pref value"); michael@0: is(undoResetButton.hidden, true, "Undo reset button should be hidden at start of test"); michael@0: michael@0: Services.prefs.setBoolPref(prefName, !defaultValue); michael@0: ok(!restoreDefaultsButton.disabled, "Restore defaults button should be enabled when pref changed"); michael@0: is(titleBarButton.hasAttribute("checked"), defaultValue, "Title bar button should reflect changed pref value"); michael@0: ok(!CustomizableUI.inDefaultState, "With titlebar flipped, no longer default"); michael@0: is(undoResetButton.hidden, true, "Undo reset button should be hidden after pref change"); michael@0: michael@0: yield gCustomizeMode.reset(); michael@0: ok(restoreDefaultsButton.disabled, "Restore defaults button should be disabled after reset"); michael@0: is(titleBarButton.hasAttribute("checked"), !defaultValue, "Title bar button should reflect default value after reset"); michael@0: is(Services.prefs.getBoolPref(prefName), defaultValue, "Reset should reset drawInTitlebar"); michael@0: ok(CustomizableUI.inDefaultState, "In default state after titlebar reset"); michael@0: is(undoResetButton.hidden, false, "Undo reset button should be visible after reset"); michael@0: ok(!undoResetButton.disabled, "Undo reset button should be enabled after reset"); michael@0: michael@0: yield gCustomizeMode.undoReset(); michael@0: ok(!restoreDefaultsButton.disabled, "Restore defaults button should be enabled after undo-reset"); michael@0: is(titleBarButton.hasAttribute("checked"), defaultValue, "Title bar button should reflect undo-reset value"); michael@0: ok(!CustomizableUI.inDefaultState, "No longer in default state after undo"); michael@0: is(Services.prefs.getBoolPref(prefName), !defaultValue, "Undo-reset goes back to previous pref value"); michael@0: is(undoResetButton.hidden, true, "Undo reset button should be hidden after undo-reset clicked"); michael@0: michael@0: Services.prefs.clearUserPref(prefName); michael@0: ok(CustomizableUI.inDefaultState, "In default state after pref cleared"); michael@0: is(undoResetButton.hidden, true, "Undo reset button should be hidden at end of test"); michael@0: }); michael@0: michael@0: add_task(function asyncCleanup() { michael@0: yield gCustomizeMode.reset(); michael@0: yield endCustomizing(); michael@0: });