Commit Graph
291 Commits
Author SHA1 Message Date
Ting-Yu Lin c182ed4f84 Bug 1908826 - Modernize collapsing margin data structure. r=layout-reviewers,emilio
- Drop the "ns" prefix, and move the class into mozilla namespace.

- Remove unnecessary constructors and `operator=` because compiler can generate
  them automatically.

- Change `get` to `Get` to conform to the coding style.

- Misc cosmetic fix such as adding braces.

Differential Revision: https://phabricator.services.mozilla.com/D217056
2024-07-23 06:29:48 +00:00
Iulian Moraru c3946b4ab0 Backed out changeset 07b27f0f7e21 (bug 1908826) for causing non unified build bustages on nsBlockReflowContext.h. CLOSED TREE 2024-07-23 04:55:23 +03:00
Ting-Yu Lin 16459adaa6 Bug 1908826 - Modernize collapsing margin data structure. r=layout-reviewers,emilio
- Drop the "ns" prefix, and move the class into mozilla namespace.

- Remove unnecessary constructors and `operator=` because compiler can generate
  them automatically.

- Change `get` to `Get` to conform to the coding style.

- Misc cosmetic fix such as adding braces.

Differential Revision: https://phabricator.services.mozilla.com/D217056
2024-07-22 21:06:54 +00:00
Ting-Yu Lin 2196dff2ca Bug 1896875 - Destroy line list and the frames in reverse order to avoid non-linear time complexity. r=layout-reviewers,eeejay,emilio
This patch is similar to
https://hg.mozilla.org/mozilla-central/rev/e8114275db22

We destroy the line list and the frames in reverse order to avoid unnecessary
first-in-flow and first-continuation cache update.

Differential Revision: https://phabricator.services.mozilla.com/D211681
2024-05-28 16:53:23 +00:00
Ting-Yu Lin 3b85ae14c5 Bug 1839994 Part 3 - Improve the implementation and docs around mHasForcedLineBreak and mFloatClearType. r=dholbert
Rename `mHasForcedLineBreak` to `mHasForcedLineBreakAfter` since block lines
don't need to set this bit. This patch removes setting the bit in
`SetFloatClearTypeBefore()`, and adds an assertion in
`HasForcedLineBreakAfter()` to ensure that.

Improve `HasFloatClearType(Before|After)` implementation by using
`FloatClearType(Before|After)`.

This patch doesn't change behavior.

Differential Revision: https://phabricator.services.mozilla.com/D205154
2024-03-20 17:05:42 +00:00
Norisz Fay a7b0088da8 Backed out 4 changesets (bug 1865012) for causing mochitest failure on test_gencontent.html CLOSED TREE
Backed out changeset 95d920859b91 (bug 1865012)
Backed out changeset 26f6c2765cb5 (bug 1865012)
Backed out changeset 30a3c356ebc9 (bug 1865012)
Backed out changeset 4fb71ff990ae (bug 1865012)
2024-01-23 02:17:49 +02:00
Ting-Yu Lin 93ff832b21 Bug 1865012 Part 2 - Add nsFrameList::RemoveLastChild, and destroy frame list in reverse order. r=dholbert
With only the Part 1, `layout/generic/crashtests/1683126.html` will timeout.
It can be reproduced locally via

```
./mach crashtest layout/generic/crashtests/1683126.html
```

It is because if we destroy a frame list from the first child to the last child,
each time we destroy the first child [1], the second child become the new first
child, and we have to update the first-in-flow and first-continuation cache for
later continuations, which is a linear time operation.

[1] See nsSplittableFrame::RemoveFromFlow() with the argument being the first
child in a frame list.

Differential Revision: https://phabricator.services.mozilla.com/D197967
2024-01-22 19:50:48 +00:00
Sylvestre Ledru b0fe72dee5 Bug 1856795 - Remove redundant member init r=emilio
Done with:
./mach static-analysis check --checks="-*, readability-redundant-member-init" --fix .

https://clang.llvm.org/extra/clang-tidy/checks/readability/redundant-member-init.html

Differential Revision: https://phabricator.services.mozilla.com/D190002
2023-10-15 15:29:02 +00:00
Cristina Horotan 7388749830 Backed out 2 changesets (bug 1856795) for causing build bustage at BasicEvents.h CLOSED TREE
Backed out changeset 1d98b028923a (bug 1856795)
Backed out changeset eae2ac93e17c (bug 1856795)
2023-10-14 21:42:14 +03:00
Sylvestre Ledru 4a97019e39 Bug 1856795 - Remove redundant member init r=emilio
Done with:
./mach static-analysis check --checks="-*, readability-redundant-member-init" --fix .

https://clang.llvm.org/extra/clang-tidy/checks/readability/redundant-member-init.html

Differential Revision: https://phabricator.services.mozilla.com/D190002
2023-10-14 17:34:26 +00:00
Emilio Cobos Álvarez 6c324c6d1b Bug 1851868 - Refactor nsIFrame::Destroy to pass a single DestroyContext parameter. r=dholbert
This shouldn't change behavior, but it packs the two arguments to
DestroyFrom into a single thing, and makes nsIFrame::Destroy not so easy
to call without a previous context.

This is a prerequisite to pass aDestroyContext to various things that
right now just mint one, which can cause badness, see bug 1851787 and
related bugs.

It's also a bit nicer to add things there if we need to in the future.

Differential Revision: https://phabricator.services.mozilla.com/D187578
2023-09-07 11:46:30 +00:00
Narcis Beleuzu 33592fec5e Backed out changeset 55052ae7d067 (bug 1851868) for reftest failure on 1153695.html . CLOSED TREE 2023-09-07 02:42:25 +03:00
Emilio Cobos Álvarez 0698c96bd1 Bug 1851868 - Refactor nsIFrame::Destroy to pass a single DestroyContext parameter. r=dholbert
This shouldn't change behavior, but it packs the two arguments to
DestroyFrom into a single thing, and makes nsIFrame::Destroy not so easy
to call without a previous context.

This is a prerequisite to pass aDestroyContext to various things that
right now just mint one, which can cause badness, see bug 1851787 and
related bugs.

It's also a bit nicer to add things there if we need to in the future.

Differential Revision: https://phabricator.services.mozilla.com/D187578
2023-09-06 22:34:35 +00:00
Emilio Cobos Álvarez 1dfe44d7d4 Bug 1792333 - Factor out the "find closest frame in the line" checks. r=dholbert
Depends on D158085

Differential Revision: https://phabricator.services.mozilla.com/D158437
2022-10-02 07:06:46 +00:00
Ting-Yu Lin 78c77ab5fa Bug 1792134 Part 6 - More rename and clean up related to StyleClear. r=emilio
* Rename `mBreakType` to `mFloatClearType` in nsLineBox and nsReflowStatus and
  the methods around it.
* Rename `mBreakType` to `mClear` in nsStyleDisplay.
* Many other method parameters or local variables rename such as from
  `aBreakType` to `aClearType`.

Differential Revision: https://phabricator.services.mozilla.com/D158276
2022-09-29 03:40:56 +00:00
Ting-Yu Lin 4ba1c43b5f Bug 1792134 Part 5 - Improve nsLineBox log. r=emilio
* Print StyleClear value verbatim.
* Print mHasForcedLineBreak bit.
* Remove mAllFlags since I doubt anyone can decipher FlagBits from it.

Differential Revision: https://phabricator.services.mozilla.com/D158226
2022-09-29 03:40:56 +00:00
Ting-Yu Lin 3ce44b3c06 Bug 1792134 Part 3 - Remove StyleClear::Line. r=emilio
Before this patch, StyleClear::Line indicates that the nsLineBox has break-after
but no float clearance (note we don't allow line break-before with clear:none);
StyleClear::None indicates the line has no break-before nor break-after.

In this patch, I added `mHasForcedLineBreak` bit in nsLineBox to indicate the
line has a break so that StyleClear can serve its original meaning -- the float
clearance. In Part 6, I'll rename more existing methods and variables related to
float clearance.

Now, instead of using StyleClear::None to clear the line break status, the
caller should use ClearForcedLineBreak(); Similar to set
SetInlineLineBreakBeforeAndReset() and SetInlineLineBreakAfter on
nsReflowStatus, SetBreakTypeBefore/SetBreakTypeAfter on nsLineBox always sets
break status with an optional float clearance parameter.

This patch shouldn't change the behavior.

Differential Revision: https://phabricator.services.mozilla.com/D158224
2022-09-29 03:40:55 +00:00
Ting-Yu Lin 1f1d620f94 Bug 1792391 Part 3 - Override GetFrameName() for BRFrame, and improve nsLineBox::List(). r=emilio
Override GetFrameName() for BRFrame so that frame tree dump shows `BR(br)`
rather than `Frame(br)`.

Also, expand nsLineBox::StateToString() in List() to get rid of `cbuf`.

Differential Revision: https://phabricator.services.mozilla.com/D158111
2022-09-26 16:32:33 +00:00
Ting-Yu Lin 3092101882 Bug 498986 Part 2 - Remove unused nsFloatCache, nsFloatCacheList, and nsFloatCacheFreeList. r=emilio
Also, remove unused `LINE_MAX_CHILD_COUNT` in nsLineBox.h

Differential Revision: https://phabricator.services.mozilla.com/D157977
2022-09-23 06:42:09 +00:00
Ting-Yu Lin 602a614514 Bug 498986 Part 1 - Use nsTArray<nsIFrame*> to store float list in nsLineBox and BlockReflowState. r=emilio
Nowadays, nsFloatCache stores no extra information but `nsIFrame*`, which makes
nsFloatCacheList and nsFloatCacheFreeList are just singly and doubly linked
list of frames, respectively.

Most of this patch is a plain rewrite to use nsTArray APIs. There are two
rewrite that need more explanation.

1. `BlockReflowState::mFloatCacheFreeList` is served as a temporarily list to
   avoid extra allocations of nsFloatCache. It takes the ownership of floats
   from a line via FreeFloats(), and later reuses the cache in AddFloat().
   We don't need this anymore, so we remove it.

2. In `PlaceBelowCurrentLineFloats()`, the old code removes a float which
   needs to be pushed to next continuation from `mBelowCurrentLineFloats`.
   After looking through all of the floats, the remaining of
   `mBelowCurrentLineFloats` are moved to the line because they belong to the
   line. In this patch, rather than removing the pushed floats one by one from
   `mBelowCurrentLineFloats`, I use a new list to collect the floats that need
   to be added to the line, and just clear `mBelowCurrentLineFloats` at the
   end of the method.

Differential Revision: https://phabricator.services.mozilla.com/D157976
2022-09-23 06:42:09 +00:00
Ting-Yu Lin d3eb874b94 Bug 1791701 - Remove StyleClear::Max. r=emilio
The `static_assert` is not very useful and maybe too strict because `StyleClear`
is 8-bits, and we've asserted that `FlagBits` should be not greater than 32-bits
in nsLineBox.h.

Differential Revision: https://phabricator.services.mozilla.com/D157772
2022-09-21 15:26:51 +00:00
Jonathan Kew 2aefad4cba Bug 1732674 - Make nsLineIterator a lightweight wrapper for an nsLineList_iterator instead of building a separate array. r=emilio
Differential Revision: https://phabricator.services.mozilla.com/D126671
2021-11-09 15:55:54 +00:00
Norisz Fay eff51791b8 Backed out 2 changesets (bug 1732674) for line iterator crashes (bug 1733047) a=backout
Backed out changeset 730555699380 (bug 1732674)
Backed out changeset f529288a6dde (bug 1732674)
2021-10-20 12:24:14 +03:00
Jonathan Kew 7876f52255 Bug 1732674 - Make nsLineIterator a lightweight wrapper for an nsLineList_iterator instead of building a separate array. r=emilio
Differential Revision: https://phabricator.services.mozilla.com/D126671
2021-10-19 09:29:13 +00:00
criss 11a1ff81b1 Backed out changeset ce929d9e000a (bug 1732674) for causing nsLineIterator::FindLineContaining crashes (bug 1733047) . a=aryx 2021-10-16 12:46:38 +03:00
Jonathan Kew bdae338df9 Bug 1732674 - Make nsLineIterator a lightweight wrapper for an nsLineList_iterator instead of building a separate array. r=emilio
Differential Revision: https://phabricator.services.mozilla.com/D126671
2021-10-15 13:13:04 +00:00
Alexandru Michis ea4bf7df26 Backed out changeset a4ebb978f792 (bug 1732674) for causing layout crashes (bug 1733047). a=backout 2021-09-30 17:38:15 +03:00
Jonathan Kew c3d0562e7d Bug 1732674 - Make nsLineIterator a lightweight wrapper for an nsLineList_iterator instead of building a separate array. r=emilio
Differential Revision: https://phabricator.services.mozilla.com/D126671
2021-09-29 17:55:44 +00:00
Cristian Tuns 3093f32574 Backed out changeset 43d9f690a94f (bug 1732674) to fix nsLineIterator crashes (bug 1733047). CLOSED TREE 2021-09-29 03:45:51 -04:00
Jonathan Kew 122603416d Bug 1732674 - Make nsLineIterator a lightweight wrapper for an nsLineList_iterator instead of building a separate array. r=emilio
Differential Revision: https://phabricator.services.mozilla.com/D126671
2021-09-28 11:34:02 +00:00
Jonathan Kew 63a0a7ce02 Bug 1732355 - Eliminate the nsILineIterator::GetNextSiblingOnLine virtual method, whose only implementations are trivial. r=layout-reviewers,emilio
Depends on D126532

Differential Revision: https://phabricator.services.mozilla.com/D126533
2021-09-24 14:20:07 +00:00
Jonathan Kew be38903007 Bug 1732268 - Remove redundant failure-checks from nsLineIterator initialization, as it uses infallible allocation. r=dholbert
This means nsBlockFrame::GetLineIterator is also infallible, so callers that know
they're dealing with an nsBlockFrame (not an arbitrary nsIFrame) don't need to
check for null.

Differential Revision: https://phabricator.services.mozilla.com/D126470
2021-09-24 14:20:05 +00:00
Simon Giesecke 32d04cdc11 Bug 708901 - Migrate to nsTHashSet in layout. r=emilio
Differential Revision: https://phabricator.services.mozilla.com/D108597
2021-03-24 17:56:46 +00:00
Csoregi Natalia 37fe7677dd Backed out 13 changesets (bug 708901, bug 1184468) for causing build bustage on GeckoViewHistory.cpp. CLOSED TREE
Backed out changeset b1e4c01e63b8 (bug 708901)
Backed out changeset 37b52cce83c0 (bug 708901)
Backed out changeset eee75f33f060 (bug 708901)
Backed out changeset 479bf64c7986 (bug 708901)
Backed out changeset 15a8fb94d15d (bug 708901)
Backed out changeset be31ccd9a61d (bug 708901)
Backed out changeset fc54f4eaedd5 (bug 708901)
Backed out changeset 03c3a56c3d13 (bug 708901)
Backed out changeset 73f11d3c1298 (bug 708901)
Backed out changeset aed22fd80893 (bug 708901)
Backed out changeset 74d8249fbe7e (bug 708901)
Backed out changeset acb725eb3c1d (bug 1184468)
Backed out changeset 70f3ea6efec4 (bug 1184468)
2021-03-24 19:26:20 +02:00
Simon Giesecke cbe4b9ff3a Bug 708901 - Migrate to nsTHashSet in layout. r=emilio
Differential Revision: https://phabricator.services.mozilla.com/D108597
2021-03-24 16:58:58 +00:00
Ting-Yu Lin 558d6cf95c Bug 1677635 Part 4 - Rename nsOverflowAreas to OverflowAreas, and move it into mozilla namespace. r=layout-reviewers,emilio
This patch is generated via the rename functionality in my editor; add
`mozilla::` prefix to `OverflowAreas` in headers; and remove the
`OverflowType` alias added in Part 1.

Differential Revision: https://phabricator.services.mozilla.com/D97235
2020-11-18 00:08:12 +00:00
Ting-Yu Lin 03b90b8cfb Bug 1677635 Part 1 - Add an enum class mozilla::OverflowType, and remove NS_FOR_FRAME_OVERFLOW_TYPES. r=layout-reviewers,emilio
The existing nsOverflowType will be removed in the next part.

Also, I change `UnionRectIncludeEmpty` to `UnionRectEdges` in two FIXME
comments because the method is renamed in Bug 641426 Part 5
https://hg.mozilla.org/mozilla-central/rev/90e46b3e8e6f

Differential Revision: https://phabricator.services.mozilla.com/D97232
2020-11-17 23:45:09 +00:00
Kagami Sascha Rosylight 89af9ac562 Bug 1623764 - Part 3: Expose IsLineWrapped via LineInfo r=emilio
Differential Revision: https://phabricator.services.mozilla.com/D85922
2020-09-09 23:45:29 +00:00
Dorel Luca c06aa9beb0 Backed out 5 changesets (bug 1623764) for WPT failures in /editing/run/forwarddelete.html. CLOSED TREE
Backed out changeset 838b1a256f25 (bug 1623764)
Backed out changeset 00911e3c92c3 (bug 1623764)
Backed out changeset 5f7d278953d7 (bug 1623764)
Backed out changeset 0059379a3c29 (bug 1623764)
Backed out changeset 6e3a9276ec41 (bug 1623764)
2020-08-10 09:07:48 +03:00
Kagami Sascha Rosylight 54b6721545 Bug 1623764 - Part 3: Expose IsLineWrapped via LineInfo r=emilio
Differential Revision: https://phabricator.services.mozilla.com/D85922
2020-08-09 12:58:13 +00:00
Cosmin Sabou 02b4e95c49 Backed out 4 changesets (bug 1623764) for mochitest failures on test_movement_by_characters.html. CLOSED TREE
Backed out changeset f927522d89bc (bug 1623764)
Backed out changeset c100eb8ae430 (bug 1623764)
Backed out changeset 1147ded16458 (bug 1623764)
Backed out changeset 7af572ec5edf (bug 1623764)
2020-08-06 08:09:42 +03:00
Kagami Sascha Rosylight 103a7a492f Bug 1623764 - Part 3: Expose IsLineWrapped via LineInfo r=emilio
Differential Revision: https://phabricator.services.mozilla.com/D85922
2020-08-05 13:24:22 +00:00
Ting-Yu Lin ede6f9503a Bug 1637130 - Rename visual overflow to ink overflow. r=dbaron
This patch is generated by:

```
# Rename the nsOverflowType enum.
rg -l "eVisualOverflow" layout/ gfx/ | xargs sed -i "s/eVisualOverflow/eInkOverflow/g"

# Rename and drop the "Get" prefix from various functions.
rg -l "GetVisualOverflowRect" layout/ gfx/ | xargs sed -i "s/GetVisualOverflowRect/InkOverflowRect/g"
rg -l "GetPreEffectsVisualOverflowRect" layout/ gfx/ | xargs sed -i "s/GetPreEffectsVisualOverflowRect/PreEffectsInkOverflowRect/g"
rg -l "GetVisualOverflowFromDeltas" layout/ gfx/ | xargs sed -i "s/GetVisualOverflowFromDeltas/InkOverflowFromDeltas/g"
rg -l "GetScrollableOverflowRect" layout/ gfx/ | xargs sed -i "s/GetScrollableOverflowRect/ScrollableOverflowRect/g"

# Rename, drop the "Get" prefix, and change the suffix "Area" to "Rect"
# (because they return nsRect) for the two methods in nsLineBox.
rg -l "GetVisualOverflowArea" layout/ gfx/ | xargs sed -i "s/GetVisualOverflowArea/InkOverflowRect/g"
rg -l "GetScrollableOverflowArea" layout/ gfx/ | xargs sed -i "s/GetScrollableOverflowArea/ScrollableOverflowRect/g"

# Rename rest of the functions and variables.
rg -l "VisualOverflow" layout/ gfx/ | xargs sed -i "s/VisualOverflow/InkOverflow/g"
rg -l "visual overflow" layout/ gfx/ | xargs sed -i "s/visual overflow/ink overflow/g"
rg -l "visualOverflow" layout/ gfx/ | xargs sed -i "s/visualOverflow/inkOverflow/g"
rg -l "visOverflow" layout/ gfx/ | xargs sed -i "s/visOverflow/inkOverflow/g"
rg -l "vis-overflow" layout/ gfx/ python/ | xargs sed -i "s/vis-overflow/ink-overflow/g"

./mach clang-format
```

Differential Revision: https://phabricator.services.mozilla.com/D84231
2020-07-20 20:17:36 +00:00
Kagami Sascha Rosylight b1b3a9c754 Bug 1652188 - Return struct from nsILineIterator::GetLine() r=emilio
Differential Revision: https://phabricator.services.mozilla.com/D83215
2020-07-13 18:36:30 +00:00
Ting-Yu Lin 607a6ccd92 Bug 1651202 Part 2 - Minor format tweaks for block frame's frame tree output. r=heycam
Make the following tweak so that they are consistent with others.

* Add a space before the open angle bracket. This is at the end of
`Block(div)(1)@7f10e25de5d0 ... <`

* Tweak nsLineBox format.
`line 7f10e25de808: count=1` becomes `line@7f10e25de808 count=1`.

* Tweak child list format.
`AbsoluteList 0x7f10e3c7e560` becomes `AbsoluteList@7f10e3c7e560`

Differential Revision: https://phabricator.services.mozilla.com/D82603
2020-07-08 05:37:39 +00:00
Kagami Sascha Rosylight 5f988b0085 Bug 1630704 - Part 28: Remove nsFrame r=emilio
Differential Revision: https://phabricator.services.mozilla.com/D81865
2020-07-06 22:38:11 +00:00
Kagami Sascha Rosylight 0a3a447bbb Bug 1647525 - Use HasAnyStateBits() in remaining layout files r=emilio
Differential Revision: https://phabricator.services.mozilla.com/D81230
2020-06-28 01:00:19 +00:00
Mirko Brodesser 4286ea1d12 Bug 1626665: part 11) Declare nsILineIterator::GetNumLines const. r=hsivonen
Depends on D70015

Differential Revision: https://phabricator.services.mozilla.com/D70016
2020-04-08 06:57:07 +00:00
Mirko Brodesser 933d6d24db Bug 1626665: part 10) Declare nsILineIterator::FindFrameAt const. r=hsivonen
Depends on D70014

Differential Revision: https://phabricator.services.mozilla.com/D70015
2020-04-08 06:57:00 +00:00
Mirko Brodesser aa420b3a7f Bug 1626665: part 8) Declare nsLineIterator::GetNextSiblingOnLine const. r=hsivonen
Depends on D70012

Differential Revision: https://phabricator.services.mozilla.com/D70013
2020-04-08 06:55:41 +00:00