зеркало из https://github.com/mozilla/gecko-dev.git
Bug 948985 - ensure Australis' non-removable API-based widgets with a defaultArea work after destruction, r=Unfocused
--HG-- extra : rebase_source : 2f994be1ff635b6871ed45f0185edcae8141cdcf
This commit is contained in:
Родитель
c471ec25c8
Коммит
856bcca684
|
@ -1695,7 +1695,10 @@ let CustomizableUIInternal = {
|
|||
|
||||
// If the widget doesn't have an existing placement, and it hasn't been
|
||||
// seen before, then add it to its default area so it can be used.
|
||||
if (autoAdd && !widget.currentArea && !gSeenWidgets.has(widget.id)) {
|
||||
// If the widget is not removable, we *have* to add it to its default
|
||||
// area here.
|
||||
let canBeAutoAdded = autoAdd && !gSeenWidgets.has(widget.id);
|
||||
if (!widget.currentArea && (!widget.removable || canBeAutoAdded)) {
|
||||
this.beginBatchUpdate();
|
||||
try {
|
||||
gSeenWidgets.add(widget.id);
|
||||
|
|
|
@ -48,4 +48,5 @@ skip-if = os == "mac"
|
|||
[browser_944887_destroyWidget_should_destroy_in_palette.js]
|
||||
[browser_945739_showInPrivateBrowsing_customize_mode.js]
|
||||
[browser_947987_removable_default.js]
|
||||
[browser_948985_non_removable_defaultArea.js]
|
||||
[browser_panel_toggle.js]
|
||||
|
|
|
@ -0,0 +1,32 @@
|
|||
/* This Source Code Form is subject to the terms of the Mozilla Public
|
||||
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
||||
|
||||
const kWidgetId = "test-destroy-non-removable-defaultArea";
|
||||
|
||||
add_task(function() {
|
||||
let spec = {id: kWidgetId, label: "Test non-removable defaultArea re-adding.",
|
||||
removable: false, defaultArea: CustomizableUI.AREA_NAVBAR};
|
||||
CustomizableUI.createWidget(spec);
|
||||
let placement = CustomizableUI.getPlacementOfWidget(kWidgetId);
|
||||
ok(placement, "Should have placed the widget.");
|
||||
is(placement && placement.area, CustomizableUI.AREA_NAVBAR, "Widget should be in navbar");
|
||||
CustomizableUI.destroyWidget(kWidgetId);
|
||||
CustomizableUI.removeWidgetFromArea(kWidgetId);
|
||||
|
||||
CustomizableUI.createWidget(spec);
|
||||
ok(placement, "Should have placed the widget.");
|
||||
is(placement && placement.area, CustomizableUI.AREA_NAVBAR, "Widget should be in navbar");
|
||||
CustomizableUI.destroyWidget(kWidgetId);
|
||||
CustomizableUI.removeWidgetFromArea(kWidgetId);
|
||||
|
||||
const kPrefCustomizationAutoAdd = "browser.uiCustomization.autoAdd";
|
||||
Services.prefs.setBoolPref(kPrefCustomizationAutoAdd, false);
|
||||
CustomizableUI.createWidget(spec);
|
||||
ok(placement, "Should have placed the widget.");
|
||||
is(placement && placement.area, CustomizableUI.AREA_NAVBAR, "Widget should be in navbar");
|
||||
CustomizableUI.destroyWidget(kWidgetId);
|
||||
CustomizableUI.removeWidgetFromArea(kWidgetId);
|
||||
Services.prefs.clearUserPref(kPrefCustomizationAutoAdd);
|
||||
});
|
||||
|
Загрузка…
Ссылка в новой задаче