Я делаю нечто очень похожее в моем собственном аддоне ff.Я предполагаю, что вы хотите ссылку на nsiHttpChannel
, связанную с соединением.Однако я не уверен, что вы можете просто добавить к нему свойства (и сохранить их), так как он, вероятно, поддерживается собственным кодом, я не уверен в любом случае.Но вы можете хранить nsiHttpChannel
в другом месте и сохранять идентификатор для него таким образом.
Вот несколько упрощенных кодов, которые я использую для отслеживания http-трафика в моем аддоне, что должно решить вашу проблему.
var Cc = Components.classes;
var Ci = Components.interfaces;
var MyHttpObserver = {
// must be exposed so that the ObserverService can register itself
observe: function(subject, topic, data) {
subject.QueryInterface(Ci.nsIHttpChannel);
if( topic === "http-on-modify-request" ){
// store 'subject' somewhere
} else if( topic === "http-on-examine-response" ){
// look up 'subject' it will be the same reference as before
}
},
register: function() {
var observerService = Cc["@mozilla.org/observer-service;1"].getService(Ci.nsIObserverService);
observerService.addObserver(this, "http-on-modify-request", false);
observerService.addObserver(this, "http-on-examine-response", false);
},
unregister: function() {
var observerService = Cc["@mozilla.org/observer-service;1"].getService(Ci.nsIObserverService);
observerService.removeObserver(this, "http-on-modify-request");
observerService.removeObserver(this, "http-on-examine-response");
},
QueryInterface: function (aIID) {
if (aIID.equals(Ci.nsIObserver) || aIID.equals(Ci.nsISupports) ){
return this;
}
throw Components.results.NS_NOINTERFACE;
}
};