[Webkit-unassigned] [Bug 178865] ASSERTION FAILED: !renderer->needsLayout() in WebCore::RenderBlock::checkPositionedObjectsNeedLayout with MathML

bugzilla-daemon at webkit.org bugzilla-daemon at webkit.org
Wed Nov 15 04:52:10 PST 2017


https://bugs.webkit.org/show_bug.cgi?id=178865

--- Comment #2 from Frédéric Wang (:fredw) <fred.wang at free.fr> ---
Created attachment 326976

  --> https://bugs.webkit.org/attachment.cgi?id=326976&action=review

Patch (WIP)

I discussed that a bit with rego, and the absolutely-positioned HTML element is not a child of the MathML element so the crash is actually not due to how RenderMathMLRow::layoutRowItems performs

        if (child->isOutOfFlowPositioned()) {
            child->containingBlock()->insertPositionedObject(*child);
            continue;
        }

However, a similar insertPositionedObject call should happen inside the HTML renderers. And because of the CSS transform on it, the <math> element becomes the containing block of the absolutely-positioned HTML element and hence must call layoutPositionedObjects(). The attached patch does that and addresses the case reported here.

This is still WIP, we need to:

1) Call layoutPositionedObjects() in other MathML layout functions. For example the ASSERT will also happen with

      <math>
        <mtext style="position: relative">
          <span>
            <span style="position: absolute">X</span>
          </span>
        </mtext>
      </math>

2) Maybe call insertPositionedObject in other MathML layout functions too (probably a edge cases and not really important, for example Firefox does not handle that correctly either). For example compare the position of A and B in

      <math>
        <mtext style="position: absolute; left: 100px; top: 100px;">A</mtext>
        <mfrac>
          <mtext style="position: absolute; left: 100px; top: 100px;">B</mtext>
          <mtext></mtext>
        </mfrac>
      </math>

-- 
You are receiving this mail because:
You are the assignee for the bug.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.webkit.org/pipermail/webkit-unassigned/attachments/20171115/5f079b1e/attachment-0001.html>


More information about the webkit-unassigned mailing list