This seems very interesting... could you open a bug for this?

thanks!
darin


Mark Hammond wrote:

> Hi all,
>     I have a bizarre problem you may be able to help with.  It is a bit 
> of a killer for the Komodo project at the moment.  It is very simple to 
> repro.
> 
> Below, I have a XUL file with a button.  When you click on this button, 
> some JS code uses the io-service and newChannelFromURI() to open a 
> "file://" URL and dump the contents.
> 
> The file IO works perfectly.  However, after this, the code attempts to 
> load a standard Mozilla browser window.  This new browser appears to 
> have no network connectivity at all - ie, sidebar (tinderbox etc) and 
> the page you request to load never complete.  The barbershop and Moz 
> icons continually cycle, but nothing ever loads.
> 
> If you comment out the 20 or so lines of javascript, the new Mozilla 
> window loads fine - the page and all items on the sidebar open normally.
> 
> Once Mozilla in in this state, 2 warnings appear:
> 
> WARNING: not calling OnDataAvailable, file 
> F:\src\AS\mozilla\netwerk\base\src\nsAsyncStreamListener.cpp, line 410
> 
> I have tried tracking this in the debugger.  For some reason, the 
> channel is canceled in response to a onStartRequest() event, but I 
> havent worked out exactly who is cancelling it, or why.  (ie, the 
> GetStatus() call above this line succeeds, but the returned status is 
> "canceled".)
> 
> Hopefully the problem is simply that I am neglecting to close something. 
>  However, only the streams appear to have close methods, and I am 
> calling these.
> 
> I am running from the tip (few days old now tho), Windows 2000, debug 
> and release builds.  I can open files using a different technique (such 
> as the js IO library), but need the ability to open other schemes - such 
> as "chrome://" URLs to open resources.  The problem is not js related, 
> as it can be reproduced without any javascript (with the Python bindings)
> 
> To reproduce the problem, place the XUL below in a chrome directory, and 
> load it via a "-chrome "chrome://..." command-line.  A small window with 
> a button will appear.  Clicking this button will dump the contents of 
> the named file, then create a browser window.  The window will open, but 
> the contents will not load.
> 
> Any clues for me?
> 
> Thanks,
> 
> Mark.
> 
> <?xml version="1.0"?>
> 
> <?xml-stylesheet href="chrome://communicator/skin" type="text/css"?>
> <window
>   id="test-io"
>   title="Channels kill async IO"
>   xmlns:html="http://www.w3.org/TR/REC-html40"
>   xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
> 
>   <script language="javascript">
> 
>   function OpenMozilla() {
> 
>     // **** Set this to a small, valid file
>     var url = "file://c:/temp/delme.txt";
> 
>     // convert to nsIURL interface.
>     var url_ob = Components.classes["@mozilla.org/network/standard-url;1"]
>                 .createInstance()
>                 .QueryInterface(Components.interfaces.nsIURL);
>     url_ob.spec = url;
> 
>     // Now open the URL.
>     var io_service = 
> Components.classes["@mozilla.org/network/io-service;1"]
>                 .createInstance()
>                 .QueryInterface(Components.interfaces.nsIIOService);
>     var channel = io_service.newChannelFromURI(url_ob);
>     var inputStream = channel.openInputStream();
>     // make the input stream scriptable.
>     var sinputStream =
>             Components.classes["@mozilla.org/scriptableinputstream;1"]
>                 .createInstance()
> 
> ..QueryInterface(Components.interfaces.nsIScriptableInputStream);
>     sinputStream.init(inputStream);
> 
>     dump("Read '" + sinputStream.read(-1) + "'\n");
> 
>     // close everything I know how!
>     inputStream.close();
>     sinputStream.close();
> 
>     openDialog('chrome://navigator/content/', '_blank', 'chrome,all',
>         'http://www.mozilla.org/');
>     return 1;
>   }
> 
>   </script>
> 
>   <button id="launch moz" value="launch moz" oncommand="return 
> OpenMozilla();"/>
> </window>


Reply via email to