|
1 /* This Source Code Form is subject to the terms of the Mozilla Public |
|
2 * License, v. 2.0. If a copy of the MPL was not distributed with this |
|
3 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ |
|
4 |
|
5 "use strict"; |
|
6 |
|
7 // Restoring default should show an "undo" option which undoes the restoring operation. |
|
8 add_task(function() { |
|
9 let homeButtonId = "home-button"; |
|
10 CustomizableUI.removeWidgetFromArea(homeButtonId); |
|
11 yield startCustomizing(); |
|
12 ok(!CustomizableUI.inDefaultState, "Not in default state to begin with"); |
|
13 is(CustomizableUI.getPlacementOfWidget(homeButtonId), null, "Home button is in palette"); |
|
14 let undoResetButton = document.getElementById("customization-undo-reset-button"); |
|
15 is(undoResetButton.hidden, true, "The undo button is hidden before reset"); |
|
16 |
|
17 yield gCustomizeMode.reset(); |
|
18 |
|
19 ok(CustomizableUI.inDefaultState, "In default state after reset"); |
|
20 is(undoResetButton.hidden, false, "The undo button is visible after reset"); |
|
21 |
|
22 undoResetButton.click(); |
|
23 yield waitForCondition(function() !gCustomizeMode.resetting); |
|
24 ok(!CustomizableUI.inDefaultState, "Not in default state after reset-undo"); |
|
25 is(undoResetButton.hidden, true, "The undo button is hidden after clicking on the undo button"); |
|
26 is(CustomizableUI.getPlacementOfWidget(homeButtonId), null, "Home button is in palette"); |
|
27 |
|
28 yield gCustomizeMode.reset(); |
|
29 }); |
|
30 |
|
31 // Performing an action after a reset will hide the reset button. |
|
32 add_task(function() { |
|
33 let homeButtonId = "home-button"; |
|
34 CustomizableUI.removeWidgetFromArea(homeButtonId); |
|
35 ok(!CustomizableUI.inDefaultState, "Not in default state to begin with"); |
|
36 is(CustomizableUI.getPlacementOfWidget(homeButtonId), null, "Home button is in palette"); |
|
37 let undoResetButton = document.getElementById("customization-undo-reset-button"); |
|
38 is(undoResetButton.hidden, true, "The undo button is hidden before reset"); |
|
39 |
|
40 yield gCustomizeMode.reset(); |
|
41 |
|
42 ok(CustomizableUI.inDefaultState, "In default state after reset"); |
|
43 is(undoResetButton.hidden, false, "The undo button is visible after reset"); |
|
44 |
|
45 CustomizableUI.addWidgetToArea(homeButtonId, CustomizableUI.AREA_PANEL); |
|
46 is(undoResetButton.hidden, true, "The undo button is hidden after another change"); |
|
47 }); |
|
48 |
|
49 // "Restore defaults", exiting customize, and re-entering shouldn't show the Undo button |
|
50 add_task(function() { |
|
51 let undoResetButton = document.getElementById("customization-undo-reset-button"); |
|
52 is(undoResetButton.hidden, true, "The undo button is hidden before a reset"); |
|
53 ok(!CustomizableUI.inDefaultState, "The browser should not be in default state"); |
|
54 yield gCustomizeMode.reset(); |
|
55 |
|
56 is(undoResetButton.hidden, false, "The undo button is visible after a reset"); |
|
57 yield endCustomizing(); |
|
58 yield startCustomizing(); |
|
59 is(undoResetButton.hidden, true, "The undo reset button should be hidden after entering customization mode"); |
|
60 }); |
|
61 |
|
62 // Bug 971626 - Restore Defaults should collapse the Title Bar |
|
63 add_task(function() { |
|
64 if (Services.appinfo.OS != "WINNT" && |
|
65 Services.appinfo.OS != "Darwin") { |
|
66 return; |
|
67 } |
|
68 let prefName = "browser.tabs.drawInTitlebar"; |
|
69 let defaultValue = Services.prefs.getBoolPref(prefName); |
|
70 let restoreDefaultsButton = document.getElementById("customization-reset-button"); |
|
71 let titleBarButton = document.getElementById("customization-titlebar-visibility-button"); |
|
72 let undoResetButton = document.getElementById("customization-undo-reset-button"); |
|
73 ok(CustomizableUI.inDefaultState, "Should be in default state at start of test"); |
|
74 ok(restoreDefaultsButton.disabled, "Restore defaults button should be disabled when in default state"); |
|
75 is(titleBarButton.hasAttribute("checked"), !defaultValue, "Title bar button should reflect pref value"); |
|
76 is(undoResetButton.hidden, true, "Undo reset button should be hidden at start of test"); |
|
77 |
|
78 Services.prefs.setBoolPref(prefName, !defaultValue); |
|
79 ok(!restoreDefaultsButton.disabled, "Restore defaults button should be enabled when pref changed"); |
|
80 is(titleBarButton.hasAttribute("checked"), defaultValue, "Title bar button should reflect changed pref value"); |
|
81 ok(!CustomizableUI.inDefaultState, "With titlebar flipped, no longer default"); |
|
82 is(undoResetButton.hidden, true, "Undo reset button should be hidden after pref change"); |
|
83 |
|
84 yield gCustomizeMode.reset(); |
|
85 ok(restoreDefaultsButton.disabled, "Restore defaults button should be disabled after reset"); |
|
86 is(titleBarButton.hasAttribute("checked"), !defaultValue, "Title bar button should reflect default value after reset"); |
|
87 is(Services.prefs.getBoolPref(prefName), defaultValue, "Reset should reset drawInTitlebar"); |
|
88 ok(CustomizableUI.inDefaultState, "In default state after titlebar reset"); |
|
89 is(undoResetButton.hidden, false, "Undo reset button should be visible after reset"); |
|
90 ok(!undoResetButton.disabled, "Undo reset button should be enabled after reset"); |
|
91 |
|
92 yield gCustomizeMode.undoReset(); |
|
93 ok(!restoreDefaultsButton.disabled, "Restore defaults button should be enabled after undo-reset"); |
|
94 is(titleBarButton.hasAttribute("checked"), defaultValue, "Title bar button should reflect undo-reset value"); |
|
95 ok(!CustomizableUI.inDefaultState, "No longer in default state after undo"); |
|
96 is(Services.prefs.getBoolPref(prefName), !defaultValue, "Undo-reset goes back to previous pref value"); |
|
97 is(undoResetButton.hidden, true, "Undo reset button should be hidden after undo-reset clicked"); |
|
98 |
|
99 Services.prefs.clearUserPref(prefName); |
|
100 ok(CustomizableUI.inDefaultState, "In default state after pref cleared"); |
|
101 is(undoResetButton.hidden, true, "Undo reset button should be hidden at end of test"); |
|
102 }); |
|
103 |
|
104 add_task(function asyncCleanup() { |
|
105 yield gCustomizeMode.reset(); |
|
106 yield endCustomizing(); |
|
107 }); |