зеркало из https://github.com/mozilla/gecko-dev.git
ab6826ce32
For a given ::Reflow call, we have an expectation that the ReflowInput and ReflowOutput should be "matching". In particular: we should use the ReflowInput to initialize the ReflowOutput, and we should pass both of these to the frame's Reflow method. In current mozilla-central (prior to this patch), nsPageSequenceFrame violates this expectation when it prepares to reflow its children, in the following ways: 1) It passes in the wrong ReflowInput as an arg when constructing a ReflowOutput struct for its children. (It passes *its own* ReflowInput arg, rather than the ReflowInput for the child that it's about to reflow.) 2) It *reuses* that single ReflowOutput structure *for all of its children*, which means that sizing information from one child will end up improperly influencing later children by "leaking through". This results in overflow areas that are artificially too large on nsPageFrames, because ReflowOutput populates its overflow areas via "union()" operations. So the improperly-reused ReflowOutput produces a strictly larger overflow area on each subsequent page (even if the page doesn't actually have any overflow). This patch fixes these problems by creating a new ReflowOutput for each child, and initializing it with the correct ReflowInput instance. Notably, this patch *is* a behavior-change (in the direction of correctness). In particular, we won't have artificially-inflated overflow areas on later nsPageFrame instances anymore, and so now some of our automated testcases trigger assertion-failures that they were getting around before. These all seem to be versions of https://bugzilla.mozilla.org/show_bug.cgi?id=1655630 which, "fortunately", is already reproducible (under certain paper sizes) even in a build from current mozilla-central, without this here patch. Differential Revision: https://phabricator.services.mozilla.com/D85098 |
||
---|---|---|
.. | ||
abs-pos | ||
apng-mime | ||
async-scrolling | ||
backgrounds | ||
bidi | ||
border-dotted | ||
border-image | ||
border-radius | ||
box | ||
box-ordinal | ||
box-properties | ||
box-shadow | ||
box-sizing | ||
bugs | ||
canvas | ||
columns | ||
counter-style | ||
counters | ||
css-animations | ||
css-blending | ||
css-break | ||
css-calc | ||
css-charset | ||
css-default | ||
css-disabled | ||
css-display | ||
css-enabled | ||
css-gradients | ||
css-grid | ||
css-import | ||
css-invalid | ||
css-mediaqueries | ||
css-optional | ||
css-parsing | ||
css-placeholder | ||
css-required | ||
css-ruby | ||
css-scroll-snap | ||
css-scrollbars | ||
css-selectors | ||
css-shapes | ||
css-sizing | ||
css-submit-invalid | ||
css-transitions | ||
css-ui | ||
css-ui-invalid | ||
css-ui-valid | ||
css-valid | ||
css-valuesandunits | ||
css-variables | ||
css-visited | ||
cssom | ||
datalist | ||
details-summary | ||
display-list | ||
dom | ||
first-letter | ||
first-line | ||
flexbox | ||
floats | ||
font-face | ||
font-features | ||
font-inflation | ||
font-loading-api | ||
font-matching | ||
font-variations | ||
fonts | ||
forms | ||
frameset | ||
generated-content | ||
high-contrast | ||
ib-split | ||
image | ||
image-element | ||
image-rect | ||
image-region | ||
indic-shaping | ||
inline | ||
inline-borderpadding | ||
invalidation | ||
layers | ||
line-breaking | ||
list-item | ||
margin-collapsing | ||
marquee | ||
mathml | ||
meta-viewport | ||
mp4-video | ||
native-theme | ||
object | ||
ogg-video | ||
outline | ||
pagination | ||
percent-overflow-sizing | ||
pixel-rounding | ||
position-dynamic-changes | ||
position-relative | ||
position-sticky | ||
printing | ||
reftest-sanity | ||
scrolling | ||
selection | ||
stylesheet-cloning | ||
svg | ||
tab-size | ||
table-anonymous-boxes | ||
table-background | ||
table-bordercollapse | ||
table-dom | ||
table-html | ||
table-overflow | ||
table-width | ||
text | ||
text-decoration | ||
text-indent | ||
text-overflow | ||
text-shadow | ||
text-stroke | ||
text-svgglyphs | ||
text-transform | ||
transform | ||
transform-3d | ||
unicode | ||
usercss | ||
view-source | ||
w3c-css | ||
web-animations | ||
webcomponents | ||
webkit-box | ||
webkit-gradient | ||
webm-video | ||
writing-mode | ||
xul | ||
xul-document-load | ||
z-index | ||
filters.svg | ||
moz.build | ||
reftest-qr.list | ||
reftest.list |