tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

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 });