Open Bug 1714721 Opened 3 years ago Updated 3 years ago

Make the animation pre-render decision checks account for Fission

Categories

(Core :: Layout, defect)

defect

Tracking

()

Fission Milestone Future

People

(Reporter: botond, Unassigned)

References

(Blocks 1 open bug)

Details

There are two places where the code that decides whether an element with a transform animation should be pre-rendered so that its the transform animation can run on the compositor, uses GetCrossDocParentFrame() in a way that might become invalid with Fission:

  1. Here, where the code is checking for an enclosing mask or clip-path, and decides not to pre-render on that basis. It seems to me that with Fission, if an OOP iframe is inside a mask or clip-path, and an element in the iframe is animated, the code could wrongly decide to pre-render that animation.

  2. Here, where the code is checking for an enclosing position: sticky element, and decides not to do partial pre-render on that basis. Again, it seems like with Fission, if an OOP iframe is inside position: sticky content, and an element in the iframe is animated, the code could wrongly decide to partially pre-render that animation.

Hiro, could you confirm if my understanding is correct and the above scenarios are a concern? (If so, we'll probably want to request a Fission milestone for this.)

I realize that partial pre-render is nightly-only, so the answer may be different for (1) and (2).

Flags: needinfo?(hikezoe.birchill)

Though I haven't been involved (1) at all, I am pretty sure it's not a problem at all. That's because the code in question is concerned about the boundary size that it's changed by async transform animation, but if a mask is being applied to an OOP iframe and the iframe has a transform animation, say scale animation 1x -> 100x, the animation is clipped by the iframe boundary, thus this heuristics (taking union of child display item's boundary) should just work.

As for (2) I think it's not a problem either, given that any transform animations inside iframe should be ended up being clipped to the iframe boundary, so basically we don't need to walking up ancestor across process boundaries. That said, I will do double-check when we enable partial pre-render on all channels (bug 1656473).

Blocks: 1656473
Severity: -- → S3
Fission Milestone: --- → Future
Flags: needinfo?(hikezoe.birchill)
See Also: → 1642547
You need to log in before you can comment on or make changes to this bug.