Closed Bug 201076 Opened 21 years ago Closed 21 years ago

NS_FRAME_HAS_LOADED_IMAGE bit set inconsistently on table cell frames

Categories

(Core :: Layout: Tables, defect, P2)

x86
Windows XP
defect

Tracking

()

RESOLVED FIXED
mozilla1.7alpha

People

(Reporter: john, Assigned: dbaron)

Details

(Whiteboard: [patch])

Attachments

(1 file)

The layout regression tests give several false positives because frames with
background images do not always have the has_loaded_image bit set by the time
frame bits are compared.  This may not be a problem in our code; but if not, the
regression tests need to not compare this bit.

NS_FRAME_HAS_LOADED_IMAGE:
layout/html/tests/table/viewer_tests/test4.html TableCell(th)
layout/html/tests/table/bugs/bug10633.html TableCell(td)
layout/html/tests/table/bugs/bug12008.html TableCell(td)
layout/html/tests/table/bugs/bug1271.html TableCell(td)
layout/html/tests/table/bugs/bug1296.html TableCell(td)
layout/html/tests/table/bugs/bug1430.html TableCell(td)
layout/html/tests/table/bugs/bug45055-2.html TableCell(td)
The bit is set only at one place
http://lxr.mozilla.org/seamonkey/source/layout/base/src/nsPresContext.cpp#1450

The LoadImage routine is called from inside the  PaintBackgroundWithSC

http://lxr.mozilla.org/seamonkey/source/layout/html/style/src/nsCSSRendering.cpp#2965

My guess would be that we start to write the frame dump before the painting has
finished. Does increasing the mDelay at
http://lxr.mozilla.org/seamonkey/source/webshell/tests/viewer/nsWebCrawler.cpp#461
change the picture?

CC'ing bz ... the basic problem is that onload may fire before background images
are loaded.  There are 3 alternatives here that I see:

(1) do not compare the NS_FRAME_HAS_LOADED_IMAGE bit
(2) wait a little while for the image to load (bernd's suggestion in the last
comment)
(3) do not fire onload until background images have loaded.

bz may have insight, especially on this last one.
The last one is kinda hard... for one thing, it involves moving background image
loading out of frames and into content/style.  ;)  That's sorta the plan, but
even then I'm not sure we'll want to delay onload for background images.....
Except perhaps we could in debug builds or have a pref or env var for doing it
in debug builds (so the regression tests could use it).

Though I'm somewhat leery of testing different things between regression tests
and releases....
nah, if we don't want to do it for one we shouldn't do it for anything else.  I
think I prefer the solution of not comparing these bits at all, even though it
may miss a regression or two.  Increasing time between tests does not seem
desirable to me.
At some point we should start loading images from the stylesheets that reference
them.  That would fix this.  It's also a rather large change.
Priority: -- → P2
Target Milestone: --- → Future
Attachment #138914 - Flags: superreview?(bz-vacation)
Attachment #138914 - Flags: review?(bz-vacation)
Assignee: core.layout.tables → dbaron
Whiteboard: [patch]
Target Milestone: Future → mozilla1.7alpha
Comment on attachment 138914 [details] [diff] [review]
remove NS_FRAME_HAS_LOADED_IMAGES bit, since it's write-only

r+sr=bzbarsky, but it may be a good idea to renumber the last three bits to not
leave a hole.
Attachment #138914 - Flags: superreview?(bz-vacation)
Attachment #138914 - Flags: superreview+
Attachment #138914 - Flags: review?(bz-vacation)
Attachment #138914 - Flags: review+
Fix checked in, 2004-01-12 17:18 -0800.  I didn't change the rest of the bits --
there are lots of them.
Status: NEW → RESOLVED
Closed: 21 years ago
Resolution: --- → FIXED
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: