Only set the load ID when we're sure that the entry we're using is valid/going
to be valid. If we're validating an image over the network, we must only set
its load ID after we've validated it.
Don't unconditionally remove from the cache if we're force-reloading. Instead,
refuse to validate images when we're force-reloading, unless we've already
validated them for this context.
- Makes nsDocLoader store the last-sent status message for each request in the
corresponding nsRequestInfo, and keeps a flag to indicate whether the request
is done
- When a request finishes, it looks for a random request that is not done and
has a non-empty status, and if it finds one, sends that status message to the
listeners
- To make this all work, the patch also changes imagelib so that status and
state messages sent for images are sent with the imgIRequest as the request and
not the channel. This is necessary because the channel is not part of the
loadgroup for images, only the imgIRequest is.
- Make the BrowserStatusFilter always update its pending status message if it
is dirty, even when that matches the currently displayed status message
r+sr=bz
Prior to thise, when we were under memory pressure, we would remove every
entry from the cache, even ones that were currently held in memory due to
their use on e.g. a web page. Now we only remove things from the cache that
will actually free up memory, further fixing bug 466586.
The expiration tracker doesn't hold on to references to imgCacheEntries, so if
we're deleting it from the cache, that'll bring its refcount to zero. We
always assume that, when we're calling a function, there exists a reference
that lasts as long as the function does. This patch just makes that true for
the NotifyExpired case.
The image cache is now composed of two things: a heap of tracked items that
can be expired and evicted, and a superset of that which hashes from URI to
cache element. Cache elements start out in the second set, and are moved to
the first (and start to be tracked for expiry) once they have no observers.
The image cache is now composed of two things: a heap of tracked items that
can be expired and evicted, and a superset of that which hashes from URI to
cache element. Cache elements start out in the second set, and are moved to
the first (and start to be tracked for expiry) once they have no observers.
The image cache is now composed of two things: a heap of tracked items that
can be expired and evicted, and a superset of that which hashes from URI to
cache element. Cache elements start out in the second set, and are moved to
the first (and start to be tracked for expiry) once they have no observers.
The image cache is now composed of two things: a heap of tracked items that
can be expired and evicted, and a superset of that which hashes from URI to
cache element. Cache elements start out in the second set, and are moved to
the first (and start to be tracked for expiry) once they have no observers.