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