In layers-free mode the gecko display list and coordinate system is very
similar to what WR is expecting. Instead of having each
StackingContextHelper shift the origin of the coordinate system, we can
leave it in one spot and just pass everything relative to that. The
semantics of the Gecko display list already matches this; the exception
is that nsDisplayTransform items are also considered reference frames,
and anything inside them is relative to the nsDisplayTransform. On the
WR side this is also the case, because stacking contexts with a
transform are implicitly turned into reference frames.
Additionally, the size of the bounds passed to the WR stacking context
is never actually used, except on the root stacking context (which is
not created by StackingContextHelper). Since we want a zero origin (as
explained above) and the size is never used, we can just pass a zero
rect to the WR stacking context from StackingContextHelper.
In terms of the actual transform matrix, this patch now passes the full
unmodified transform from nsDisplayTransform into WR. This transform
gets applied onto the contents of the nsDisplayTransform. The contents'
coordinate system is relative to the frame that generated the
nsDisplayTransform. Again this maps directly to WR, where the transform
on the stacking context gets applied to the contents of the stacking
context; the contents' coordinates are relative to the stacking context.
MozReview-Commit-ID: 9hdDxdKXPPi
--HG--
extra : rebase_source : b201cea867c6c6e26c2b0bcd0e38c8722f09fe77