2010-10-22 17 views
5

Así que he estado trabajando en la actualización de viejas extensiones para usar con FF4 y Gecko 2, pero tengo algunos problemas donde me aparece un error que dice, classID falta o incorrecto para el componente ....Firefox extension development firefox4

¿Alguien más ha tenido un problema similar o sabe cómo evitar esto?

function jsshellClient() { 
    this.classDescription = "sdConnector JavaScript Shell Service"; 
    this.classID = Components.ID("{54f7f162-35d9-524d-9021-965a3ba86366}"); 
    this.contractID = "@activestate.com/SDService?type=jsshell;1" 
    this._xpcom_categories = [{category: "sd-service", entry: "jsshell"}]; 
    this.name = "jsshell"; 
    this.prefs = Components.classes["@mozilla.org/preferences-service;1"] 
     .getService(Components.interfaces.nsIPrefService) 
     .getBranch("sdconnector.jsshell."); 
    this.enabled = this.prefs.getBoolPref("enabled"); 
    this.port = this.prefs.getIntPref("port"); 
    this.loopbackOnly = this.prefs.getBoolPref("loopbackOnly"); 
    this.backlog = this.prefs.getIntPref("backlog"); 
} 
jsshellClient.prototype = new session(); 
jsshellClient.prototype.constructor = jsshellClient; 

Al llamar generateNSGetFactory en el prototipo para esto da un error en la Consola de errores en FF4 quejándose de classId. Estoy bastante seguro de que nada más está usando el mismo GUID, así que no veo el problema.

+1

¿Por qué no publicar el código que causa el error? –

Respuesta

2

Un cambio importante en los componentes JS XPCOM en Fx4 es que ahora deben registrarse en chrome.manifest, consulte esta página de documentation on the changes.

+0

Lo sé. Tengo esto registrado en el archivo chrome.manifest, el problema es cuando intento crear NSGetFactory. –

+0

var NSGetFactory = XPCOMUtils.generateNSGetFactory ([jsshellclient]); intenta crear esta fábrica y se queja de que el CID es incorrecto. –

+0

e hizo los cambios necesarios en chrome.manifest? ¿Estás seguro de que esos cambios se realizaron correctamente? si no, ¿puedes publicar tu chrome.manifest? – erikvold

0

Las propiedades especiales utilizados por XPCOMUtils, como classid contractID, y así sucesivamente, que se han definido en Class.prototype, no en la función constructora, como lo hizo: https://developer.mozilla.org/en/XPCOMUtils.jsm#Class_declaration

En cuanto a la otra pregunta, publicaste en un comentario, publícalo en otra pregunta, si es relevante, con el código necesario.