mirror of
				https://github.com/mozilla/gecko-dev.git
				synced 2025-11-04 10:18:41 +02:00 
			
		
		
		
	
		
			
				
	
	
		
			81 lines
		
	
	
	
		
			2.4 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			81 lines
		
	
	
	
		
			2.4 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
/* 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/. */
 | 
						|
 | 
						|
"use strict";
 | 
						|
 | 
						|
requestLongerTimeout(2);
 | 
						|
 | 
						|
const kTestBarID = "testBar";
 | 
						|
const kWidgetID = "characterencoding-button";
 | 
						|
 | 
						|
function createTestBar() {
 | 
						|
  let testBar = document.createXULElement("toolbar");
 | 
						|
  testBar.id = kTestBarID;
 | 
						|
  testBar.setAttribute("customizable", "true");
 | 
						|
  CustomizableUI.registerArea(kTestBarID, {
 | 
						|
    type: CustomizableUI.TYPE_TOOLBAR,
 | 
						|
  });
 | 
						|
  gNavToolbox.appendChild(testBar);
 | 
						|
  CustomizableUI.registerToolbarNode(testBar);
 | 
						|
  return testBar;
 | 
						|
}
 | 
						|
 | 
						|
/**
 | 
						|
 * Helper function that does the following:
 | 
						|
 *
 | 
						|
 * 1) Creates a custom toolbar and registers it
 | 
						|
 *    with CustomizableUI.
 | 
						|
 * 2) Adds the widget with ID aWidgetID to that new
 | 
						|
 *    toolbar.
 | 
						|
 * 3) Enters customize mode and makes sure that the
 | 
						|
 *    widget is still in the right toolbar.
 | 
						|
 * 4) Exits customize mode, then removes and deregisters
 | 
						|
 *    the custom toolbar.
 | 
						|
 * 5) Checks that the widget has no placement.
 | 
						|
 * 6) Re-adds and re-registers a custom toolbar with the same
 | 
						|
 *    ID and options as the first one.
 | 
						|
 * 7) Enters customize mode and checks that the widget is
 | 
						|
 *    properly back in the toolbar.
 | 
						|
 * 8) Exits customize mode, removes and de-registers the
 | 
						|
 *    toolbar, and resets the toolbars to default.
 | 
						|
 */
 | 
						|
function checkRestoredPresence(aWidgetID) {
 | 
						|
  return (async function () {
 | 
						|
    let testBar = createTestBar();
 | 
						|
    CustomizableUI.addWidgetToArea(aWidgetID, kTestBarID);
 | 
						|
    let placement = CustomizableUI.getPlacementOfWidget(aWidgetID);
 | 
						|
    is(
 | 
						|
      placement.area,
 | 
						|
      kTestBarID,
 | 
						|
      "Expected " + aWidgetID + " to be in the test toolbar"
 | 
						|
    );
 | 
						|
 | 
						|
    CustomizableUI.unregisterArea(testBar.id);
 | 
						|
    testBar.remove();
 | 
						|
 | 
						|
    placement = CustomizableUI.getPlacementOfWidget(aWidgetID);
 | 
						|
    is(placement, null, "Expected " + aWidgetID + " to be in the palette");
 | 
						|
 | 
						|
    testBar = createTestBar();
 | 
						|
 | 
						|
    await startCustomizing();
 | 
						|
    placement = CustomizableUI.getPlacementOfWidget(aWidgetID);
 | 
						|
    is(
 | 
						|
      placement.area,
 | 
						|
      kTestBarID,
 | 
						|
      "Expected " + aWidgetID + " to be in the test toolbar"
 | 
						|
    );
 | 
						|
    await endCustomizing();
 | 
						|
 | 
						|
    CustomizableUI.unregisterArea(testBar.id);
 | 
						|
    testBar.remove();
 | 
						|
 | 
						|
    await resetCustomization();
 | 
						|
  })();
 | 
						|
}
 | 
						|
 | 
						|
add_task(async function () {
 | 
						|
  await checkRestoredPresence("downloads-button");
 | 
						|
  await checkRestoredPresence("characterencoding-button");
 | 
						|
});
 |