Sometimes the painting code will look at the clip which is derived
from the intial size of the surface and not draw if things if they
are outside of it. We want to draw the entire item so use dtRect
instead of visibleRect.
Differential Revision: https://phabricator.services.mozilla.com/D64277
--HG--
extra : moz-landing-system : lando
In order for the test to pass the scroll event handler needs to run so that a scroll linked effect is detected and apz is disabled. It is triggered by the scrollTo call in the load handler. Which then removes reftest-wait off a setTimeout(..., 0). The scroll event is dispatched from the refresh driver so it can happen after this setTimeout runs. So the scroll handler runs too late to affect the test.
Differential Revision: https://phabricator.services.mozilla.com/D62387
--HG--
extra : moz-landing-system : lando
With the new 'defaults' key being added, 'default-preferences' is now
redundant. This commit converts all existing uses of 'default-preferences' to
use 'defaults' instead.
Differential Revision: https://phabricator.services.mozilla.com/D63247
--HG--
extra : moz-landing-system : lando
This introduces a new 'defaults' key to reftest manifests. It works similarly
to the existing 'default-preferences' key except it can be used for any test
modifier (e.g, skip-if, fail-if, pref, etc.).
See the changes to README.txt in this commit for an explanation on how to use
it.
Differential Revision: https://phabricator.services.mozilla.com/D63246
--HG--
extra : moz-landing-system : lando
So that we can generate nsImageFrame for lazy load image elements in the first
place.
Differential Revision: https://phabricator.services.mozilla.com/D61942
--HG--
rename : layout/reftests/image/moz-broken-matching-1.html => layout/reftests/image/moz-broken-matching-lazy-load.html
extra : moz-landing-system : lando
This is done using a similar approach to CreateWebRenderCommands
but slightly modified. In particular the active layer check needs
to be done before we're ready to CreateWebRenderCommands, but once
we decide to activate an item, we can't let CreateWebRenderCommands
fail. Unfortunately, the need to query ImageLib for support means
we need to do basically ~all of the work of CreateWebRenderCommands
to do this check.
As such, this introduces a modified version of CreateWebRenderCommands
that SVGGeometryFrames implement with a "dry run" flag. When true,
it runs the same code but stops short of mutating the WR DL/state.
ImageLib may be encouraged to do some extra work that could be thrown
away, but I'm not sure there's any way to avoid that.
For now, only SVGImageFrame actually provides an implementation. The
bulk of the implementation is handling the on-by-default
preserveAspectRatio feature of SVG images. It was cleaner to just
reimplement that logic than reuse the existing preserveAspectRatio
code, as it was too tangled up in the particulars of how the PaintSVG
path is designed.
Differential Revision: https://phabricator.services.mozilla.com/D59925
--HG--
extra : moz-landing-system : lando
This is done using a similar approach to CreateWebRenderCommands
but slightly modified. In particular the active layer check needs
to be done before we're ready to CreateWebRenderCommands, but once
we decide to activate an item, we can't let CreateWebRenderCommands
fail. Unfortunately, the need to query ImageLib for support means
we need to do basically ~all of the work of CreateWebRenderCommands
to do this check.
As such, this introduces a modified version of CreateWebRenderCommands
that SVGGeometryFrames implement with a "dry run" flag. When true,
it runs the same code but stops short of mutating the WR DL/state.
ImageLib may be encouraged to do some extra work that could be thrown
away, but I'm not sure there's any way to avoid that.
For now, only SVGImageFrame actually provides an implementation. The
bulk of the implementation is handling the on-by-default
preserveAspectRatio feature of SVG images. It was cleaner to just
reimplement that logic than reuse the existing preserveAspectRatio
code, as it was too tangled up in the particulars of how the PaintSVG
path is designed.
Differential Revision: https://phabricator.services.mozilla.com/D59925
--HG--
extra : moz-landing-system : lando
The existing code just clipped to a rect. We need to do the same clipping that the non-remote code path does which also handles border radius.
The existing code is the from initial implementation of nsDisplayRemote in https://hg.mozilla.org/mozilla-central/rev/85d06279c8358a8e1c883aa670a20212b1039a90 so I suspect that clipping to the inner view bounds instead of the frame content box is not an important difference.
Differential Revision: https://phabricator.services.mozilla.com/D62180
--HG--
extra : moz-landing-system : lando
For Draw (non-native) and CA modes, we include the per-tile
valid rect in the clip rect from the surface.
For DC (non-virtual) mode, a per-tile clip rect is set on the
visual for each tile, separate from the overall clip rect that
is set on the surface visual.
For DC (virtual) mode, the Trim API is used to remove pixels
in the virtual tile area that are outside the valid / clipped
region.
Note: Although the valid rect is now applied in the native
compositors, it's currently only based on the overall picture
cache bounding rect. Thus, with this patch there isn't any
noticeable performance improvement. Once this lands and is
working correctly, the follow up patch to calculate a smaller
valid region per-tile is a small amount of work.
Differential Revision: https://phabricator.services.mozilla.com/D61424
--HG--
extra : moz-landing-system : lando
I think this probably only shows up with fission oop iframes, tabs probably avoid this path.
The problem occurs when we reconstruct the containing iframe for a style change, we briefly hide the child document, clearing the display list on the parent via ClearCachedResources. Then show it again, we attempt an empty transaction and this succeeds because there is nothing to stop it. (The non-wr case fails because the layer contents are missing and that causes the empty transaction to fail.)
So keep track if we have sent a display list to the parent to allow/disallow an empty transaction.
This fixes a couple webrender+fission reftest failures but it's also a general rendering bug in webrender+fission reproducible in a regular browser.
Differential Revision: https://phabricator.services.mozilla.com/D61577
--HG--
extra : moz-landing-system : lando
See bug 1598753 comment 1 for the analysis.
This patch is generated by
1. removing `os.path.join("css-values"),` in import-tests.py
2. removing the relevent annotations of css-values
3. running import-tests.py on a wpt repository at commit
15f199c91a72b0d51bf0a12b3b77827ecb5051ff.
Differential Revision: https://phabricator.services.mozilla.com/D62142
--HG--
extra : moz-landing-system : lando
There were two issues with the existing code that we use to determine whether a
widget is styled or not.
First, it was using `color == Color::transparent()` instead of
`color.is_transparent()` to check for transparent backgrounds. That is not sound
as `Color::transparent()` is the literal value `rgba(0, 0, 0, 0)`, not the
`transparent` keyword, so the equality check would fail.
The other issue is that this function was early-returning false if that check
was returning false. It is a bug for this function to early-return false, as it
makes the result of the function dependent of the order of the declarations.
Differential Revision: https://phabricator.services.mozilla.com/D62060
--HG--
extra : moz-landing-system : lando
Use MozReftestInvalidate rather than onload, following the pattern of most of
the tests in layout/reftests/selection.
Differential Revision: https://phabricator.services.mozilla.com/D62139
--HG--
extra : moz-landing-system : lando
Add a reftest that would fail in webrender before the corresponding
fix landed.
Ensures that there is an async zoom and that both the layout and
visual viewports have async scroll offsets. To pass, we must apply
each of the layout and visual offsets in their correct coordinate
spaces.
Differential Revision: https://phabricator.services.mozilla.com/D61788
--HG--
extra : moz-landing-system : lando
Add a reftest that would fail in webrender before the corresponding
fix landed.
Ensures that there is an async zoom and that both the layout and
visual viewports have async scroll offsets. To pass, we must apply
each of the layout and visual offsets in their correct coordinate
spaces.
Differential Revision: https://phabricator.services.mozilla.com/D61788
--HG--
extra : moz-landing-system : lando
Annotate optiontext.html for Android as slightly fuzzy, to account for
reftest rebucketing fuzzy-failure fallout. It has 0 in the lower bound
of the fuzzy annotation because not every Android has this
fuzzy-failure.
Meanwhile, bug453105.html no longer fails due to reftest rebucketing, so
I remove its fuzzy annotation.
Differential Revision: https://phabricator.services.mozilla.com/D61877
--HG--
extra : moz-landing-system : lando
No test in css-conditional reftests are failures, which matches
testing/web-platform/meta/css/css-conditional.
This patch is generated by
1. manually removing `os.path.join("css-conditional"),` in import-tests.py, and
2. running import-tests.py on a wpt repository at commit
15f199c91a72b0d51bf0a12b3b77827ecb5051ff.
Differential Revision: https://phabricator.services.mozilla.com/D61594
--HG--
extra : moz-landing-system : lando
We replace SetWidthIfLength and SetOffsetIfLength with ComputeDecorationLine{Thickness,Offset} functions,
and consolidate more of the computation of the offset within this function to simplify callers.
Differential Revision: https://phabricator.services.mozilla.com/D61454
--HG--
extra : moz-landing-system : lando