We don't store post-transform overflow areas for frames within preserve-3d, but we do store pre-transform overflow areas.
Rather than just recomputing the changed overflow for the root, we should recompute overflows for all ancestors up to the 3d root.
Differential Revision: https://phabricator.services.mozilla.com/D31213
--HG--
extra : moz-landing-system : lando
This is the main performance improvement, and means that we no longer have to iterate all the cells for each column.
It has a couple of behaviour changes:
The first is that we no longer apply stacking context effects (like opacity) to column and column group backgrounds.
I believe this is correct as per both CSS2.1 Appendix E, and css-tables-3 (quoted in nsTableColFrame::BuildDisplayList).
This matches the behaviour of blink and WebKit.
We also previously created items in column,row ordering, whereas now they will be in row,column. In cases where two cells
overlap (using rowspan and colspan to extend multiple neighbours in to the same place) this can render backgrounds in a
different order, but the new behaviour matches blink and WebKit.
Differential Revision: https://phabricator.services.mozilla.com/D29280
--HG--
extra : moz-landing-system : lando
This also changes behaviour a bit, previously we interleaved column and column group backgrounds. where we now put all the column group backgrounds behind all columns.
I believe this is the correct ordering as per CSS2.2 Appendix E.
Column backgrounds can overlap when using 'span', and we now render this in a different order, but this matches what other browsers do.
Differential Revision: https://phabricator.services.mozilla.com/D29278
--HG--
extra : moz-landing-system : lando
This affects a number of our existing reftests, so we'll need to update those
to not expect auto-hyphenation of a sentence-initial (capitalized) word.
(Hyphenation behavior is not sufficiently well-specified for this to be tested
at the WPT level, so we just use Gecko-specific reftests.)
Differential Revision: https://phabricator.services.mozilla.com/D30912
--HG--
extra : moz-landing-system : lando
CSS containment is enabled on early beta or earlier. Using
"default-preferences" to flip column-span pref overrides CSS
containment's pref at the first line in the reftest.list, which make the
two test fail on late beta.
Differential Revision: https://phabricator.services.mozilla.com/D30674
--HG--
extra : moz-landing-system : lando
multicol-span-000.xht passes because the id in
<div id="column-span">123456</div>
was incorrect replaced by "-moz-column-span". Strip the "-moz" prefix
fixed it.
Except failures.list, other files were modified mechanically by running
import-tests.py against https://github.com/web-platform-tests/wpt commit
15f199c91a72b0d51bf0a12b3b77827ecb5051ff (the same commit in
received/import.log).
Differential Revision: https://phabricator.services.mozilla.com/D30406
--HG--
extra : moz-landing-system : lando
Also, build gPrefixRegexp and replace lines only if gPrefixedProperties
is non-empty. Otherwise, the import tests are messed up due to bogus
gPrefixRegexp.
Differential Revision: https://phabricator.services.mozilla.com/D30405
--HG--
extra : moz-landing-system : lando
Add multicol-width-004.html and multicol-width-005.html to test "width:
min-content" and "width: max-content" with column-span:all children.
There's no size containment in these tests.
Note it may be worth to reuse nsBlockFrame's mCachedMinISize and
mCachedPrefISize to cache intrinsic size for ColumnSetWrapperFrame, but
this can be done separately.
Differential Revision: https://phabricator.services.mozilla.com/D29616
--HG--
extra : moz-landing-system : lando
ColumnSetFrame always tries to reflow column content regardless of it's
dirtiness. Making ColumnSetWrapperFrame's children dirty can have the
same effect.
Differential Revision: https://phabricator.services.mozilla.com/D29435
--HG--
extra : moz-landing-system : lando
Per bug 1487927, margin-bottom value is not always rendered as expected
with our column balancing algorithm. I'd like to remove it from
column-balancing-nested-001.html, and add <br> to separate each cases.
Differential Revision: https://phabricator.services.mozilla.com/D30287
--HG--
extra : moz-landing-system : lando
ColumnSetFrame always tries to reflow column content regardless of it's
dirtiness. Making ColumnSetWrapperFrame's children dirty can have the
same effect.
Differential Revision: https://phabricator.services.mozilla.com/D29435
--HG--
extra : moz-landing-system : lando
Typically this would be handled by the visible region of the layer
changing. However, since we build the container layer for the filter
item directly the visible region doesn't get set or checked. As a
shortcut to using more of FLB we just ensure the building rect hasn't
changed.
The situations under which this bugs shows up are somewhat rare:
- The filtered item needs to be in transform so that it's bounds
are not changed by scrolling.
- The filtered item needs to contain items that change their drawing
depending on the building rect. In this case an image with downscale
on decode.
- The filter needs to be unsupported by WebRender.
Differential Revision: https://phabricator.services.mozilla.com/D29879
--HG--
extra : moz-landing-system : lando
Added a test to test the empty block (didn't submit to WPT because it's not
clear to me if the outlines of the two spans should form a single rect or not).
Differential Revision: https://phabricator.services.mozilla.com/D29819
--HG--
extra : moz-landing-system : lando
Due to the syntax limitation in failures.list, I cannot mark
multicol-rule-004.xht as fails with column-span enabled and success with
column-span disabled simultaneously. Luckily, we had another copy of it
in testing/web-platform/tests/css/css-multicol/multicol-rule-004.xht, We
can use it to test with column-span disabled for now.
Differential Revision: https://phabricator.services.mozilla.com/D29419
--HG--
extra : moz-landing-system : lando
The comment in nsDisplayTransform::GetTransformForRendering() clearly
says that |aOutOrigin| should return the same offset as GetTransform().
GetTransform() will pass the offset to GetResultingTransformMatrix()
which will round it in many cases to avoid subpixel blurry rendering.
But GetTransformForRendering() doesn't take this rounding into account,
thus contradicting the intent described by the comment.
This rounding is important to keep subpixel behavior consistent with
or without webrender enabled. Currently, SVG will be rendered blurry
in some cases if it's at a subpixel position. After fixing the problem
in non-webrender case, the strange blur still occurs in webrender case.
It turns out to be caused by this inconsistency.
Differential Revision: https://phabricator.services.mozilla.com/D29495
--HG--
extra : moz-landing-system : lando
We should snap subpixel value at nsDisplayTransform::GetResultingTransformMatrix
for outer svg and the anon child. This will solve blurry rendering for subpixel position
when webrender is __not__ enabled.
Differential Revision: https://phabricator.services.mozilla.com/D29344
--HG--
extra : moz-landing-system : lando
This is a first step towards allowing (some) batching work to be
done during prepare_prims pass rather than render pass building.
This is prep work related to output different batch lists for a given
picture (e.g. a different batch list per dirty region), rather than
replaying the same batch list.
Differential Revision: https://phabricator.services.mozilla.com/D29445
--HG--
extra : moz-landing-system : lando