1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
|
"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(
"save-page-button",
CustomizableUI.AREA_NAVBAR
);
let gFuturePlacements =
CustomizableUI.getTestOnlyInternalProp("gFuturePlacements");
is(
gFuturePlacements.size,
0,
"All future placements should be dealt with by now."
);
let CustomizableUIInternal = CustomizableUI.getTestOnlyInternalProp(
"CustomizableUIInternal"
);
// Force us to have a saved state:
CustomizableUIInternal.saveState();
CustomizableUIInternal.loadSavedState();
CustomizableUIInternal._updateForNewVersion();
is(gFuturePlacements.size, 0, "No change to future placements initially.");
// Add our widget to the defaults:
let testWidgetNew = {
id: "test-messing-with-default-placements-new-pref",
label: "Test messing with default placements - pref-based",
defaultArea: CustomizableUI.AREA_NAVBAR,
introducedInVersion: "pref",
};
let normalizedWidget = CustomizableUIInternal.normalizeWidget(
testWidgetNew,
CustomizableUI.SOURCE_BUILTIN
);
ok(normalizedWidget, "Widget should be normalizable");
if (!normalizedWidget) {
return;
}
let gPalette = CustomizableUI.getTestOnlyInternalProp("gPalette");
gPalette.set(testWidgetNew.id, normalizedWidget);
// Now adjust default placements for area:
let navbarArea = CustomizableUI.getTestOnlyInternalProp("gAreas").get(
CustomizableUI.AREA_NAVBAR
);
let navbarPlacements = navbarArea.get("defaultPlacements");
navbarPlacements.splice(
navbarPlacements.indexOf("bookmarks-menu-button") + 1,
0,
testWidgetNew.id
);
let savedPlacements =
CustomizableUI.getTestOnlyInternalProp("gSavedState").placements[
CustomizableUI.AREA_NAVBAR
];
// 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 futureNavbarPlacements = gFuturePlacements.get(
CustomizableUI.AREA_NAVBAR
);
ok(futureNavbarPlacements, "Should have placements for nav-bar");
if (futureNavbarPlacements) {
ok(
futureNavbarPlacements.has(testWidgetNew.id),
"widget should be in future placements"
);
}
CustomizableUIInternal._placeNewDefaultWidgetsInArea(
CustomizableUI.AREA_NAVBAR
);
let indexInSavedPlacements = savedPlacements.indexOf(testWidgetNew.id);
info("Saved placements: " + savedPlacements.join(", "));
isnot(indexInSavedPlacements, -1, "Widget should have been inserted");
is(
indexInSavedPlacements,
savedPlacements.indexOf("bookmarks-menu-button") + 1,
"Widget should be in the right place."
);
if (futureNavbarPlacements) {
ok(
!futureNavbarPlacements.has(testWidgetNew.id),
"widget should be out of future placements"
);
}
if (indexInSavedPlacements != -1) {
savedPlacements.splice(indexInSavedPlacements, 1);
}
gFuturePlacements.delete(CustomizableUI.AREA_NAVBAR);
let indexInDefaultPlacements = navbarPlacements.indexOf(testWidgetNew.id);
if (indexInDefaultPlacements != -1) {
navbarPlacements.splice(indexInDefaultPlacements, 1);
}
gPalette.delete(testWidgetNew.id);
CustomizableUI.reset();
}
|