fune/browser/components/customizableui/test/browser_1042100_default_placements_update.js
Kris Maglione 918ed6c474 Bug 1431533: Part 5a - Auto-rewrite code to use ChromeUtils import methods. r=florian
This was done using the following script:
37e3803c7a/processors/chromeutils-import.jsm

MozReview-Commit-ID: 1Nc3XDu0wGl

--HG--
extra : source : 12fc4dee861c812fd2bd032c63ef17af61800c70
extra : intermediate-source : 34c999fa006bffe8705cf50c54708aa21a962e62
extra : histedit_source : b2be2c5e5d226e6c347312456a6ae339c1e634b0
2018-01-29 15:20:18 -08:00

180 lines
7.2 KiB
JavaScript

/* Any copyright is dedicated to the Public Domain.
* http://creativecommons.org/publicdomain/zero/1.0/ */
"use strict";
// NB: This uses some ugly hacks to get into the CUI module from elsewhere...
// don't try this at home, kids.
function test() {
// Customize something to make sure stuff changed:
CustomizableUI.addWidgetToArea("feed-button", CustomizableUI.AREA_NAVBAR);
// Check what version we're on:
let CustomizableUIBSPass = ChromeUtils.import("resource:///modules/CustomizableUI.jsm", {});
let oldState = CustomizableUIBSPass.gSavedState;
registerCleanupFunction(() => CustomizableUIBSPass.gSavedState = oldState );
is(CustomizableUIBSPass.gFuturePlacements.size, 0,
"All future placements should be dealt with by now.");
let {CustomizableUIInternal, gFuturePlacements, gPalette} = CustomizableUIBSPass;
CustomizableUIInternal._updateForNewVersion();
is(gFuturePlacements.size, 0,
"No change to future placements initially.");
let currentVersion = CustomizableUIBSPass.kVersion;
// Add our widget to the defaults:
let testWidgetNew = {
id: "test-messing-with-default-placements-new",
label: "Test messing with default placements - should be inserted",
defaultArea: CustomizableUI.AREA_NAVBAR,
introducedInVersion: currentVersion + 1,
};
let normalizedWidget = CustomizableUIInternal.normalizeWidget(testWidgetNew,
CustomizableUI.SOURCE_BUILTIN);
ok(normalizedWidget, "Widget should be normalizable");
if (!normalizedWidget) {
return;
}
CustomizableUIBSPass.gPalette.set(testWidgetNew.id, normalizedWidget);
let testWidgetOld = {
id: "test-messing-with-default-placements-old",
label: "Test messing with default placements - should NOT be inserted",
defaultArea: CustomizableUI.AREA_NAVBAR,
introducedInVersion: currentVersion,
};
normalizedWidget = CustomizableUIInternal.normalizeWidget(testWidgetOld,
CustomizableUI.SOURCE_BUILTIN);
ok(normalizedWidget, "Widget should be normalizable");
if (!normalizedWidget) {
return;
}
CustomizableUIBSPass.gPalette.set(testWidgetOld.id, normalizedWidget);
// Now increase the version in the module:
CustomizableUIBSPass.kVersion++;
let hadSavedState = !!CustomizableUIBSPass.gSavedState;
if (!hadSavedState) {
CustomizableUIBSPass.gSavedState = {currentVersion: CustomizableUIBSPass.kVersion - 1};
}
// Then call the re-init routine so we re-add the builtin widgets
CustomizableUIInternal._updateForNewVersion();
is(gFuturePlacements.size, 1,
"Should have 1 more future placement");
let haveNavbarPlacements = gFuturePlacements.has(CustomizableUI.AREA_NAVBAR);
ok(haveNavbarPlacements, "Should have placements for nav-bar");
if (haveNavbarPlacements) {
let placements = [...gFuturePlacements.get(CustomizableUI.AREA_NAVBAR)];
// Ignore widgets that are placed using the pref facility and not the
// versioned facility. They're independent of kVersion and the saved
// state's current version, so they may be present in the placements.
for (let i = 0; i < placements.length; ) {
if (placements[i] == testWidgetNew.id) {
i++;
continue;
}
let pref = "browser.toolbarbuttons.introduced." + placements[i];
let introduced = Services.prefs.getBoolPref(pref, false);
if (!introduced) {
i++;
continue;
}
placements.splice(i, 1);
}
is(placements.length, 1, "Should have 1 newly placed widget in nav-bar");
is(placements[0], testWidgetNew.id, "Should have our test widget to be placed in nav-bar");
}
// Reset kVersion
CustomizableUIBSPass.kVersion--;
// Now test that the builtin photon migrations work:
CustomizableUIBSPass.gSavedState = {
currentVersion: 6,
placements: {
"nav-bar": ["urlbar-container", "bookmarks-menu-button"],
"PanelUI-contents": ["panic-button", "edit-controls"],
},
};
CustomizableUIInternal._updateForNewVersion();
let navbarPlacements = CustomizableUIBSPass.gSavedState.placements["nav-bar"];
let springs = navbarPlacements.filter(id => id.includes("spring"));
is(springs.length, 2, "Should have 2 toolbarsprings in placements now");
navbarPlacements = navbarPlacements.filter(id => !id.includes("spring"));
is(navbarPlacements[0], "back-button", "Back button is in the right place.");
is(navbarPlacements[1], "forward-button", "Fwd button is in the right place.");
is(navbarPlacements[2], "stop-reload-button", "Stop/reload button is in the right place.");
is(navbarPlacements[3], "home-button", "Home button is in the right place.");
is(navbarPlacements[4], "urlbar-container", "URL bar is in the right place.");
is(navbarPlacements[5], "downloads-button", "Downloads button is in the right place.");
is(navbarPlacements[6], "library-button", "Library button is in the right place.");
is(navbarPlacements[7], "sidebar-button", "Sidebar button is in the right place.");
is(navbarPlacements.length, 8, "Should have 8 items");
let overflowPlacements = CustomizableUIBSPass.gSavedState.placements["widget-overflow-fixed-list"];
Assert.deepEqual(overflowPlacements, ["panic-button"]);
// Finally test that the downloads migration works:
let oldNavbarPlacements = [
"urlbar-container", "customizableui-special-spring3", "search-container",
];
CustomizableUIBSPass.gSavedState = {
currentVersion: 10,
placements: {
"nav-bar": Array.from(oldNavbarPlacements),
"widget-overflow-fixed-list": ["downloads-button"],
},
};
CustomizableUIInternal._updateForNewVersion();
navbarPlacements = CustomizableUIBSPass.gSavedState.placements["nav-bar"];
Assert.deepEqual(navbarPlacements, oldNavbarPlacements.concat(["downloads-button"]),
"Downloads button inserted in navbar");
Assert.deepEqual(CustomizableUIBSPass.gSavedState.placements["widget-overflow-fixed-list"], [],
"Overflow panel is empty");
CustomizableUIBSPass.gSavedState = {
currentVersion: 10,
placements: {
"nav-bar": ["downloads-button"].concat(oldNavbarPlacements),
},
};
CustomizableUIInternal._updateForNewVersion();
navbarPlacements = CustomizableUIBSPass.gSavedState.placements["nav-bar"];
Assert.deepEqual(navbarPlacements, oldNavbarPlacements.concat(["downloads-button"]),
"Downloads button reinserted in navbar");
oldNavbarPlacements = [
"urlbar-container", "customizableui-special-spring3", "search-container", "other-widget",
];
CustomizableUIBSPass.gSavedState = {
currentVersion: 10,
placements: {
"nav-bar": Array.from(oldNavbarPlacements),
},
};
CustomizableUIInternal._updateForNewVersion();
navbarPlacements = CustomizableUIBSPass.gSavedState.placements["nav-bar"];
let expectedNavbarPlacements = [
"urlbar-container", "customizableui-special-spring3", "search-container",
"downloads-button", "other-widget",
];
Assert.deepEqual(navbarPlacements, expectedNavbarPlacements,
"Downloads button inserted in navbar before other widgets");
gFuturePlacements.delete(CustomizableUI.AREA_NAVBAR);
gPalette.delete(testWidgetNew.id);
gPalette.delete(testWidgetOld.id);
}