Commit Graph
304 Commits
Author SHA1 Message Date
serge-sans-paille 03b0f2574c Bug 2040876 - Activate modernize-use-bool-literals clang-tidy check r=emilio,webrtc-reviewers,cookie-reviewers,places-reviewers,layout-reviewers,mak,bwc
Differential Revision: https://phabricator.services.mozilla.com/D301473
2026-05-25 21:13:49 +00:00
Cristian Tuns be8c54e3a0 Revert "Bug 2036400 - Initialize uninitialized scalar fields in layout to fix Coverity uninitialized-scalar defects r=layout-reviewers,emilio" for causing build bustages in SVGFilterInstance.h
This reverts commit 8b52e50a4f.
2026-05-05 07:13:05 +00:00
Sylvestre Ledru 8b52e50a4f Bug 2036400 - Initialize uninitialized scalar fields in layout to fix Coverity uninitialized-scalar defects r=layout-reviewers,emilio
Differential Revision: https://phabricator.services.mozilla.com/D298137
2026-05-05 06:45:16 +00:00
Eugeniusz Lewandowski fc8097fcc3 Bug 1650944 - Remove ReflowInput.h include from nsIFrame.h r=firefox-style-system-reviewers,layout-reviewers,emilio
Removed the Reflow Input in nsIFrame. Added includes for ReflowInput as
necessary in cpp files. Also Forward Declared nsLineLayout in 3 header
files.

Differential Revision: https://phabricator.services.mozilla.com/D298203
2026-05-04 12:06:23 +00:00
Emilio Cobos Álvarez f7efde6865 Bug 2028314 - Deindent Stretch(). r=fredw
Make it a bit easier to read.

Differential Revision: https://phabricator.services.mozilla.com/D291359
2026-04-01 18:23:45 +00:00
Frédéric Wang Nélar b1a1dcc0b1 Bug 2026637 - Determine RTL direction from nsIFrame::mWritingMode. r=emilio,layout-reviewers
Differential Revision: https://phabricator.services.mozilla.com/D290141
2026-03-26 20:02:07 +00:00
Emilio Cobos Álvarez 5016086e1a Bug 2025089 - Remove some includes from nsINode.h and Element.h. r=dom-core,dom-storage-reviewers,firefox-svg-reviewers,janv,smaug
Differential Revision: https://phabricator.services.mozilla.com/D289049
2026-03-22 23:45:55 +00:00
Sylvestre Ledru 55481ac4b5 Bug 2023419 - Remove Emacs/Vim modelines from layout/ r=emilio,firefox-style-system-reviewers,layout-reviewers
replaced by .editorconfig

Differential Revision: https://phabricator.services.mozilla.com/D287852
2026-03-17 12:05:43 +00:00
Frédéric Wang Nélar 5cb017739f Bug 2023057 - Fix a regression from bug 2018114 that breaks MathML lspace support. r=emilio,layout-reviewers
This also add a WPT test checking lspace/rspace of <mo> more thoroughly.

Differential Revision: https://phabricator.services.mozilla.com/D287523
2026-03-14 07:18:56 +00:00
rperta bf39a98e29 Revert "Bug 2023057 - Fix a regression from bug 2018114 that breaks MathML lspace support. r=emilio,layout-reviewers" for causing wpt failures at embellished-operator-001.html
This reverts commit a424a57dc7.
2026-03-13 15:05:18 +00:00
Frédéric Wang Nélar a424a57dc7 Bug 2023057 - Fix a regression from bug 2018114 that breaks MathML lspace support. r=emilio,layout-reviewers
This also add a WPT test checking lspace/rspace of <mo> more thoroughly.

Differential Revision: https://phabricator.services.mozilla.com/D287523
2026-03-13 13:43:33 +00:00
Frédéric Wang c9bc3dd5f7 Bug 2018114 - Part 2: Use lspace/rspace of the core operator during mrow layout. r=layout-reviewers,dshin
For math/mtd, we still include lspace/rspace when we adjust the size of
children in `AddInterFrameSpacingToSize` until bug 2018403 is fixed.

