mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-28 12:45:27 +00:00
Bug 1397447 - ensure the button is in the navbar by default, r=mak
MozReview-Commit-ID: H6r3dAEg4r1 --HG-- extra : rebase_source : fdb9b8d65745a57e3ac1ffa71cce10654032b177
This commit is contained in:
parent
ecf2be01ab
commit
3f3bcb5b73
@ -58,7 +58,7 @@ const kSubviewEvents = [
|
||||
* The current version. We can use this to auto-add new default widgets as necessary.
|
||||
* (would be const but isn't because of testing purposes)
|
||||
*/
|
||||
var kVersion = 10;
|
||||
var kVersion = 11;
|
||||
|
||||
/**
|
||||
* Buttons removed from built-ins by version they were removed. kVersion must be
|
||||
@ -318,7 +318,7 @@ var CustomizableUIInternal = {
|
||||
CustomizableUI.removeWidgetFromArea("loop-button-throttled");
|
||||
}
|
||||
|
||||
if (currentVersion < 7 && gSavedState && gSavedState.placements &&
|
||||
if (currentVersion < 7 && gSavedState.placements &&
|
||||
gSavedState.placements[CustomizableUI.AREA_NAVBAR]) {
|
||||
let placements = gSavedState.placements[CustomizableUI.AREA_NAVBAR];
|
||||
let newPlacements = ["back-button", "forward-button", "stop-reload-button", "home-button"];
|
||||
@ -408,7 +408,7 @@ var CustomizableUIInternal = {
|
||||
}
|
||||
}
|
||||
|
||||
if (currentVersion < 10 && gSavedState && gSavedState.placements) {
|
||||
if (currentVersion < 10 && gSavedState.placements) {
|
||||
for (let placements of Object.values(gSavedState.placements)) {
|
||||
if (placements.includes("webcompat-reporter-button")) {
|
||||
placements.splice(placements.indexOf("webcompat-reporter-button"), 1);
|
||||
@ -416,6 +416,37 @@ var CustomizableUIInternal = {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Move the downloads button to the default position in the navbar if it's
|
||||
// not there already.
|
||||
if (currentVersion < 11 && gSavedState.placements) {
|
||||
let navbarPlacements = gSavedState.placements[CustomizableUI.AREA_NAVBAR];
|
||||
// First remove from wherever it currently lives, if anywhere:
|
||||
for (let placements of Object.values(gSavedState.placements)) {
|
||||
let existingIndex = placements.indexOf("downloads-button");
|
||||
if (existingIndex != -1) {
|
||||
placements.splice(existingIndex, 1);
|
||||
break; // It can only be in 1 place, so no point looking elsewhere.
|
||||
}
|
||||
}
|
||||
|
||||
// Now put the button in the navbar in the correct spot:
|
||||
if (navbarPlacements) {
|
||||
let insertionPoint = navbarPlacements.indexOf("urlbar-container");
|
||||
// Deliberately iterate to 1 past the end of the array to insert at the
|
||||
// end if need be.
|
||||
while (++insertionPoint < navbarPlacements.length) {
|
||||
let widget = navbarPlacements[insertionPoint];
|
||||
// If we find a non-searchbar, non-spacer node, break out of the loop:
|
||||
if (widget != "search-container" && !this.matchingSpecials(widget, "spring")) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
// We either found the right spot, or reached the end of the
|
||||
// placements, so insert here:
|
||||
navbarPlacements.splice(insertionPoint, 0, "downloads-button");
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
/**
|
||||
|
@ -96,9 +96,11 @@ function test() {
|
||||
is(placements[0], testWidgetNew.id, "Should have our test widget to be placed in nav-bar");
|
||||
}
|
||||
|
||||
// Now test that the builtin photon migrations work:
|
||||
// Reset kVersion
|
||||
CustomizableUIBSPass.kVersion--;
|
||||
|
||||
// Now test that the builtin photon migrations work:
|
||||
|
||||
CustomizableUIBSPass.gSavedState = {
|
||||
currentVersion: 6,
|
||||
placements: {
|
||||
@ -116,13 +118,61 @@ function test() {
|
||||
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], "library-button", "Library button is in the right place.");
|
||||
is(navbarPlacements[6], "sidebar-button", "Sidebar button is in the right place.");
|
||||
is(navbarPlacements.length, 7, "Should have 7 items");
|
||||
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);
|
||||
|
Loading…
Reference in New Issue
Block a user