Closed
Bug 973701
Opened 11 years ago
Closed 11 years ago
Assertion failure: "abspos child frames should not be treated as flex items"
Categories
(Core :: Layout, defect)
Core
Layout
Tracking
()
RESOLVED
FIXED
mozilla30
People
(Reporter: jruderman, Assigned: dholbert)
References
Details
(Keywords: assertion, testcase)
Attachments
(3 files)
Assertion failure: !mFrame->IsAbsolutelyPositioned() (abspos child frames should not be treated as flex items), at /Users/jruderman/trees/mozilla-central/layout/generic/nsFlexContainerFrame.cpp:1057
This assertion was added in:
changeset: http://hg.mozilla.org/mozilla-central/rev/da32dcdc4121
user: Daniel Holbert
date: Tue Jan 21 14:52:32 2014 -0800
summary: Bug 783470 part 5: Add assertion to ensure we don't create FlexItems for abspos children. rs=mats
Reporter | ||
Comment 1•11 years ago
|
||
Reporter | ||
Comment 2•11 years ago
|
||
A similar testcase trips:
Assertion failure: aFrame1->IsFlexItem() && aFrame2->IsFlexItem() (this method only intended for comparing flex items), at layout/generic/nsFlexContainerFrame.cpp:809
Assignee | ||
Comment 3•11 years ago
|
||
Yeah, IsFlexItem() checks IsAbsolutelyPositioned(), so comment 2 boils down to the same underlying problem -- IsAbsolutelyPositioned() is lying.
nsIFrame::IsAbsolutelyPositioned() just checks the "position" property (along with !IsSVGText()), and that's not sufficient to say whether the frame is *actually* being absolutely positioned.
MathML frames are constructed in nsCSSFrameConstructor with the FCDATA_DISALLOW_OUT_OF_FLOW flag, which seems to make "position:absolute" have no actual effect (aside from confusing IsAbsolutelyPositioned).
So, I need to find a way to tell if the frames are *actually* absolutely positioned. (Maybe check their NS_FRAME_OUT_OF_FLOW bit, or something like that.)
Assignee | ||
Updated•11 years ago
|
Assignee: nobody → dholbert
Status: NEW → ASSIGNED
OS: Mac OS X → All
Hardware: x86_64 → All
Assignee | ||
Comment 4•11 years ago
|
||
I think this should do it.
This makes us use the frame-state bit instead of IsAbsolutelyPositioned() in the general "IsFlexItem" function, and check the bit (as well as for nsPlaceholderFrames, for good measure) in the FlexItem constructor assertions.
I'm going to give this a Try run, and if it does well there, I'll request review.
Assignee | ||
Comment 5•11 years ago
|
||
Try run: https://tbpl.mozilla.org/?tree=Try&rev=f7588abcb58a
(BTW, the patch includes the attached testcase, along with a second modified version with two <munderover> elements instead of one. In unpatched builds, that second testcase makes us trigger the assertion that Jesse mentioned from comment 2.)
Flags: in-testsuite?
Assignee | ||
Comment 6•11 years ago
|
||
Comment on attachment 8382749 [details] [diff] [review]
fix v1
Try is mostly-done and looks good. Requesting review.
Attachment #8382749 -
Flags: review+
Assignee | ||
Updated•11 years ago
|
Attachment #8382749 -
Flags: review+ → review?(matspal)
Comment 7•11 years ago
|
||
Comment on attachment 8382749 [details] [diff] [review]
fix v1
r=mats
Attachment #8382749 -
Flags: review?(matspal) → review+
Assignee | ||
Comment 8•11 years ago
|
||
Flags: in-testsuite? → in-testsuite+
Comment 9•11 years ago
|
||
Status: ASSIGNED → RESOLVED
Closed: 11 years ago
Resolution: --- → FIXED
Target Milestone: --- → mozilla30
You need to log in
before you can comment on or make changes to this bug.
Description
•