forked from mirrors/gecko-dev
		
	
		
			
				
	
	
		
			82 lines
		
	
	
	
		
			2.3 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			82 lines
		
	
	
	
		
			2.3 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";
 | |
| 
 | |
| /**
 | |
|  * This file manages a MigrationWizard embedded in a dialog that runs
 | |
|  * in a top-level dialog window. It's main responsibility is to listen
 | |
|  * for dialog-specific events from the embedded MigrationWizard and to
 | |
|  * respond appropriately to them.
 | |
|  *
 | |
|  * A single object argument is expected to be passed when opening
 | |
|  * this dialog.
 | |
|  *
 | |
|  * @param {object} window.arguments.0
 | |
|  * @param {Function} window.arguments.0.onResize
 | |
|  *   A callback to resize the container of this document when the
 | |
|  *   MigrationWizard resizes.
 | |
|  * @param {object} window.arguments.0.options
 | |
|  *   A series of options for configuring the dialog. See
 | |
|  *   MigrationUtils.showMigrationWizard for a description of this
 | |
|  *   object.
 | |
|  */
 | |
| 
 | |
| const MigrationDialog = {
 | |
|   _wiz: null,
 | |
| 
 | |
|   init() {
 | |
|     addEventListener("load", this);
 | |
|   },
 | |
| 
 | |
|   onLoad() {
 | |
|     this._wiz = document.getElementById("wizard");
 | |
|     this._wiz.addEventListener("MigrationWizard:Close", this);
 | |
|     document.addEventListener("keypress", this);
 | |
| 
 | |
|     let args = window.arguments[0];
 | |
|     // When opened via nsIWindowWatcher.openWindow, the arguments are
 | |
|     // passed through C++, and they arrive to us wrapped as an XPCOM
 | |
|     // object. We use wrappedJSObject to get at the underlying JS
 | |
|     // object.
 | |
|     if (args instanceof Ci.nsISupports) {
 | |
|       args = args.wrappedJSObject;
 | |
|     }
 | |
| 
 | |
|     // We have to inform the container of this document that the
 | |
|     // MigrationWizard has changed size in order for it to update
 | |
|     // its dimensions too.
 | |
|     let observer = new ResizeObserver(() => {
 | |
|       args.onResize();
 | |
|     });
 | |
|     observer.observe(this._wiz);
 | |
| 
 | |
|     let panelList = this._wiz.querySelector("panel-list");
 | |
|     let panel = document.createXULElement("panel");
 | |
|     panel.appendChild(panelList);
 | |
|     this._wiz.appendChild(panel);
 | |
|     this._wiz.requestState();
 | |
|   },
 | |
| 
 | |
|   handleEvent(event) {
 | |
|     switch (event.type) {
 | |
|       case "load": {
 | |
|         this.onLoad();
 | |
|         break;
 | |
|       }
 | |
|       case "keypress": {
 | |
|         if (event.keyCode == KeyEvent.DOM_VK_ESCAPE) {
 | |
|           window.close();
 | |
|         }
 | |
|         break;
 | |
|       }
 | |
|       case "MigrationWizard:Close": {
 | |
|         window.close();
 | |
|         break;
 | |
|       }
 | |
|     }
 | |
|   },
 | |
| };
 | |
| 
 | |
| MigrationDialog.init();
 | 