Differential Revision: https://phabricator.services.mozilla.com/D284282
2026-02-25 17:17:36 +00:00
Frédéric Wang 4f2f84ec20 Bug 2018114 - Part 1: Don't take into account lspace/rspace for inline size of embellished operators. r=layout-reviewers,dshin
This is controlled by a new lspace_rspace_for_child_spacing_during_mrow_layout
preference (currently only enabled in nightly), which will also account for
lspace/rspace values in a follow-up patch.

Differential Revision: https://phabricator.services.mozilla.com/D284281
2026-02-25 17:17:33 +00:00
Serban Stanca 73daa84cf5 Revert "Bug 2018114 - Part 3: Add more tests for lspace/rspace and update expectations. r=emilio" for causing bp-nu bustages in nsMathMLContainerFrame.cpp.
This reverts commit b8a5fb1b58.

This reverts commit def02242e1.

This reverts commit d87631000a.
2026-02-25 12:18:55 +00:00
Frédéric Wang def02242e1 Bug 2018114 - Part 2: Use lspace/rspace of the core operator during mrow layout. r=layout-reviewers,dshin
For math/mtd, we still include lspace/rspace when we adjust the size of
children in `AddInterFrameSpacingToSize` until bug 2018403 is fixed.

Differential Revision: https://phabricator.services.mozilla.com/D284282
2026-02-25 11:17:03 +00:00
Frédéric Wang d87631000a Bug 2018114 - Part 1: Don't take into account lspace/rspace for inline size of embellished operators. r=layout-reviewers,dshin
This is controlled by a new lspace_rspace_for_child_spacing_during_mrow_layout
preference (currently only enabled in nightly), which will also account for
lspace/rspace values in a follow-up patch.

Differential Revision: https://phabricator.services.mozilla.com/D284281
2026-02-25 11:17:01 +00:00
Frédéric Wang 96ed4866fa Bug 2013273 - Make GetPreferredStretchSize calculation mode an enum class. r=layout-reviewers,dshin
STRETCH_CONSIDER_ACTUAL_SIZE is actually not used anymore, so only keep two
calculation modes.

Differential Revision: https://phabricator.services.mozilla.com/D281186
2026-02-03 16:01:00 +00:00
Frédéric Wang f0727f2777 Bug 2013273 - Make nsStretchDirection an enum class. r=emilio,layout-reviewers
Differential Revision: https://phabricator.services.mozilla.com/D280935
2026-02-03 16:00:41 +00:00
agoloman cdb00cbee7 Revert "Bug 2013273 - Make GetPreferredStretchSize calculation mode an enum class. r=layout-reviewers,dshin" for causing build bustages @nsMathMLOperators.h.
This reverts commit 9c8eddd444.

Revert "Bug 2013273 - Modernize implementation of nsOperatorFlags. r=layout-reviewers,dshin"

This reverts commit 6cbde817db.

Revert "Bug 2013273 - Ensure underlying types for MathMLFrameType and DrawingMethod are uint8_t. r=layout-reviewers,dshin"

This reverts commit bb3d80f482.

Revert "Bug 2013273 - Convert MathML stretch flags to mozilla::EnumSet. r=layout-reviewers,dshin"

This reverts commit 0abd326292.

Revert "Bug 2013273 - Make mtable eAlign an enum class. r=layout-reviewers,dshin"

This reverts commit da72abe4b4.

Revert "Bug 2013273 - Make nsMencloseNotation an enum class. r=layout-reviewers,dshin"

This reverts commit 1051d05264.

Revert "Bug 2013273 - Make nsStretchDirection an enum class. r=emilio,layout-reviewers"

This reverts commit a98c372331.
2026-02-03 09:57:20 +00:00
Frédéric Wang 9c8eddd444 Bug 2013273 - Make GetPreferredStretchSize calculation mode an enum class. r=layout-reviewers,dshin
STRETCH_CONSIDER_ACTUAL_SIZE is actually not used anymore, so only keep two
calculation modes.

