Closed Bug 25021 Opened 25 years ago Closed 25 years ago

OnEndDocumentLoad is not reached when an image file is viewed directly

Categories

(Core :: Networking, defect, P3)

x86
Windows NT
defect

Tracking

()

VERIFIED FIXED

People

(Reporter: neeti, Assigned: pnunn)

References

()

Details

When the url http://jazz/users/pnunn/publish/adog.gif is loaded in mozilla,  we 
get no end of document load. 

In nsDocLoaderImpl::OnStopRequest(nsIChannel *aChannel, 
                               nsISupports *aCtxt, 
                               nsresult aStatus, 
                               const PRUnichar *aMsg) 
{ 
  rv = mLoadGroup->GetActiveCount(&count);  

  // 
    // The load group for this DocumentLoader is idle... 
    // 
    if (0 == count) { 
      DocLoaderIsEmpty(aStatus); /* We never reach here because the 
                                     count never goes down to zero    */ 
    } else { 
      FireOnEndURLLoad(this, aChannel, aStatus); 
    } 
}

The DocLoaderIsEmpty() method is never called because the count(active count for 
the mLoadGroup)  remains at 1. 
mForegroundCount gets decremented in nsLoadGroup::RemoveChannel().

We reach an on end doc for the http://jazz/users/pnunn/publish/adog.gif url, if 
we first load http://jazz/users/pnunn/publish/adog.html, and then load 
http://jazz/users/pnunn/publish/adog.gif( if the image is in the cache).

In the working case the mForegroundCount goes down to zero from 2, when the 
RemoveChannel is called twice, by the following methods,
acheManagerStreamListener::OnStopRequest() and 
nsHTTPChannel::ResponseCompleted().
Target Milestone: M15
*** Bug 24438 has been marked as a duplicate of this bug. ***
hey Pam,

It looks like this one is due to your checkin (r 1.53) to 
nsImageNetContextAsync.cpp line 541.

Clearing the mReconnectCallback before cloning, broke the internal-external 
reconnect hack that kipp had for displaying full page images...

So, we are actually loading full page images twice!! This is because the 
reconnect callback (that was set due to calling GetImageFromStream) is lost when 
the ImageNetContext gets cloned :-( So, imagelib just loads the image from the 
network again!

This, in turn, aggravates a bug(?) in the cache :-(  But, I think that if the 
internal-external reconnect hack is fixed, the main problem will go away!
Assignee: rpotts → pnunn
yikes! I'll look at it as soon as I get a tree.
-p
hmmm. (I still don't have a build, but I'm scanning through
lxr.) If this is whats breaking this stuff, backing out that
change will bring back the crash on sample#9 where animating
gifs in multiple frames on a page try to life beyond a document
unload.

-P
I tried commenting out Pam's changes 
//mReconnectCallback=nsnull; mReconnectArg=nsnull;

Now we are hitting the OnEndDocument on some non animated gifs 
eg
http://jazz/users/pnunn/publish/coffee.gif
http://jazz/users/pnunn/publish/hat.gif.

However, we are still seeing the problem for animated gifs.
http://jazz/users/pnunn/publish/adog.gif 

Neeti
Status: NEW → ASSIGNED
Thanks Rick,
I'll back out that change and work on finding 
another fix for the sample#9 bug. This may also
be affecting a few of my other pdt+ bugs.

-P
hey neeti,

I'm running build from 2/7 and when I comment out the line in 
nsAsyncImagenetContext, the animated gif example 
http://jazz/users/pnunn/publish/adog.gif works fine for me...

Is the animation not stopping for you?
-- rick
http://jazz/users/pnunn/publish/adog.gif and other images works fine today with 
the line commented out after I did a clobber build.

Neeti
I just checked this in.
-pn
Status: ASSIGNED → RESOLVED
Closed: 25 years ago
Resolution: --- → FIXED
verified:  
NT 2000042009
Linux 2000042609
Mac 2000041810
Status: RESOLVED → VERIFIED
You need to log in before you can comment on or make changes to this bug.