In order to make test behavior better match real-world sampling behavior, this
patch updates the test code in CompositorParent so that it only updates the
layer when a composite is scheduled. This enables creating mochitests that
reproduce bugs observed in regular usage.
This patch adds waitForAllPaints which does *not* call getBoundingClientRect
since that can cause a flush. Sometimes this flush is undesirable since it can
mask bugs in the code under test which should be performing this flush itself.
PLayerTransaction.GetTransform doesn't actually return the same kind of value
when the transform on the layer is not set by animation. This is because it uses
information stored with the animation to undo various transforms. We shouldn't
pretend to return something useful/similar when we don't have that information
available.
This patch renames GetTransform to GetAnimationTransform and makes it return
a union that has type void_t if the layer is not transformed by animation.
LayerTransactionParent::RecvGetTransform takes care to reverse all the
transformations applied by AsyncCompositionManager::SampleValue to the CSS
values calculated so that it can return CSS values for testing. However, it
fails to revert the conversion from CSS pixels to device pixels applied to the
translation components of the transform by
nsStyleTransformMatrix::ProcessTranslatePart as called by
nsDisplayTransform::GetResultingTransformMatrix.
This patch converts the resulting transform's translation components from device
pixels back to CSS pixels. It also adds documentation for the other operations
in LayerTransactionParent::RecvGetTransform.
nsDOMWindowUtils.getOMTAOrComputedStyle falls back to using getComputedStyle
when an OMTA style is not available. However, in order to be sure we are testing
OMTA, this patch adds getOMTAStyle which returns an empty string if no OMTA
style is available.
This patch also includes some minor stylistic tweaks. The method signature for
getOMTAOrComputedStyle now takes an nsIDOMElement parameter rather than
nsIDOMNode in order to simplify error-checking. (When we support OMTA of
pseudo-elements we will have to adjust the method signature but for now we only
support elements.) Also, some lines have been wrapped, ErrorResult is
declared closer to where it is used, and the return value aResult is only
truncated when returning NS_OK.
Every other exposed method in nsDOMWindowUtils except getViewPortInfo and
getViewId performs this check. This patch makes getOMTAOrComputedStyle check the
caller is chrome as well.