Kann ein http-on-modify-request
-Observer getestet werden?HTTP-on-Modify-Request-Beobachter über SDK/System/Ereignisse testen?
Die events
module bietet eine emit(type, event)
Methode zum Erstellen von Firefox-Ereignissen. Um ein Modul zu testen, das auf http-on-modify-request
hört, können Sie den Typ auf http-on-modify-request
einstellen. Die Frage ist , wie man die event
Parameter einstellt, um eine Netzanforderung nachzuahmen? In der Dokumentation wird
event : object
An optional object with data and subject attributes. data refers to a string that you would like to pass through this event. subject should refer to the actual actor/subject of this event (ie: the object emitting the event).
event.data
Einstellung wird als data
Parameter des Beobachters weitergeleitet, gleich für zb eine Zeichenfolge als event.subject
, aber wenn ich ein Objekt mit einem QueryInterface
-function passieren versucht, es hat nicht funktioniert:
events.emit("http-on-modify-request", {"subject": {
QueryInterface : function() {
return {"URI": {"spec": 'mock://URI.spec'}}
}}});
-Code zu testen ist sehr ähnlich https://developer.mozilla.org/en-US/Add-ons/SDK/Low-Level_APIs/system_events.
@ humanoiden Antwort
obs.notifyObservers(
{ QueryInterface : function() {
return {"URI": NetUtil.newURI("mock://URI.spec") };
}},
"http-on-modify-request",
null);
verwenden fehlgeschlagen mit
JavaScript Error: "NS_NOINTERFACE: Component returned failure code: 0x80004002 (NS_NOINTERFACE) [nsISupports.QueryInterface]" {file: "resource://gre/modules/commonjs/toolkit/loader.js -> resource://addon-id/caller.js" line: xy}]
Vielen Dank, dass Sie mich daran zu hindern, gehen diesen Weg nach unten. Haben Sie zufällig einen Beispielcode herumliegen oder nicht? –
@user nsIObserverService für diesen speziellen Fall verwenden? Nicht wirklich. Aber die Methode notifyObservers sollte ziemlich einfach zu verwenden sein. – humanoid
Nur mit diesem, ich habe einen 'JavaScript-Fehler: NS_NOINTERFACE: Komponente Fehlercode zurückgegeben: 0x80004002 (NS_NOINTERFACE) [nsISupports.QueryInterface]" {file: "resource: //gre/modules/commonjs/toolkit/loader.js - > ressource: //addon-id/caller.js "line: xy}]' –