what if you register the component just once that way:

var uriLoader =
Components.classes["@mozilla.org/uriloader;1"].getService(Components.interfaces.nsIURILoader);
var contentListener = Components.classes["@your-component-id;1"].
createInstance(Components.interfaces.nsIURIContentListener);
uriLoader.registerContentListener(contentListener);


fi wrote:
> On 21 Feb., 16:10, Boris Zbarsky <[EMAIL PROTECTED]> wrote:
>> fi wrote:
>>
>> In nsIURIContentListener::DoContent, the channel's loadgroup's notifications
>> callbacks should be the same as the window context passed to
>> nsIContentHandler....  It's a little roundabout, but there it is.
>>
>> -Boris
> 
> Please bear with me! The nsIURIContentListener is not invoked.
> 
> I created a component, implementing the following interfaces:
> 
> nsISupports
> nsISupportsWeakReference
> nsIClassInfo
> nsIURIContentListener
> 
> I don't know why I have to implement nsIClassInfo, but QueryInterface
> throws an exception, if I do not. No example I found on the web
> implements nsIClassInfo. Here I have my first question: how do I set
> the flages?
> 
> getHelperForLanguage and getInterfaces are called later.
> 
> As a first attempt I had my listener registered in the command-line
> handler of my XULRunner application, before the first call to
> openWindow. Nothing happened. No method of nsIContentListener was
> invoked.
> 
> Then I had my listener registered in an iframe of my first page (in
> the onLoad event) using the following code, attributed to boris and
> found here:
> 
> http://forums.mozillazine.org/viewtopic.php?t=501254&sid=a2f27a7ca70ecb78ef834d80ec86286e
> 
>               var wnd =
> window.QueryInterface(Components.interfaces.nsIInterfaceRequestor)
>                         .getInterface(Components.interfaces.nsIWebNavigation)
>                         .QueryInterface(Components.interfaces.nsIDocShell)
>                         
> .QueryInterface(Components.interfaces.nsIInterfaceRequestor)
>                   .getInterface(Components.interfaces.nsIURIContentListener);
>               wnd.parentContentListener = mylistener;
> 
> This improved things, since now onStartURIOpen is called.  If I return
> true, the load is aborted. However, if I return false, no other
> function of my ContentListener is invoked, but a new window is opened
> right on top of the first one, displaying the following content
> 
> XML Parsing Error: undefined entity
> Location: chrome://mozapps/content/downloads/unknownContentType.xul
> Line Number 28, Column 18:    <description>&intro.label;</description>
> -----------------^
> 
> However, this is not part of the response.
> 
> I checked a lot of examples on the web, but they don't give me any
> clue. What did I miss now?
> 
> And do I have to register my listener on any frame, as the code above
> indicates? I thougt that is enough to register is once and that it
> will be invoked as needed.
> 
> - Andreas
> 
_______________________________________________
dev-tech-xpcom mailing list
[email protected]
https://lists.mozilla.org/listinfo/dev-tech-xpcom

Reply via email to