Differential Revision: https://phabricator.services.mozilla.com/D281186
2026-02-03 09:06:28 +00:00
Frédéric Wang a98c372331 Bug 2013273 - Make nsStretchDirection an enum class. r=emilio,layout-reviewers
Differential Revision: https://phabricator.services.mozilla.com/D280935
2026-02-03 09:06:10 +00:00
Frédéric Wang 8b081f3c41 Bug 2009900 - Tweak formatting of kInterFrameSpacingTable. r=emilio,layout-reviewers
Differential Revision: https://phabricator.services.mozilla.com/D278765
2026-01-14 12:16:30 +00:00
Frédéric Wang 019fe456f9 Bug 2009900 - Convert GET_INTERSPACE C macro to a C++ function. r=emilio,layout-reviewers
Differential Revision: https://phabricator.services.mozilla.com/D278764
2026-01-14 12:16:27 +00:00
Frédéric Wang f6477839d2 Bug 2009900 - remove unused scriptlevel param in MathML interframe spacing code. r=emilio,layout-reviewers
This is suppose to be considered for entries of `kInterFrameSpacingTable`
that have a non-zero halfbyte but that's no longer happening since
bug 133761.

Differential Revision: https://phabricator.services.mozilla.com/D278763
2026-01-14 12:16:25 +00:00
Frédéric Wang 005746a844 Bug 2009616 - Fix a Coverity false positive for GetInterfameSpacingFor(). r=emilio,layout-reviewers
After switching the old MathML interspacing code to enum class, Coverity
complains that GET_INTERSPACE could overrun `kInterFrameSpacingTable` if
the value `MathMLFrameType::Count` is passed as a frame type. This is
actually just used to determine the size of `kInterFrameSpacingTable`
and is not an actual frame type used by the MathML code. So remove it
from the enum and convert it to a constexpr MathMLFrameTypeCount instead.
To conveniently calculate it, we move the `MathMLFrameType::Unknown`
at the last position of the enum class.

Differential Revision: https://phabricator.services.mozilla.com/D278739
2026-01-13 14:53:53 +00:00
Frédéric Wang ad2f25ae65 Bug 2008902 - Make eMathMLFrameType an enum class. r=emilio,layout-reviewers
Differential Revision: https://phabricator.services.mozilla.com/D278101
2026-01-08 15:26:36 +00:00
Frédéric Wang 291e676b1d Bug 2008902 - Convert MathML embellish flags to mozilla::EnumSet. r=emilio,layout-reviewers
Differential Revision: https://phabricator.services.mozilla.com/D278100
2026-01-08 15:26:33 +00:00
Frédéric Wang eb94b292ae Bug 2008902 - Convert MathML presentation flags to mozilla::EnumSet. r=emilio,layout-reviewers
Differential Revision: https://phabricator.services.mozilla.com/D278091
2026-01-08 15:26:30 +00:00
Frédéric Wang e8d5fdd3ed Bug 1925478 - Remove nsMathMLContainerFrame::DidReflow. r=layout-reviewers,emilio
nsMathMLContainerFrame (and its derived classes) relies on a
FinishReflow() method that is called at the end of Reflow(). So just
clear the NS_MATHML_STRETCH_DONE bit there instead of DidReflow().

Differential Revision: https://phabricator.services.mozilla.com/D226118
2025-10-11 19:12:53 +00:00
Eri Pazos Pérez 5a7ec7cbb1 Bug 1925478 - Remove unused paths from nsMathMLContainerFrame::Place r=emilio,fredw,layout-reviewers
Preliminary patch to removing the return value of Place, as it is always
NS_OK. The logic associated with it being false has also been removed,
along with DidReflowChildren, which was only called in these paths.

Differential Revision: https://phabricator.services.mozilla.com/D265801
2025-09-23 14:41:03 +00:00
Masayuki Nakano b38a095a5e Bug 769207 - part 6: Make nsMathMLContainerFrame::ChildListChanged() stop taking the attribute modification type r=layout-reviewers,emilio
It's unused.

Differential Revision: https://phabricator.services.mozilla.com/D263057
2025-09-08 00:27:52 +00:00
Emilio Cobos Álvarez a8a2311474 Bug 1976457 - Sort includes in layout/. r=janv,dshin
Interesting bit is layout/.clang-format, the rest is all automated.

Differential Revision: https://phabricator.services.mozilla.com/D256616
2025-07-09 13:24:00 +00:00
Tom Schuster b8d11d463f Bug 1951893 - Remove unneeded StaticAtom suffixes. r=emilio
Differential Revision: https://phabricator.services.mozilla.com/D240598
2025-03-11 11:36:09 +00:00
Jonathan Watt 3eab38263b Bug 1931736. Add missing braces around if/loop statements in layout/mathml/. r=layout-reviewers,emilio
Depends on D229249

Differential Revision: https://phabricator.services.mozilla.com/D229250
2024-11-17 05:03:59 +00:00
Emilio Cobos Álvarez 1d78b7cf40 Bug 1925478 - Simplify nsMathMLContainerFrame::DidReflowChildren. r=fredw
No behavior change.

Differential Revision: https://phabricator.services.mozilla.com/D226144
2024-10-18 19:19:48 +00:00
Frédéric Wang 9c073c74f4 Bug 1916988 - Support CSS width/height properties on MathML elements. r=emilio
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 Chromium does, 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
GetBorderPaddingForPlace and InflateReflowAndBoundingMetrics.

[1] https://w3c.github.io/mathml-core/#layout-algorithms
[2] https://github.com/w3c/mathml-core/issues/76
[3] https://github.com/w3c/mathml-core/issues/77
[4] https://github.com/w3c/mathml-core/issues/259
[5] https://github.com/w3c/mathml-core/issues/257

Below is more information about test coverage:

- width-height-001: Verify that width, height, inline-size and block-size
  properties sets the size of the content box. This test used to verify
  they are ignored, this patch fixes the `<meta name="assert">` tag.
  It also adds a test for the case the specified size is smaller than the
  content (we force non empty descendants to make sure this content is
  large enough) and to verify the width is used for the preferred width.

- width-height-002, width-height-003: These are reftests visually checking
  offsets of the math content box within a larger content box (specified
  by width/height) for the mtext, mrow, mpadded, mfrac, msqrt, mroot,
  in LTR/RTL modes. In particular they allow to verify some painted
  elements like fraction bar and radical symbols.

- width-height-004: This test more directly checks that the math content
  box is horizontally centered within a larger content box for munder,
  mover, munderover and mfrac. This patch extends the test to cover the
  case when the math content box is wider (i.e. overflowing outside the
  content box) and removes unnecessary specified height.

- width-height-005: New test for other layout algorithm that don't
  center the math content box, checking inline-start edges of children
  when a width is specified. We check both LTR/RTL modes and
  wider/narrower content boxes.

- width-height-006: Same but checking the top edges for larger/smaller
  height and verifying that baseline is perserved.

Differential Revision: https://phabricator.services.mozilla.com/D221436
2024-09-30 12:18:39 +00:00
Frédéric Wang a5c1ebec25 Bug 1918989 - Remove disabled SHOW_BOUNDING_BOX MathML code. r=emilio
Differential Revision: https://phabricator.services.mozilla.com/D222260
2024-09-16 13:27:10 +00:00
Frédéric Wang fd971f48a2 Bug 1918308 - Don't always force a reflow in nsMathMLContainerFrame::AttributeChanged. r=emilio
Currently, nsMathMLContainerFrame::AttributeChanged always force a
reflow. This patch removes that behavior tweaks the following derived
classes:

- menclose: Don't mark intrinsic size of descendants dirty, since the
  notation is added around the children, only affecting the element's
  metrics.

- mfrac: Don't mark intrinsic size dirty for the linethickness
  attribute, since it only affects vertical metrics.

- mo: Rebuild 'automatic' data and relayout the entire embellished
  operator hierarchy for all operator properties. I haven't checked the
  details of the MathML 'automatic' data, so it may be a bit too
  aggressive. But at least a reflow is necessary.

- mspace/mpadded: Only mark intrinsic size dirty for the element and
  ancestors, and only for attributes affecting vertical metrics. Also
  remove `InvalidateFrame()` call since we don't have any display item.

- mtable: Don't force reflow or data rebuild when displaystyle changes.
  This was probably needed before displaystyle was re-implemented as
  an attribute mapped to the math-style CSS property.

There is at least one dynamic test for each of the MathML
attributes affecting layout and they don't regress after this patch:
https://bugzilla.mozilla.org/show_bug.cgi?id=1918308#c0

Differential Revision: https://phabricator.services.mozilla.com/D221925
2024-09-13 14:19:45 +00:00
Frédéric Wang 148e63a1db Bug 1917763 - Remove nsMathMLContainerFrame::MeasureForWidth(). r=emilio
This method is now only used at one place (more precisely, inside the
nsMathMLContainerFrame::GetIntrinsicISizeMetrics() method) and only
calls the Place() method with the IntrinsicSize + MeasureOnly flags.
This patch removes it and instead ensure we call Place() directly from
GetIntrinsicISizeMetrics(). There is no behavior changes.

Differential Revision: https://phabricator.services.mozilla.com/D221630
2024-09-13 08:03:57 +00:00
Frédéric Wang 8bf5c0c677 Bug 1917763 - More consistent handling of MathML's AttributeChanged(). r=emilio
This patch tweaks implementation of AttributeChanged() in MathML layout
classes to be more consistent:

1. Only handle MathML-specific attributes in the default namespace.
2. Return immediately for class attributes, or forward the call to
   the parent class (or grandparent class).

Currently, nsMathMLContainerFrame::AttributeChanged() always forces a
reflow but this change does not cause new calls to it, except for the
edge case of accent/accentunder attributes in the non-default namespace
(nsMathMLmunderoverFrame). Not doing more for
nsMathMLmencloseFrame/nsMathMLmfracFrame breaks some tests, but we can
probably do a weaker invalidation. See bug 1918308 for a follow-up.

Differential Revision: https://phabricator.services.mozilla.com/D221921
2024-09-13 08:03:54 +00:00
Butkovits Atila aeafb698d8 Backed out 8 changesets (bug 1917763) for causing bustages at nsMathMLmspaceFrame.h. CLOSED TREE
Backed out changeset 7c7c002d7db2 (bug 1917763)
Backed out changeset 10eb2ccfa645 (bug 1917763)
Backed out changeset 9ba90d161930 (bug 1917763)
Backed out changeset ab7ce0058852 (bug 1917763)
Backed out changeset 19766c906c98 (bug 1917763)
Backed out changeset d1b87bb6e8d4 (bug 1917763)
Backed out changeset 043cf853e2cf (bug 1917763)
Backed out changeset a869862a66ec (bug 1917763)
2024-09-12 18:35:55 +03:00
Frédéric Wang 3dfc68ed39 Bug 1917763 - Remove nsMathMLContainerFrame::MeasureForWidth(). r=emilio
This method is now only used at one place (more precisely, inside the
nsMathMLContainerFrame::GetIntrinsicISizeMetrics() method) and only
calls the Place() method with the IntrinsicSize + MeasureOnly flags.
This patch removes it and instead ensure we call Place() directly from
GetIntrinsicISizeMetrics(). There is no behavior changes.

Differential Revision: https://phabricator.services.mozilla.com/D221630
2024-09-12 14:26:28 +00:00
Frédéric Wang 2c3a091055 Bug 1917763 - More consistent handling of MathML's AttributeChanged(). r=emilio
This patch tweaks implementation of AttributeChanged() in MathML layout
classes to be more consistent:

1. Only handle MathML-specific attributes in the default namespace.
2. Return immediately for class attributes, or forward the call to
   the parent class (or grandparent class).

Currently, nsMathMLContainerFrame::AttributeChanged() always forces a
reflow but this change does not cause new calls to it, except for the
edge case of accent/accentunder attributes in the non-default namespace
(nsMathMLmunderoverFrame). Not doing more for
nsMathMLmencloseFrame/nsMathMLmfracFrame breaks some tests, but we can
probably do a weaker invalidation. See bug 1918308 for a follow-up.

Differential Revision: https://phabricator.services.mozilla.com/D221921
2024-09-12 14:26:26 +00:00
Ting-Yu Lin 6af05a0977 Bug 1909761 Part 2 - Create a helper struct IntrinsicSizeInput to aggregate needed data when computing intrinsic inline size. r=dholbert
This patch changes the signature to `GetMinISize()`, `GetPrefISize()`,
`IntrinsicISize` by adding a helper struct as a preparation. Then we can just
add more data such as a percentage basis to the struct without altering the
signature in the future.

When passing `IntrinsicSizeInput` struct down to another helper method, we
generally just pass the original one if the method is computing the intrinsic
size of our own or our anonymous children. If the method is computing our
children's intrinsic contribution, we'll need to create a brand new
`IntrinsicSizeInput` for our children.

Differential Revision: https://phabricator.services.mozilla.com/D219521
2024-09-03 04:25:41 +00:00
Butkovits Atila 4d06404349 Backed out 6 changesets (bug 1909761) for causing failures at test_contextmenu_rtl.xhtml. CLOSED TREE
Backed out changeset 1e9f47784a54 (bug 1909761)
Backed out changeset d2dcf159185b (bug 1909761)
Backed out changeset 3f48c106bff9 (bug 1909761)
Backed out changeset 38d1e5eda09d (bug 1909761)
Backed out changeset 8de556490289 (bug 1909761)
Backed out changeset 4e7f22f43bb4 (bug 1909761)
2024-08-28 10:44:09 +03:00
Ting-Yu Lin f0ff97db90 Bug 1909761 Part 2 - Create a helper struct IntrinsicSizeInput to aggregate needed data when computing intrinsic inline size. r=dholbert
This patch changes the signature to `GetMinISize()`, `GetPrefISize()`,
`IntrinsicISize` by adding a helper struct as a preparation. Then we can just
add more data such as a percentage basis to the struct without altering the
signature in the future.

When passing `IntrinsicSizeInput` struct down to another helper method, we
generally just pass the original one if the method is computing the intrinsic
size of our own or our anonymous children. If the method is computing our
children's intrinsic contribution, we'll need to create a brand new
`IntrinsicSizeInput` for our children.

Differential Revision: https://phabricator.services.mozilla.com/D219521
2024-08-28 06:18:44 +00:00
Frédéric Wang 119638ac63 Bug 1908069 - Add border/padding/margin support to mrow-like elements. r=emilio
See D216670 for the general approach taken.

This also fixes nsMathMLContainerFrame::UpdateIntrinsicISize which is
in particular used by nsMathMLmathBlockFrame and
nsMathMLmathInlineFrame when calculating intrinsic size of the <math>
tag and aligns merror's UA style on MathML Core at
https://w3c.github.io/mathml-core/#user-agent-stylesheet.

Differential Revision: https://phabricator.services.mozilla.com/D216686
2024-08-07 06:00:44 +00:00
Frédéric Wang ad6375be7c Bug 1908069 - Add border/padding/margin support to <mfrac>. r=emilio
This is the first patch of the series that actually take
border/padding/margin into account for MathML layout. One subtility is
that Gecko distinguishes the ink nsBoundingMetrics box and the
ReflowOutput box for accurate positioning of math components contrary
to the current version of MathML Core [1].

For MathML Core and the WPT tests, it is assumed that border/padding are
used to inflate the content box [2] [3] and it does not really matter
whether we inflate the ink bounding box, or simply adjust its offsets
inside the normal bounding box. We choose the former and introduce a
helper function InflateReflowAndBoundingMetrics for that purpose, which
will be reused in follow-up patches. After inflating these boxes, the
offsets of children and painted items must also be adjusted by the
left/top border+padding.

Regarding margins, MathML Core says that we should use "margin boxes"
and WPT tests simply check that the layout of MathML constructions
containing mspace elements with margins is not changed if we move
these margins inside the mspace's width/height/depth attributes. To
pass these tests, we similarly need to inflate both the ink and
non-ink bounding boxes by the margin.

However, the margins can be negative possibly leading to negative
dimensions of "margin boxes". To make the code more generic, we
simplify adjust all usages of the children's nsBoundingMetrics and
ReflowOutput to include these margins. When calling FinishReflowChild
at the end, the offsets of children must be adjusted by these margins.

This patch also reimplements the extra one-pixel padding around a
fraction using rules from MathML Core's UA stylesheet at
https://w3c.github.io/mathml-core/#user-agent-stylesheet

[1] https://github.com/w3c/mathml-core/issues/78
[2] https://github.com/web-platform-tests/wpt/blob/27c8d234ee83a4b15f36ad10cc26c951b1782fb6/mathml/relations/css-styling/padding-border-margin/border-002.html#L25
[4] https://github.com/web-platform-tests/wpt/blob/27c8d234ee83a4b15f36ad10cc26c951b1782fb6/mathml/relations/css-styling/padding-border-margin/padding-002.html#L26
[3] https://github.com/web-platform-tests/wpt/blob/27c8d234ee83a4b15f36ad10cc26c951b1782fb6/mathml/relations/css-styling/padding-border-margin/margin-003.html#L50

Differential Revision: https://phabricator.services.mozilla.com/D216670
2024-08-07 06:00:44 +00:00
Frédéric Wang 8a08b8f2c0 Bug 1908069 - Introduce PlaceFlags parameter to MathML layout methods. r=emilio
MathML classes has a few Place*() methods  used for layout and intrinsic
size calculation. These methods have a parameter "aPlaceOrigin"
indicating whether the children and other painted objects should have
their final positions set, or if the method is only called for measuring.
This parameter is typically set to false when doing intrinsic size
calculation or when performing some non-final measurement for operator
stretching.

For intrinsic size calculation, it is generally enough to perform
placement with aPlaceOrigin=false and ignoring the vertical metrics.
Some Place*() methods also have a parameter "aWidthOnly" for special
handling. For example, msqrt stretches a radical symbol vertically to
match the height of the content but when doing intrinsic size
calculation this is approximated to nsMathMLChar::GetMaxWidth() instead.
When we implement border/padding/margin we should also be able to
choose between using IntrinsicISizeOffsets() or GetUsed*() methods.

Finally, some Place*() methods initially call a place routing of a
parent class before further tweaking the layout. For example, msqrt
uses mrow layout on children and adds some radical symbol on top of
them. When we implement border/padding, we should make sure we don't
add the border/padding before the final result.

In order to handle all these placement behaviors, a new EnumSet is
introduced. This commit does not change behavior. Handling of padding,
border and margin will be handled in follow-up patches.

Differential Revision: https://phabricator.services.mozilla.com/D216669
2024-08-07 06:00:43 +00:00
Iulian Moraru 096c9e730e Backed out 7 changesets (bug 1908069) for causing wr failures on mo-lspace-rspace-4.html. CLOSED TREE
Backed out changeset d497ae104185 (bug 1908069)
Backed out changeset c87b8ca300dc (bug 1908069)
Backed out changeset 3e76c02843a7 (bug 1908069)
Backed out changeset f4c5983c700b (bug 1908069)
Backed out changeset 5468da212605 (bug 1908069)
Backed out changeset ab5ab71ddfc4 (bug 1908069)
Backed out changeset 21269d373fff (bug 1908069)
2024-08-01 19:45:36 +03:00