mirror of
				https://github.com/mozilla/gecko-dev.git
				synced 2025-11-04 10:18:41 +02:00 
			
		
		
		
	
		
			
				
	
	
		
			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();
 |