"ASSERTION: unexpected block frame" with MathML, text-overflow

NEW
Assigned to

Status

()

7 years ago
2 years ago

People

(Reporter: jruderman, Assigned: mats)

Tracking

(Blocks: 2 bugs, {assertion, testcase})

Trunk
assertion, testcase
Points:
---
Dependency tree / graph

Firefox Tracking Flags

(Not tracked)

Details

Attachments

(5 attachments, 1 obsolete attachment)

(Reporter)

Description

7 years ago
Created attachment 549710 [details]
testcase

###!!! ASSERTION: unexpected block frame: '!nsLayoutUtils::GetAsBlock(aFrame) || !aFrame->GetStyleDisplay()->IsBlockOutside()', file layout/generic/TextOverflow.cpp
(Assignee)

Comment 1

7 years ago
There's a couple of assertions leading up to that:

###!!! ASSERTION: How'd we get a floated inline frame? The frame ctor should've dealt with this.: 'aReflowState.mStyleDisplay->mFloats == NS_STYLE_FLOAT_NONE', file layout/generic/nsLineLayout.cpp, line 1092
###!!! ASSERTION: How'd we get a floated inline frame? The frame ctor should've dealt with this.: 'isText || reflowStateHolder.ref().mStyleDisplay->mFloats == NS_STYLE_FLOAT_NONE', file layout/generic/nsLineLayout.cpp, line 1019
OS: Mac OS X → All
Hardware: x86 → All
(Assignee)

Comment 2

7 years ago
Created attachment 549807 [details]
Testcase #2

<math><div/></math> triggers just the "unexpected block frame" assertion and not the float related ones in comment 1.
The float assertions there are bogus when MathML is involved, as things stand....
(Assignee)

Comment 4

7 years ago
Created attachment 549814 [details]
Frame tree for Testcase #2

Hmm, this frame tree looks weird to me, why does the line have "state=inline"
and why is there no -moz-mathml-anonymous-block frame?
(Assignee)

Comment 5

7 years ago
Created attachment 549816 [details]
Testcase #3
(Assignee)

Comment 6

7 years ago
Created attachment 549817 [details]
Frame tree for Testcase #3
(Assignee)

Updated

7 years ago
Summary: "ASSERTION: unexpected block frame" with MathML, text-overflow, float → "ASSERTION: unexpected block frame" with MathML, text-overflow
(Assignee)

Comment 7

7 years ago
Created attachment 549849 [details] [diff] [review]
fix

Is the attached frame trees what we want them to be?
If so, then we need to ignore block child frames.
Assignee: nobody → matspal
Attachment #549849 - Flags: review?(roc)
The inline math frames containing blocks look wrong to me. Why aren't they being converted to anonymous blocks?
(Assignee)

Comment 9

7 years ago
Because 'wrapFrame' is false for the block, so it's added as is to 'newItems':
http://mxr.mozilla.org/mozilla-central/source/layout/base/nsCSSFrameConstructor.cpp#3779
Yeah, but it seems to me that it would make more sense for inline <math> elements to participate in IB-splitting like other inline elements do.
We could try to do that; would the math frame be able to deal?
(Assignee)

Updated

5 years ago
Attachment #549849 - Attachment is obsolete: true
Attachment #549849 - Flags: review?(roc)
Testcases #1 & #2 still assert on trunk. Testcase #3 no longer does (at least on linux64).

Updated

2 years ago
Blocks: 1336680
You need to log in before you can comment on or make changes to this bug.