-
Notifications
You must be signed in to change notification settings - Fork 3.3k
Account for spacing around mo
in WPT test width-height-001.html
#48569
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
For `mo` elements, the preferred width of a shrink wrapper around the operator includes the spacing around it. This change introduces a special case for `mo` to account for this. Bug: 370553386 Change-Id: Ie220443b57bb5ab63fd996acf9ec760a02ca612a Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/5924353 Reviewed-by: Ian KilpatrickCommit-Queue: Ian Kilpatrick Reviewed-by: Frédéric Wang Cr-Commit-Position: refs/heads/main@{#1367094}
adcea26
to
6bd7854
Compare
wpt-pr-bot
approved these changes
Oct 10, 2024
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The review process for this patch is being conducted in the Chromium project.
webkit-commit-queue
pushed a commit
to fred-wang/WebKit
that referenced
this pull request
Oct 30, 2024
https://bugs.webkit.org/show_bug.cgi?id=281292 Reviewed by Rob Buis. This patch implements support for the width/height properties on MathML elements [1]. The general algorithm from the spec is as follows: (1) The outcome of the math layout is a "math content box". (2) The content box sets its size from computed width/height values. If auto, it's the one of the "math content box". This patch ignores percentage values for now [2] [3]. (3) math content box is shifted so that its inline-start and top edges aligns with the ones of the content box. There are exceptions elements like mfrac and munder/mover/munderover which instead horizontally center the math content box within the content box. For baseline adjustment, we follow what other browsers do, see [4]. (4) Padding+border are added around the content box. Note that we ignore the box-sizing property for now [5]. The patch essentially tweaks the various MathML layout algorithms to perform steps (3) and (4) before the calls to adjustPreferredLogicalWidthsForBorderAndPadding() and adjustLayoutForBorderAndPadding(). In particular this might slightly change current behavior for mrow-like layout. More tweaks might be needed would be handled in follow-up patches. [1] https://w3c.github.io/mathml-core/#layout-algorithms [2] w3c/mathml-core#76 [3] w3c/mathml-core#77 [4] w3c/mathml-core#259 [5] w3c/mathml-core#257 [6] web-platform-tests/wpt#48569 * LayoutTests/TestExpectations: width-height-003.html PASS. msqrt case for width-height-003.html still has small diff. * LayoutTests/imported/w3c/web-platform-tests/mathml/presentation-markup/spaces/mspace-width-height-001-expected.txt: Removed. * LayoutTests/imported/w3c/web-platform-tests/mathml/relations/css-styling/width-height-001-expected.txt: We pass everything except preferred mo size because of how we handle lspace/rspace, see [6]. * LayoutTests/imported/w3c/web-platform-tests/mathml/relations/css-styling/width-height-004-expected.txt: Remove new lines in txt expectation. * LayoutTests/imported/w3c/web-platform-tests/mathml/relations/css-styling/width-height-005-expected.txt: Use a platform-independent "everything PASS" expectation. * LayoutTests/imported/w3c/web-platform-tests/mathml/relations/css-styling/width-height-006-expected.txt: Use a platform-independent "everything PASS" expectation. * LayoutTests/platform/glib/imported/w3c/web-platform-tests/mathml/relations/css-styling/width-height-001-expected.txt: Removed. * LayoutTests/platform/glib/imported/w3c/web-platform-tests/mathml/relations/css-styling/width-height-005-expected.txt: Removed. * LayoutTests/platform/glib/imported/w3c/web-platform-tests/mathml/relations/css-styling/width-height-006-expected.txt: Removed. * LayoutTests/platform/ios/imported/w3c/web-platform-tests/mathml/relations/css-styling/width-height-005-expected.txt: Removed. * LayoutTests/platform/ios/imported/w3c/web-platform-tests/mathml/relations/css-styling/width-height-006-expected.txt: Removed. * LayoutTests/platform/mac/imported/w3c/web-platform-tests/mathml/relations/css-styling/width-height-005-expected.txt: Removed. * LayoutTests/platform/mac/imported/w3c/web-platform-tests/mathml/relations/css-styling/width-height-006-expected.txt: Removed. * LayoutTests/imported/w3c/web-platform-tests/mathml/presentation-markup/spaces/mspace-width-height-001-expected.txt: Added. Use a platform-independent "everything PASS" expectation. * LayoutTests/mathml/presentation/mspace-prefered-width-expected.html: This was initially added in 136708@main, tweak expectation now that we support width on mspace. * LayoutTests/platform/glib/imported/w3c/web-platform-tests/mathml/relations/css-styling/display-2-expected.txt: Update now that we support width/height on MathML elements. * LayoutTests/platform/ios/imported/w3c/web-platform-tests/mathml/relations/css-styling/display-2-expected.txt: Ditto. * LayoutTests/platform/mac/imported/w3c/web-platform-tests/mathml/relations/css-styling/display-2-expected.txt: Ditto. * Source/WebCore/rendering/mathml/RenderMathMLBlock.cpp: (WebCore::RenderMathMLBlock::sizeAppliedToMathContent): New helper to retrieve the specified CSS width/height, if any. (WebCore::RenderMathMLBlock::applySizeToMathContent): New helper to apply the specified CSS width/height to the math content box and return inline shift for further adjustments. * Source/WebCore/rendering/mathml/RenderMathMLBlock.h: (WebCore::RenderMathMLBlock::isMathContentCentered const): New helper to indicate whether math content should be centered on the inline axis if a different size is specified by the user. * Source/WebCore/rendering/mathml/RenderMathMLFraction.cpp: (WebCore::RenderMathMLFraction::computePreferredLogicalWidths): Account for specified sizes. (WebCore::RenderMathMLFraction::layoutBlock): Apply specified sizes, adjust children position. (WebCore::RenderMathMLFraction::paint): Comment about fraction bar painting. * Source/WebCore/rendering/mathml/RenderMathMLFraction.h: MathML Core says fraction content is centered. * Source/WebCore/rendering/mathml/RenderMathMLMenclose.cpp: (WebCore::RenderMathMLMenclose::computePreferredLogicalWidths): Account for specified sizes. (WebCore::RenderMathMLMenclose::layoutBlock): Apply specified sizes, adjust children position. * Source/WebCore/rendering/mathml/RenderMathMLPadded.cpp: (WebCore::RenderMathMLPadded::computePreferredLogicalWidths): Account for specified sizes. (WebCore::RenderMathMLPadded::layoutBlock): Apply specified sizes, adjust children position. * Source/WebCore/rendering/mathml/RenderMathMLRoot.cpp: (WebCore::RenderMathMLRoot::computePreferredLogicalWidths): Account for specified sizes. (WebCore::RenderMathMLRoot::layoutBlock): Apply specified sizes, adjust children position. * Source/WebCore/rendering/mathml/RenderMathMLRow.cpp: (WebCore::RenderMathMLRow::computePreferredLogicalWidths): Account for specified sizes. (WebCore::RenderMathMLRow::layoutBlock): Apply specified sizes, adjust children position. This also removes previous setLogicalHeight() and updateLogicalHeight() calls. * Source/WebCore/rendering/mathml/RenderMathMLScripts.cpp: (WebCore::RenderMathMLScripts::computePreferredLogicalWidths): Account for specified sizes. (WebCore::RenderMathMLScripts::layoutBlock): Apply specified sizes, adjust children position. * Source/WebCore/rendering/mathml/RenderMathMLSpace.cpp: (WebCore::RenderMathMLSpace::computePreferredLogicalWidths): Account for specified sizes. (WebCore::RenderMathMLSpace::layoutBlock): Apply specified sizes. Minor refactoring to make sure border/padding are handled after. * Source/WebCore/rendering/mathml/RenderMathMLUnderOver.cpp: (WebCore::RenderMathMLUnderOver::computePreferredLogicalWidths): Account for specified sizes. (WebCore::RenderMathMLUnderOver::layoutBlock): Apply specified sizes, adjust children position. * Source/WebCore/rendering/mathml/RenderMathMLUnderOver.h: MathML Core says munder/mover/munderover content is centered. Canonical link: https://commits.webkit.org/285892@main
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
For
mo
elements, the preferred width of a shrink wrapper around theoperator includes the spacing around it.
This change introduces a special case for
mo
to account for this.Bug: 370553386
Change-Id: Ie220443b57bb5ab63fd996acf9ec760a02ca612a
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/5924353
Reviewed-by: Ian Kilpatrick <[email protected]>
Commit-Queue: Ian Kilpatrick <[email protected]>
Reviewed-by: Frédéric Wang <[email protected]>
Cr-Commit-Position: refs/heads/main@{#1367094}