gecko-dev/layout/forms
Ting-Yu Lin f8731e5b3c Bug 1599159 - Break the child block frame reflow loop if there is a break-before. r=emilio
This patch is based on Mats Palmgren's idea bug 1599159 comment 0.

When a child block frame reports inline-break-before status after being
reflowed, its size in the returned reflow output shouldn't matter because the
parent is expected to push it to the next page/column [1].

Here is the detail of the debug assertion if the workaround in fieldset frame is
removed. In nsBlockReflowContext::ReflowBlock(), it sets mReflowOutput::BSize()
to 0xdeadbeef, which is a negative number in 32-bits integer. Without the early
break of the loop in nsBlockFrame::ReflowBlockFrame(), then later in the loop we
are going to pass the negative block-size to
BlockReflowState::GetFloatAvailableSpaceForBSize(), which triggers a `aBSize>=0`
assertion further down in the callstack in nsFloatManager::GetFlowArea().

layout/reftests/pagination/fieldset-00G.html can trigger the above assertion
after removing the workaround in fieldset frame.

I don't expect this patch will change the behavior even if there are some float
elements interacting with this block. Without the early breaking out of the
loop, we still end up in [1].

[1] https://searchfox.org/mozilla-central/rev/ace2c59e6c56b2dcba25af1aa8903a5e7f9a5857/layout/generic/nsBlockFrame.cpp#4026-4035

Differential Revision: https://phabricator.services.mozilla.com/D148815
2022-06-11 05:53:36 +00:00
..
crashtests
test Bug 1440506 - Do not destroy dropdowns on reframe. r=dholbert 2022-02-15 22:00:27 +00:00
HTMLSelectEventListener.cpp Bug 1773070 - Rename/remove some eventState/s variables. r=smaug 2022-06-07 23:09:54 +00:00
HTMLSelectEventListener.h Bug 1744009 - Accessibility fixes for new combobox layout code. r=eeejay 2022-01-17 11:10:05 +00:00
moz.build Bug 1754295 part 1: Fix non-unified build errors in layout/forms, and mark it as safe to build in non-unified mode. r=TYLin 2022-02-08 23:29:55 +00:00
nsButtonFrameRenderer.cpp Bug 1773070 - Unify Gecko and Servo EventState/ElementState bits. r=smaug 2022-06-07 23:09:52 +00:00
nsButtonFrameRenderer.h
nsCheckboxRadioFrame.cpp Bug 1750927 - Fix non-unified-build bustage in layout/forms/nsCheckboxRadioFrame.h; r=emilio 2022-01-19 10:39:04 +00:00
nsCheckboxRadioFrame.h Bug 1750927 - Fix non-unified-build bustage in layout/forms/nsCheckboxRadioFrame.h; r=emilio 2022-01-19 10:39:04 +00:00
nsColorControlFrame.cpp
nsColorControlFrame.h
nsComboboxControlFrame.cpp Bug 1773070 - Rename/remove some eventState/s variables. r=smaug 2022-06-07 23:09:54 +00:00
nsComboboxControlFrame.h Bug 1768157 - Remove kSelectPopupList. r=jwatt 2022-05-06 15:46:49 +00:00
nsDateTimeControlFrame.cpp
nsDateTimeControlFrame.h
nsFieldSetFrame.cpp Bug 1599159 - Break the child block frame reflow loop if there is a break-before. r=emilio 2022-06-11 05:53:36 +00:00
nsFieldSetFrame.h Bug 1745480 - Fix nsFieldSetFrame dependency on nsIScrollableFrame (idempotent change). r=emilio 2021-12-10 20:27:33 +00:00
nsFileControlFrame.cpp Bug 1773070 - Rename/remove some eventState/s variables. r=smaug 2022-06-07 23:09:54 +00:00
nsFileControlFrame.h Bug 1773070 - While at it rename ContentStateChanged to ElementStateChanged, and make it take elements. r=smaug 2022-06-07 23:09:54 +00:00
nsGfxButtonControlFrame.cpp
nsGfxButtonControlFrame.h
nsHTMLButtonControlFrame.cpp Bug 1755565 - Implement `contain: inline-size`. r=emilio,dholbert 2022-04-19 17:44:16 +00:00
nsHTMLButtonControlFrame.h
nsIFormControlFrame.h
nsISelectControlFrame.h
nsITextControlFrame.h
nsImageControlFrame.cpp Bug 1751473 Part 2 - Use CSSIntPoint instead of nsIntPoint in image event handling code. r=emilio 2022-01-22 01:07:19 +00:00
nsListControlFrame.cpp Bug 1773070 - Unify Gecko and Servo EventState/ElementState bits. r=smaug 2022-06-07 23:09:52 +00:00
nsListControlFrame.h Bug 1744009 - Simplify combobox <select> code. r=mconley,dholbert 2022-01-17 11:10:05 +00:00
nsMeterFrame.cpp Bug 1746758 - Correctly compute meter position in nsNativeBasicTheme. r=spohl 2021-12-22 18:16:21 +00:00
nsMeterFrame.h
nsNumberControlFrame.cpp Bug 1773070 - Unify Gecko and Servo EventState/ElementState bits. r=smaug 2022-06-07 23:09:52 +00:00
nsNumberControlFrame.h
nsProgressFrame.cpp Bug 1519636 - First reformat with clang-format 13.0.0. r=firefox-build-system-reviewers,sylvestre,mhentges 2021-11-16 08:07:30 +00:00
nsProgressFrame.h
nsRangeFrame.cpp Bug 1773070 - Unify Gecko and Servo EventState/ElementState bits. r=smaug 2022-06-07 23:09:52 +00:00
nsRangeFrame.h
nsSearchControlFrame.cpp Bug 502258 - Add a Show Password button to <input type=password> controls. r=Gijs 2021-11-25 20:12:05 +00:00
nsSearchControlFrame.h
nsSelectsAreaFrame.cpp Bug 1744009 - Simplify combobox <select> code. r=mconley,dholbert 2022-01-17 11:10:05 +00:00
nsSelectsAreaFrame.h
nsTextControlFrame.cpp Bug 1765172 - Only call UnbindFromFrame if BindToFrame succeeded. r=layout-reviewers,jfkthame 2022-05-11 11:41:40 +00:00
nsTextControlFrame.h Bug 1743047 - Use "reveal" rather than show terminology consistently for the reveal password button. r=Gijs,fluent-reviewers 2022-01-17 14:18:51 +00:00