[FIX]CSS border interruption when setting innerHTML of children of form that has margin-bottom set and no horizontal resize needed.

VERIFIED FIXED

Status

Core Graveyard
GFX
P2
normal
VERIFIED FIXED
10 years ago
7 years ago

People

(Reporter: Raif Atef Wasef, Assigned: bz)

Tracking

({regression, testcase})

Trunk
x86
Windows XP
regression, testcase
Dependency tree / graph
Bug Flags:
blocking1.9 +
in-testsuite +

Firefox Tracking Flags

(Not tracked)

Details

Attachments

(6 attachments)

(Reporter)

Description

10 years ago
User-Agent:       Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9b5pre) Gecko/2008032106 Minefield/3.0b5pre
Build Identifier: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9b5pre) Gecko/2008032106 Minefield/3.0b5pre

Check the testcase, it actually shows 2 issues.

First of all, I establish a session and send the form.
Choose something from the drop down lists and press Submit.
A javascript function causes an image that was originally loaded with display:none to be displayed.

When the image loads, the border is slightly cut off. If you open another window anywhere that covers that part of the page, or right-click a context menu item in the page that covers the affected problem and close it, it redraws correctly.

2nd Issue: Press F5 to reload page, both drop down boxes are still disabled. CTRL+F5 fixes the issue. They were disabled by me (js) when you press Submit.

This is strange because I explicitly send no cache headers to prevent fx from reloading from the cache. Fx2 does not exhibit this problem and neither does IE5.5+

Reproducible: Always

Steps to Reproduce:
see details...
Actual Results:  
1. Border interruption, redraws correctly when region is covered by another window or context menu.
2. Disabled state of dropdown boxes not cleared on normal reload.

Expected Results:  
1. Border displayed properly.
2. Dropdown box disabled state reset to normal (selectable).

Running on a Dell Inspiron 4100, P3 866 MHz, ATI Radeon Mobility M6 Card, Unofficial ATi omega display driver version 3.8.252
(Reporter)

Updated

10 years ago
Version: unspecified → Trunk
(Reporter)

Comment 1

10 years ago
Created attachment 311088 [details]
Screenshot of 1st problem

Comment 2

10 years ago
Can't connect to the site.
(Reporter)

Comment 3

10 years ago
I moved the testcase to another location, please see...
(Reporter)

Updated

10 years ago
Keywords: testcase
(Reporter)

Comment 4

10 years ago
Created attachment 311672 [details]
Minimized testcase directly showing the problem

I've been minimizing and playing with this a lot and discovered that it only happens if margin-bottom is set on the form enclosing it.

I changed from php headers to meta tags and attached here for easy viewing.
(Reporter)

Updated

10 years ago
Summary: CSS border redraw issue when showing enclosed elements that had display:none → CSS border interruption when showing hidden children of form that has margin-bottom set
(Reporter)

Updated

10 years ago
Summary: CSS border interruption when showing hidden children of form that has margin-bottom set → CSS border interruption when setting innerHTML of form children that has margin-bottom set and no horizontal resize needed.
(Reporter)

Updated

10 years ago
Summary: CSS border interruption when setting innerHTML of form children that has margin-bottom set and no horizontal resize needed. → CSS border interruption when setting innerHTML of children of form that has margin-bottom set and no horizontal resize needed.

Updated

10 years ago
Component: General → GFX
Product: Firefox → Core
QA Contact: general → general
Rounding bug in the invalidation code?
Keywords: regression
(Reporter)

Comment 6

10 years ago
Unfortunately I can't say, because I am still a C/C++ newbie and I'm not familiar with Mozilla XUL or source code.
(Reporter)

Comment 7

10 years ago
I split the 2nd problem into a separate bug: https://bugzilla.mozilla.org/show_bug.cgi?id=425083

Sorry for all the bug spam, I am new to bugzilla (and bug reporting in general).

Updated

10 years ago
Status: UNCONFIRMED → NEW
Ever confirmed: true

Comment 8

