forked from mirrors/gecko-dev
		
	
		
			
				
	
	
		
			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");
 | |
| });
 | 
