Assert the invariant that layers carrying RCD-RSF scroll metadata are inside the async zoom container
Categories
(Core :: Panning and Zooming, defect, P3)
Tracking
()
Tracking | Status | |
---|---|---|
firefox67 | --- | fixed |
People
(Reporter: botond, Assigned: botond)
References
Details
Attachments
(1 file)
(deleted),
text/x-phabricator-request
|
Details |
The containerless scrolling design implemented in bug 1158392 and dependencies relies on the invariant that if there is an async zoom container layer, then any layers that carry RCD-RSF scroll metadata are descendants of it.
The reason this invariant is important is that the RCD-RSF APZC's async transform needs to apply to all layers carrying RCD-RSF scroll metadata, but the zoom component of this transform is lifted to the async zoom container layer at composition time. If there is an RCD-RSF layer outside the zoom container, the zoom component will not apply to it, resulting in incorrect rendering.
In this bug I will add some code to assert this invariant whenever the compositor receives a layers transaction.
Assignee | ||
Updated•6 years ago
|
Assignee | ||
Comment 1•6 years ago
|
||
I implemented the assertion. A Try push is showing it failing on several Android mochitests:
Assignee | ||
Comment 2•6 years ago
|
||
Apparently, we can get nested async zoom containers in the compositor layer tree!
The invariant that layers containing RCD-RSF metadata are inside the respective async zoom container is being respected, but the invariant-checking code doesn't expect there to be nested containers. Other code may not expect that, either...
Assignee | ||
Comment 3•6 years ago
|
||
(In reply to Botond Ballo [:botond] from comment #2)
Apparently, we can get nested async zoom containers in the compositor layer tree!
This can happen due to OOP iframes. It can't actually occur in production code at the moment, and based on a conversation with Nika, the facilities we'd need to guarding against it have not landed yet (but will do so before OOP iframes ship).
I checked and all the test failures are caused by this. For now, I'm going to bail from the check if we detect a nested async zoom container. I'll file a follow-up for not building an async zoom container for the RCD of an OOP iframe.
(We can also get a nested async zoom container with RDM once we enable desktop zooming. There, we'll need a different fix, as we want the inner async zoom container and not the outer one.)
Assignee | ||
Updated•6 years ago
|
Assignee | ||
Comment 4•6 years ago
|
||
(In reply to Botond Ballo [:botond] from comment #3)
I'll file a follow-up for not building an async zoom container for the RCD of an OOP iframe.
Filed bug 1534459.
Assignee | ||
Comment 5•6 years ago
|
||
Comment 7•6 years ago
|
||
bugherder |
Description
•