Closed Bug 25021 Opened 26 years ago Closed 26 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: 26 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.