Closed
Bug 24815
Opened 25 years ago
Closed 25 years ago
Reload causes broken glyph icon to appear
Categories
(Core :: Layout, defect, P3)
Tracking
()
VERIFIED
FIXED
M15
People
(Reporter: ian, Assigned: troy)
References
()
Details
STEPS TO REPRODUCE:
Open http://bugzilla.mozilla.org/showattachment.cgi?attach_id=2001 in Mozilla.
ACTUAL RESULTS:
The first time you load the page, it lays out fine. However, a reload places an
IE-style "broken image" glyph with the alt text, instead of flowing it as in
the first load.
EXPECTED RESULTS:
Once the image is found to not be available (whether during the initial flow
or later on) the IMG element should be treated as a normal floating element
containing the ALT text, as with non-floating broken IMG elements. The broken
image glyph should _not_ be used. The results on the first load and subsequent
loads should be the same.
ADDITIONAL COMMENTS:
The bug may be that if an image is found to not be available straight away, as
may well happen if the image is cached, CantRenderReplacedContent (or whatever
it's called) fails. This would explain why the first time it works (because that
function is called on the reflow) but the next time it doesn't (the function may
be called on the original flow). I may be totally off-base though.
Reporter | ||
Comment 1•25 years ago
|
||
Fixed. The HTML image loader code was squelching the notification that the image
load failed
Status: NEW → RESOLVED
Closed: 25 years ago
Resolution: --- → FIXED
Reporter | ||
Comment 3•25 years ago
|
||
Ok, this is fixed.
Troy: I notice that what _actually_ happens at the moment is that we add an
image frame, which displayes with the loading image glyph and the ALT text, and
then decide we are not going to display that frame, and replace it with the
text frame, and _reflow_ it to have the alt text display as if it was not an
image in the first place.
This is fine if we don't know the image is going to be displayed (modulus bug
23691), but in this case it means that we actually first lay it out with the
broken glyph icon, and immediately flash to the text-frame version.
Do you care? i.e., should I open a bug about this flicker, or should we just
say that this is As Designed and not worry about it?
Status: RESOLVED → VERIFIED
I don't care, and to tell you the truth there isn't much I can do about it. Yes
we first create an image frame and it try to load the image. If the image load
fails the image frame notifies the pres shell that it can't be rendered. Then
the pres shell asynchronously (i.e., queues up) an NSPR event and when it
processes it we call the frame construction code which creates the inline (or
block) frame with the text frame child and then replaces the image frame with
the new frame
The reason for the async step there is that it's not really safe to
synchronously discard the image frame while there's potentially code on the
stack that cares. Discarding the image frame causes lots of image lib objects to
get destroyed and for a while that resulted in a crash. I think the ref
counting is better now and it might work, but there's no way to be sure it
would work for all plugins
So to be safe we have the async step and that's why the delay. The image
frame could leave up the loading icon instead of displaying the broken icon, but
because things are done asynchronously the pres shell can't tell it whether
the frame will be discarded or not. Under normal circumstances everything will
work fine and it will, but who knows for sure
Reporter | ||
Comment 5•25 years ago
|
||
Ok, that's cool.
You need to log in
before you can comment on or make changes to this bug.
Description
•