forked from mirrors/gecko-dev
		
	 abf1620630
			
		
	
	
		abf1620630
		
	
	
	
	
		
			
			This allows the JS to work in HTML documents, where whitespace is preserved. In XUL documents, whitespace is ignored when parsing so text nodes are generally not returned. The following changes were made, with manual cleanups as necessary (i.e. when firstChild actually refers to a text node, or when firstChild is used in a loop to empty out an element): firstChild->firstElementChild lastChild->lastElementChild nextSibling->nextElementSibling previousSibling->previousElementSibling childNodes->children MozReview-Commit-ID: 95NQ8syBhYw --HG-- extra : rebase_source : 186d805f7a2a56694dda9032aceac2dfe5424753
		
			
				
	
	
		
			79 lines
		
	
	
	
		
			2.4 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			79 lines
		
	
	
	
		
			2.4 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| /* -*- indent-tabs-mode: nil; js-indent-level: 2 -*-
 | |
|  * 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/. */
 | |
| 
 | |
| // This file is loaded into the browser window scope.
 | |
| /* eslint-env mozilla/browser-window */
 | |
| 
 | |
| /**
 | |
|  * Customization handler prepares this browser window for entering and exiting
 | |
|  * customization mode by handling customizationstarting and customizationending
 | |
|  * events.
 | |
|  */
 | |
| var CustomizationHandler = {
 | |
|   handleEvent(aEvent) {
 | |
|     switch (aEvent.type) {
 | |
|       case "customizationstarting":
 | |
|         this._customizationStarting();
 | |
|         break;
 | |
|       case "customizationending":
 | |
|         this._customizationEnding(aEvent.detail);
 | |
|         break;
 | |
|     }
 | |
|   },
 | |
| 
 | |
|   isCustomizing() {
 | |
|     return document.documentElement.hasAttribute("customizing");
 | |
|   },
 | |
| 
 | |
|   _customizationStarting() {
 | |
|     // Disable the toolbar context menu items
 | |
|     let menubar = document.getElementById("main-menubar");
 | |
|     for (let childNode of menubar.children)
 | |
|       childNode.setAttribute("disabled", true);
 | |
| 
 | |
|     let cmd = document.getElementById("cmd_CustomizeToolbars");
 | |
|     cmd.setAttribute("disabled", "true");
 | |
| 
 | |
|     UpdateUrlbarSearchSplitterState();
 | |
| 
 | |
|     PlacesToolbarHelper.customizeStart();
 | |
|   },
 | |
| 
 | |
|   _customizationEnding(aDetails) {
 | |
|     // Update global UI elements that may have been added or removed
 | |
|     if (aDetails.changed) {
 | |
|       gURLBar = document.getElementById("urlbar");
 | |
| 
 | |
|       if (AppConstants.platform != "macosx")
 | |
|         updateEditUIVisibility();
 | |
| 
 | |
|       // Hacky: update the PopupNotifications' object's reference to the iconBox,
 | |
|       // if it already exists, since it may have changed if the URL bar was
 | |
|       // added/removed.
 | |
|       if (!window.__lookupGetter__("PopupNotifications")) {
 | |
|         PopupNotifications.iconBox =
 | |
|           document.getElementById("notification-popup-box");
 | |
|       }
 | |
| 
 | |
|     }
 | |
| 
 | |
|     PlacesToolbarHelper.customizeDone();
 | |
| 
 | |
|     UpdateUrlbarSearchSplitterState();
 | |
| 
 | |
|     // Update the urlbar
 | |
|     URLBarSetURI();
 | |
|     XULBrowserWindow.asyncUpdateUI();
 | |
| 
 | |
|     // Re-enable parts of the UI we disabled during the dialog
 | |
|     let menubar = document.getElementById("main-menubar");
 | |
|     for (let childNode of menubar.children)
 | |
|       childNode.setAttribute("disabled", false);
 | |
|     let cmd = document.getElementById("cmd_CustomizeToolbars");
 | |
|     cmd.removeAttribute("disabled");
 | |
| 
 | |
|     gBrowser.selectedBrowser.focus();
 | |
|   }
 | |
| };
 |