browser_989338_saved_placements_not_resaved.js (2497B)
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 const BUTTONID = "test-widget-saved-earlier"; 8 const AREAID = "test-area-saved-earlier"; 9 10 var hadSavedState; 11 function test() { 12 let gSavedState = CustomizableUI.getTestOnlyInternalProp("gSavedState"); 13 hadSavedState = gSavedState != null; 14 if (!hadSavedState) { 15 gSavedState = { placements: {} }; 16 CustomizableUI.setTestOnlyInternalProp("gSavedState", gSavedState); 17 } 18 gSavedState.placements[AREAID] = [BUTTONID]; 19 // Put bogus stuff in the saved state for the nav-bar, so as to check the current placements 20 // override this one... 21 gSavedState.placements[CustomizableUI.AREA_NAVBAR] = ["bogus-navbar-item"]; 22 23 CustomizableUI.setTestOnlyInternalProp("gDirty", true); 24 CustomizableUI.getTestOnlyInternalProp("CustomizableUIInternal").saveState(); 25 26 let newSavedState = JSON.parse( 27 Services.prefs.getCharPref("browser.uiCustomization.state") 28 ); 29 let savedArea = Array.isArray(newSavedState.placements[AREAID]); 30 ok( 31 savedArea, 32 "Should have re-saved the state, even though the area isn't registered" 33 ); 34 35 if (savedArea) { 36 placementArraysEqual(AREAID, newSavedState.placements[AREAID], [BUTTONID]); 37 } 38 ok( 39 !CustomizableUI.getTestOnlyInternalProp("gPlacements").has(AREAID), 40 "Placements map shouldn't have been affected" 41 ); 42 43 let savedNavbar = Array.isArray( 44 newSavedState.placements[CustomizableUI.AREA_NAVBAR] 45 ); 46 ok(savedNavbar, "Should have saved nav-bar contents"); 47 if (savedNavbar) { 48 placementArraysEqual( 49 CustomizableUI.AREA_NAVBAR, 50 newSavedState.placements[CustomizableUI.AREA_NAVBAR], 51 CustomizableUI.getWidgetIdsInArea(CustomizableUI.AREA_NAVBAR) 52 ); 53 } 54 } 55 56 registerCleanupFunction(function () { 57 if (!hadSavedState) { 58 CustomizableUI.setTestOnlyInternalProp("gSavedState", null); 59 } else { 60 let gSavedState = CustomizableUI.getTestOnlyInternalProp("gSavedState"); 61 let savedPlacements = gSavedState.placements; 62 delete savedPlacements[AREAID]; 63 let realNavBarPlacements = CustomizableUI.getWidgetIdsInArea( 64 CustomizableUI.AREA_NAVBAR 65 ); 66 savedPlacements[CustomizableUI.AREA_NAVBAR] = realNavBarPlacements; 67 } 68 CustomizableUI.setTestOnlyInternalProp("gDirty", true); 69 CustomizableUI.getTestOnlyInternalProp("CustomizableUIInternal").saveState(); 70 });