Nested view transition: reparent & render
This tracks the view-transition-group for the captured elements
as "containing group". Those values are filtered to only include
ancestors.
-
When a captured element has a valid containing group, the
pseudo-element is reparented to the containing group when the
view transition starts. -
Note that when capturing the old element, we don't deal with nesting
at all. The tree for the purpose of allowing the compositor to
capture the old state is flat. This can be revisited iteratively,
it's done for implementation simplicity. -
When building styles, the (inverse) parent transform is adjusted
so that it's not applied twice. -
Changed all the recursive functions to retrieve pseudo-elements
to adapt to nested containers.
Currently, by default mismatches here are handled by
"last capture wins", however this is to be resolved in the CSSWG so it's not tested yet: w3c/csswg-drafts#10631
Note also that with the current implementation, after capturing the
old state and before starting might appear broken, as
clipping/opacity/etc are not applied to the generated pseudo-element.
Bug: 347947051
Change-Id: I49e4f7ea6c8d82b6ad34b50f8cda92eb3f074612
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/5749090
Commit-Queue: Noam Rosenthal nrosenthal@chromium.org
Reviewed-by: Chris Harrelson chrishtr@chromium.org
Reviewed-by: David Bokan bokan@chromium.org
Cr-Commit-Position: refs/heads/main@{#1338296}