FirefoxアドオンにnsIConsoleListenerを登録するのに問題があります。これが私のコードです:
var conSer = Components.classes["@mozilla.org/consoleservice;1"].getService(Components.interfaces.nsIConsoleService);
var consoleLis = {
observe:function( aMessage ){
conSer.unregisterListener(consoleLis);
Components.utils.reportError("observed "+aMessage.message);
},
QueryInterface: function (iid) {
if (!iid.equals(Components.interfaces.nsIConsoleListener) && !iid.equals(Components.interfaces.nsISupports)) {
Components.utils.reportError("NS_ERROR_NO_INTERFACE");
throw Components.results.NS_ERROR_NO_INTERFACE;
}
return this;
}
};
conSer.registerListener(consoleLis);
conSer.logStringMessage('this is a test');
上記のコードのバリエーションに関係なく、QueryInterfaceは常にエラーをスローするようです。nsIConsoleListenerに未解決のバグがあるかどうかを確認するために、bugzillaを調べましたが、そうではないようです。そのため、これが機能しない理由がわかりません。