If you think a bug might affect users in the 57 release, please set the correct tracking and status flags for Release Management.

"ASSERTION: no pseudo elements in undisplayed map" with colgroup:before

RESOLVED FIXED

Status

()

Core
Layout: Tables
RESOLVED FIXED
9 years ago
8 years ago

People

(Reporter: Jesse Ruderman, Assigned: bz)

Tracking

(Blocks: 1 bug, {assertion, testcase})

Trunk
x86
Mac OS X
assertion, testcase
Points:
---
Dependency tree / graph
Bug Flags:
in-testsuite +

Firefox Tracking Flags

(Not tracked)

Details

Attachments

(2 attachments)

(Reporter)

Description

9 years ago
Created attachment 376521 [details]
testcase

###!!! ASSERTION: no pseudo elements in undisplayed map: 'Not Reached', file /Users/jruderman/central/layout/base/nsFrameManager.cpp, line 1303
Hmm.  This is similar to bug 492112, but the assertion here seems a lot more reasonable...  I'll think about how to fix.
Blocks: 490173
Flags: blocking1.9.2?
Most simply would be to not put the content for items with mIsGeneratedContent true into the undisplayed map.  Or to not do so for cases when the style context of the item has a pseudo, maybe.
Patch coming up that also fixes bug 492112 and bug 483604.
Blocks: 492112, 483604
Created attachment 377319 [details] [diff] [review]
Proposed fix
Assignee: nobody → bzbarsky
Status: NEW → ASSIGNED
Attachment #377319 - Flags: superreview?(dbaron)
Attachment #377319 - Flags: review?(dbaron)
Did you look up the CVS history for why there was the mozNonElement check there?
The relevant CVS checkin comment is:

Fix 2 cases where ReResolveStyleContext was broken, causing serious problems with dynamic style reresolution. Change nsIFrame::GetStyleContextProvider to GetParentStyleContextFrame, always use its result rather than using the parent frame in some cases, and move a bit of the complexity into the GetParentStyleContextFrame implementations. Fix block-within-inline case (bug 129350) using a special-previous-sibling frame property and ensuring that NS_FRAME_IS_SPECIAL is copied when frames are split. Fix out-of-flow frame case (bug 88154) by going to the placeholder map and by parenting the placeholder frame style contexts to the style context from their frame parent rather than the out-of-flow frame. b=129350 r=attinasi sr=hyatt a=asa

This is rev 1.110 of nsFrameManager.cpp.

But fundamentally, as long as the non-element styles can't be display:none while the parent content is not display:none, we just can't end up with non-elements in the undisplayed content map...  I think the code was there by analogy with the other place in ReResolveStyleContext, where we look at child frames and reresolve them; there of course we do need to deal with the non-element case.
Attachment #377319 - Flags: superreview?(dbaron)
Attachment #377319 - Flags: superreview+
Attachment #377319 - Flags: review?(dbaron)
Attachment #377319 - Flags: review+
Comment on attachment 377319 [details] [diff] [review]
Proposed fix

ok, r+sr=dbaron
Pushed http://hg.mozilla.org/mozilla-central/rev/ae03e9085759 with a crashtest.
Status: ASSIGNED → RESOLVED
Last Resolved: 9 years ago
Flags: in-testsuite+
Resolution: --- → FIXED
Flags: blocking1.9.2?
You need to log in before you can comment on or make changes to this bug.