forked from mirrors/gecko-dev
		
	MozReview-Commit-ID: CJtpm8zlLxa --HG-- extra : rebase_source : c6a834d5aaba0f84f5e147333085883de1a118e8
		
			
				
	
	
		
			86 lines
		
	
	
	
		
			2.3 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			86 lines
		
	
	
	
		
			2.3 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/. */
 | 
						|
 | 
						|
const {classes: Cc, interfaces: Ci, utils: Cu, manager: Cm} = Components;
 | 
						|
 | 
						|
Cu.import("resource://gre/modules/XPCOMUtils.jsm");
 | 
						|
 | 
						|
const PRESENTATION_DEVICE_PROMPT_PATH =
 | 
						|
  "chrome://presentation/content/PresentationDevicePrompt.jsm";
 | 
						|
 | 
						|
function log(aMsg) {
 | 
						|
  // dump("@ Presentation: " + aMsg + "\n");
 | 
						|
}
 | 
						|
 | 
						|
function install(aData, aReason) {
 | 
						|
}
 | 
						|
 | 
						|
function uninstall(aData, aReason) {
 | 
						|
}
 | 
						|
 | 
						|
function startup(aData, aReason) {
 | 
						|
  log("startup");
 | 
						|
  Presentation.init();
 | 
						|
}
 | 
						|
 | 
						|
function shutdown(aData, aReason) {
 | 
						|
  log("shutdown");
 | 
						|
  Presentation.uninit();
 | 
						|
}
 | 
						|
 | 
						|
// Register/unregister a constructor as a factory.
 | 
						|
function Factory() {}
 | 
						|
Factory.prototype = {
 | 
						|
  register(targetConstructor) {
 | 
						|
    let proto = targetConstructor.prototype;
 | 
						|
    this._classID = proto.classID;
 | 
						|
 | 
						|
    let factory = XPCOMUtils._getFactory(targetConstructor);
 | 
						|
    this._factory = factory;
 | 
						|
 | 
						|
    let registrar = Cm.QueryInterface(Ci.nsIComponentRegistrar);
 | 
						|
    registrar.registerFactory(proto.classID, proto.classDescription,
 | 
						|
                              proto.contractID, factory);
 | 
						|
  },
 | 
						|
 | 
						|
  unregister() {
 | 
						|
    let registrar = Cm.QueryInterface(Ci.nsIComponentRegistrar);
 | 
						|
    registrar.unregisterFactory(this._classID, this._factory);
 | 
						|
    this._factory = null;
 | 
						|
    this._classID = null;
 | 
						|
  },
 | 
						|
};
 | 
						|
 | 
						|
var Presentation = {
 | 
						|
  // PUBLIC APIs
 | 
						|
  init() {
 | 
						|
    log("init");
 | 
						|
    // Register PresentationDevicePrompt into a XPCOM component.
 | 
						|
    let {PresentationDevicePrompt} = Cu.import(PRESENTATION_DEVICE_PROMPT_PATH, {});
 | 
						|
    this.PresentationDevicePrompt = PresentationDevicePrompt;
 | 
						|
    this._register();
 | 
						|
  },
 | 
						|
 | 
						|
  uninit() {
 | 
						|
    log("uninit");
 | 
						|
    // Unregister PresentationDevicePrompt XPCOM component.
 | 
						|
    this._unregister();
 | 
						|
    delete this.PresentationDevicePrompt;
 | 
						|
    Cu.unload(PRESENTATION_DEVICE_PROMPT_PATH);
 | 
						|
  },
 | 
						|
 | 
						|
  // PRIVATE APIs
 | 
						|
  _register() {
 | 
						|
    log("_register");
 | 
						|
    this._devicePromptFactory = new Factory();
 | 
						|
    this._devicePromptFactory.register(this.PresentationDevicePrompt);
 | 
						|
  },
 | 
						|
 | 
						|
  _unregister() {
 | 
						|
    log("_unregister");
 | 
						|
    this._devicePromptFactory.unregister();
 | 
						|
    delete this._devicePromptFactory;
 | 
						|
  },
 | 
						|
};
 |