10 years ago
needs a regression range
Keywords: qawanted
Created attachment 311687 [details]
smaller testcase that shows a bigger problem
Works: 20080206_1337_firefox-3.0b4pre.en-US.win32
Broken: 20080206_1337_firefox-3.0b4pre.en-US.win32

Checkins to module PhoenixTinderbox between 2008-02-06 13:37 and 2008-02-06 14:32 :
http://bonsai.mozilla.org/cvsquery.cgi?treeid=default&module=PhoenixTinderbox&branch=HEAD&branchtype=match&dir=&file=&filetype=match&who=&whotype=match&sortby=Date&hours=2&date=explicit&mindate=2008-02-06+13%3A37&maxdate=2008-02-06+14%3A32&cvsroot=%2Fcvsroot

Due to bug 414298 I'd say. CC'ng bz and requesting blocking.
Flags: blocking1.9?
Keywords: qawanted
of course, should be
Broken: 20080206_1432_firefox-3.0b4pre.en-US.win32
Created attachment 311696 [details]
shows regression in rendering
Created attachment 311721 [details] [diff] [review]
Proposed fix

Fun times.  When reflow branch landed, it removed all the InvalidateDamage() callers.  So after that, if a caption or the inner table got resized and the resize area included stuff that's not covered by any kids (the cellspacing in this case), we wouldn't repaint correctly.

Bernd, can you check to make sure it's OK to not actually use InvalidateDamage() here?  I think it should be fine, but...
Assignee: nobody → bzbarsky
Status: NEW → ASSIGNED
Attachment #311721 - Flags: superreview?(roc)
Attachment #311721 - Flags: review?(bernd_mozilla)
Summary: CSS border interruption when setting innerHTML of children of form that has margin-bottom set and no horizontal resize needed. → [FIX]CSS border interruption when setting innerHTML of children of form that has margin-bottom set and no horizontal resize needed.

Comment 14

10 years ago
Comment on attachment 311721 [details] [diff] [review]
Proposed fix

Looks like my handling of bug 219141 was not correct. Given the history of bug 414298 I would say its time to put some reftests into the tree. At least for this bug the r+ requires reftests to be checked in with the patch.
Attachment #311721 - Flags: review?(bernd_mozilla) → review+
I would love to do that, but reftests can't catch invalidation bugs, since they do a fresh toplevel paint.  We need an entirely new test infrastructure, with backend support, to test this sort of thing.  :(  roc is planning to make Compositor support it, but that's not going to help me write tests for this patch...

Comment 16

10 years ago
I just got very nervous when I looked at the regression chain. So no reftest for now. Indeed hovering with a window makes a new paint and then everything is OK. 
Yeah, nervous is right.  :(

Updated

10 years ago
Blocks: 414298
Duplicate of this bug: 425279
Attachment #311721 - Flags: superreview?(roc) → superreview+
Comment on attachment 311721 [details] [diff] [review]
Proposed fix

Requesting approval.  This makes sure to invalidate correctly when the inner table or caption size changes.
Attachment #311721 - Flags: approval1.9?
Flags: blocking1.9? → blocking1.9+
Priority: -- → P2
Attachment #311721 - Flags: approval1.9?
Checked in.
Status: ASSIGNED → RESOLVED
Last Resolved: 10 years ago
Flags: in-testsuite?
Resolution: --- → FIXED
verified fixed using the testcases and Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9pre) Gecko/2008041217 Minefield/3.0pre ID:2008041217

--> Verified fixed
Status: RESOLVED → VERIFIED
Depends on: 451332
Product: Core → Core Graveyard
Created attachment 384659 [details] [diff] [review]
invalidate reftest
Attachment #384659 - Flags: review?(bzbarsky)
Attachment #384659 - Flags: review?(bzbarsky) → review+
Pushed test as http://hg.mozilla.org/mozilla-central/rev/4cbb996fbb60
Flags: in-testsuite? → in-testsuite+
You need to log in before you can comment on or make changes to this bug.