1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/browser/components/customizableui/test/browser_970511_undo_restore_default.js Wed Dec 31 06:09:35 2014 +0100 1.3 @@ -0,0 +1,107 @@ 1.4 +/* This Source Code Form is subject to the terms of the Mozilla Public 1.5 + * License, v. 2.0. If a copy of the MPL was not distributed with this 1.6 + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ 1.7 + 1.8 +"use strict"; 1.9 + 1.10 +// Restoring default should show an "undo" option which undoes the restoring operation. 1.11 +add_task(function() { 1.12 + let homeButtonId = "home-button"; 1.13 + CustomizableUI.removeWidgetFromArea(homeButtonId); 1.14 + yield startCustomizing(); 1.15 + ok(!CustomizableUI.inDefaultState, "Not in default state to begin with"); 1.16 + is(CustomizableUI.getPlacementOfWidget(homeButtonId), null, "Home button is in palette"); 1.17 + let undoResetButton = document.getElementById("customization-undo-reset-button"); 1.18 + is(undoResetButton.hidden, true, "The undo button is hidden before reset"); 1.19 + 1.20 + yield gCustomizeMode.reset(); 1.21 + 1.22 + ok(CustomizableUI.inDefaultState, "In default state after reset"); 1.23 + is(undoResetButton.hidden, false, "The undo button is visible after reset"); 1.24 + 1.25 + undoResetButton.click(); 1.26 + yield waitForCondition(function() !gCustomizeMode.resetting); 1.27 + ok(!CustomizableUI.inDefaultState, "Not in default state after reset-undo"); 1.28 + is(undoResetButton.hidden, true, "The undo button is hidden after clicking on the undo button"); 1.29 + is(CustomizableUI.getPlacementOfWidget(homeButtonId), null, "Home button is in palette"); 1.30 + 1.31 + yield gCustomizeMode.reset(); 1.32 +}); 1.33 + 1.34 +// Performing an action after a reset will hide the reset button. 1.35 +add_task(function() { 1.36 + let homeButtonId = "home-button"; 1.37 + CustomizableUI.removeWidgetFromArea(homeButtonId); 1.38 + ok(!CustomizableUI.inDefaultState, "Not in default state to begin with"); 1.39 + is(CustomizableUI.getPlacementOfWidget(homeButtonId), null, "Home button is in palette"); 1.40 + let undoResetButton = document.getElementById("customization-undo-reset-button"); 1.41 + is(undoResetButton.hidden, true, "The undo button is hidden before reset"); 1.42 + 1.43 + yield gCustomizeMode.reset(); 1.44 + 1.45 + ok(CustomizableUI.inDefaultState, "In default state after reset"); 1.46 + is(undoResetButton.hidden, false, "The undo button is visible after reset"); 1.47 + 1.48 + CustomizableUI.addWidgetToArea(homeButtonId, CustomizableUI.AREA_PANEL); 1.49 + is(undoResetButton.hidden, true, "The undo button is hidden after another change"); 1.50 +}); 1.51 + 1.52 +// "Restore defaults", exiting customize, and re-entering shouldn't show the Undo button 1.53 +add_task(function() { 1.54 + let undoResetButton = document.getElementById("customization-undo-reset-button"); 1.55 + is(undoResetButton.hidden, true, "The undo button is hidden before a reset"); 1.56 + ok(!CustomizableUI.inDefaultState, "The browser should not be in default state"); 1.57 + yield gCustomizeMode.reset(); 1.58 + 1.59 + is(undoResetButton.hidden, false, "The undo button is visible after a reset"); 1.60 + yield endCustomizing(); 1.61 + yield startCustomizing(); 1.62 + is(undoResetButton.hidden, true, "The undo reset button should be hidden after entering customization mode"); 1.63 +}); 1.64 + 1.65 +// Bug 971626 - Restore Defaults should collapse the Title Bar 1.66 +add_task(function() { 1.67 + if (Services.appinfo.OS != "WINNT" && 1.68 + Services.appinfo.OS != "Darwin") { 1.69 + return; 1.70 + } 1.71 + let prefName = "browser.tabs.drawInTitlebar"; 1.72 + let defaultValue = Services.prefs.getBoolPref(prefName); 1.73 + let restoreDefaultsButton = document.getElementById("customization-reset-button"); 1.74 + let titleBarButton = document.getElementById("customization-titlebar-visibility-button"); 1.75 + let undoResetButton = document.getElementById("customization-undo-reset-button"); 1.76 + ok(CustomizableUI.inDefaultState, "Should be in default state at start of test"); 1.77 + ok(restoreDefaultsButton.disabled, "Restore defaults button should be disabled when in default state"); 1.78 + is(titleBarButton.hasAttribute("checked"), !defaultValue, "Title bar button should reflect pref value"); 1.79 + is(undoResetButton.hidden, true, "Undo reset button should be hidden at start of test"); 1.80 + 1.81 + Services.prefs.setBoolPref(prefName, !defaultValue); 1.82 + ok(!restoreDefaultsButton.disabled, "Restore defaults button should be enabled when pref changed"); 1.83 + is(titleBarButton.hasAttribute("checked"), defaultValue, "Title bar button should reflect changed pref value"); 1.84 + ok(!CustomizableUI.inDefaultState, "With titlebar flipped, no longer default"); 1.85 + is(undoResetButton.hidden, true, "Undo reset button should be hidden after pref change"); 1.86 + 1.87 + yield gCustomizeMode.reset(); 1.88 + ok(restoreDefaultsButton.disabled, "Restore defaults button should be disabled after reset"); 1.89 + is(titleBarButton.hasAttribute("checked"), !defaultValue, "Title bar button should reflect default value after reset"); 1.90 + is(Services.prefs.getBoolPref(prefName), defaultValue, "Reset should reset drawInTitlebar"); 1.91 + ok(CustomizableUI.inDefaultState, "In default state after titlebar reset"); 1.92 + is(undoResetButton.hidden, false, "Undo reset button should be visible after reset"); 1.93 + ok(!undoResetButton.disabled, "Undo reset button should be enabled after reset"); 1.94 + 1.95 + yield gCustomizeMode.undoReset(); 1.96 + ok(!restoreDefaultsButton.disabled, "Restore defaults button should be enabled after undo-reset"); 1.97 + is(titleBarButton.hasAttribute("checked"), defaultValue, "Title bar button should reflect undo-reset value"); 1.98 + ok(!CustomizableUI.inDefaultState, "No longer in default state after undo"); 1.99 + is(Services.prefs.getBoolPref(prefName), !defaultValue, "Undo-reset goes back to previous pref value"); 1.100 + is(undoResetButton.hidden, true, "Undo reset button should be hidden after undo-reset clicked"); 1.101 + 1.102 + Services.prefs.clearUserPref(prefName); 1.103 + ok(CustomizableUI.inDefaultState, "In default state after pref cleared"); 1.104 + is(undoResetButton.hidden, true, "Undo reset button should be hidden at end of test"); 1.105 +}); 1.106 + 1.107 +add_task(function asyncCleanup() { 1.108 + yield gCustomizeMode.reset(); 1.109 + yield endCustomizing(); 1.110 +});