Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: ecb5f40566661a88da9a13b922cc66d070140fcd
      
https://github.com/WebKit/WebKit/commit/ecb5f40566661a88da9a13b922cc66d070140fcd
  Author: Ahmad Saleem <[email protected]>
  Date:   2026-06-10 (Wed, 10 Jun 2026)

  Changed paths:
    M LayoutTests/TestExpectations
    M 
LayoutTests/imported/w3c/web-platform-tests/mathml/presentation-markup/mrow/stretch-along-block-axis-001-expected.txt
    M 
LayoutTests/imported/w3c/web-platform-tests/mathml/presentation-markup/scripts/underover-parameters-and-embellished-operator-1-expected.txt
    M 
LayoutTests/imported/w3c/web-platform-tests/mathml/presentation-markup/scripts/underover-parameters-and-embellished-operator-2-expected.txt
    M 
LayoutTests/platform/glib/imported/w3c/web-platform-tests/mathml/presentation-markup/mrow/stretch-along-block-axis-001-expected.txt
    M LayoutTests/platform/glib/mathml/opentype/opentype-stretchy-expected.txt
    M LayoutTests/platform/ios/mathml/opentype/opentype-stretchy-expected.txt
    M LayoutTests/platform/mac/mathml/opentype/opentype-stretchy-expected.txt
    M Source/WebCore/rendering/mathml/RenderMathMLRow.cpp
    M Source/WebCore/rendering/mathml/RenderMathMLRow.h

  Log Message:
  -----------
  [MathML] Support embellished operator detection through mrow for underover 
layout
https://bugs.webkit.org/show_bug.cgi?id=310582
rdar://173192995

Reviewed by Frédéric Wang Nélar.

RenderMathMLRow was missing an unembellishedOperator() override, so
embellished operators wrapped in mrow elements (e.g.
<mrow><mrow><mo>∑</mo></mrow></mrow>) were not recognized as such.

This affected multiple areas: verticalParameters() in munder/mover/munderover
fell through to wrong MATH table constants, shouldMoveLimits() couldn't detect
movablelimits through mrow, and horizontal stretchy operators inside mrow
wrappers were not stretched.

Per MathML Core spec section 3.2.4.1 [1], a grouping element (including mrow)
whose in-flow children consist of one embellished operator and zero or more
space-like elements is itself an embellished operator.

To avoid a double-stretching crash (assertion from.y() <= to.y() in
MathOperator::fillWithVerticalExtensionGlyph), 
stretchVerticalOperatorsAndLayoutChildren()
now skips internal stretching when the mrow is itself an embellished operator,
since the parent mrow is responsible for stretching it.

[1] https://w3c.github.io/mathml-core/#embellished-operators

* Source/WebCore/rendering/mathml/RenderMathMLRow.cpp:
(WebCore::RenderMathMLRow::unembellishedOperator const):
(WebCore::RenderMathMLRow::stretchVerticalOperatorsAndLayoutChildren):
* Source/WebCore/rendering/mathml/RenderMathMLRow.h:
* LayoutTests/TestExpectations: Progressions
* 
LayoutTests/imported/w3c/web-platform-tests/mathml/presentation-markup/scripts/underover-parameters-and-embellished-operator-1-expected.txt:
 Ditto
* 
LayoutTests/imported/w3c/web-platform-tests/mathml/presentation-markup/scripts/underover-parameters-and-embellished-operator-2-expected.txt:
 Ditto
* 
LayoutTests/imported/w3c/web-platform-tests/mathml/presentation-markup/mrow/stretch-along-block-axis-001-expected.txt:
 Partial subtest progressions
* 
LayoutTests/platform/glib/imported/w3c/web-platform-tests/mathml/presentation-markup/mrow/stretch-along-block-axis-001-expected.txt:
 Ditto
* LayoutTests/platform/mac/mathml/opentype/opentype-stretchy-expected.txt: 
Partially matching Blink now
* LayoutTests/platform/glib/mathml/opentype/opentype-stretchy-expected.txt: 
Ditto
* LayoutTests/platform/ios/mathml/opentype/opentype-stretchy-expected.txt: Ditto

Canonical link: https://commits.webkit.org/314924@main



To unsubscribe from these emails, change your notification settings at 
https://github.com/WebKit/WebKit/settings/notifications

Reply via email to