Add a way to determine if all scroll frames containing the anchor are active or not at the time of the BuildDisplayList call for the anchored element
Categories
(Core :: CSS Parsing and Computation, enhancement)
Tracking
()
| Tracking | Status | |
|---|---|---|
| firefox147 | --- | fixed |
People
(Reporter: dshin, Assigned: tnikkel)
References
(Depends on 1 open bug, Blocks 2 open bugs)
Details
(Whiteboard: [anchorpositioning:graphics])
Attachments
(6 files)
|
48 bytes,
text/x-phabricator-request
|
Details | Review | |
|
48 bytes,
text/x-phabricator-request
|
Details | Review | |
|
48 bytes,
text/x-phabricator-request
|
Details | Review | |
|
48 bytes,
text/x-phabricator-request
|
Details | Review | |
|
48 bytes,
text/x-phabricator-request
|
Details | Review | |
|
48 bytes,
text/x-phabricator-request
|
Details | Review |
| Assignee | ||
Comment 1•7 months ago
|
||
We want to assign the ASR of the anchor to the anchored content. That means we are changing the ASR chain so we need to adjust the functions that walk the async scrollable ancestors chain. In this patch we adjust nsLayoutUtils::GetAsyncScrollableAncestorFrame.
Updated•7 months ago
|
| Assignee | ||
Comment 2•7 months ago
|
||
We want to assign the ASR of the anchor to the anchored content. That means we are changing the ASR chain so we need to adjust the functions that walk the async scrollable ancestors chain. In this patch we adjust DisplayPortUtils::OneStepInAsyncScrollableAncestorChain.
| Assignee | ||
Comment 3•7 months ago
|
||
With CSS anchor pos we know that the anchor is in the containing block of the anchored content. We use that to limit a walk up the frame tree in subsequent patches and make the computation simpler. So we need OneStepInAsyncScrollableAncestorChain to obey that limit too.
| Assignee | ||
Comment 4•7 months ago
|
||
I want this so I can assert things in subsequent patches.
WantAsyncScroll and mWillBuildScrollableLayer are completely independent of each other, ie it's possible to have all four combinations of them being true/false.
| Assignee | ||
Comment 5•7 months ago
|
||
This is the most complicated and intricate patch in this series.
We want to assign the ASR of the anchor to the anchored content. But there is no painting relationship between them. Meaning that BuildDisplayList for the anchor might be called before or after BuildDisplayList for the anchored content.
If BuildDisplayList is called for the anchor before the anchored content we want to make sure that any scroll frames containing the anchor are activated. This is easy on desktop as all scroll frames that want it are activated. But on android we don't do that yet. That's where bug 1995759 comes in to activate all scroll frames when anchor pos is used.
If BuildDisplayList is called for the anchor after the anchored content then we want to activate any scroll frames containing the anchor during the BuildDisplayList call for the anchored content. That's one of the main things that this patch does. We create a new function DecideScrollableLayerEnsureDisplayport that always set a minimal display port to do that for us (it's a simplified version of DecideScrollableLayer).
Then we use our knowledge that the anchor is in the containing block of the anchored content to walk the scroll frame ancestors of the anchor until we reach the anchored content's containing block. Once we've collected all the scroll frames we can create the ASR structs.
Updated•7 months ago
|
Updated•7 months ago
|
| Assignee | ||
Comment 6•7 months ago
|
||
This should be the case but due to spec issues that we are still getting sorted out in bug 1997026 it does not currently hold with our existing code that accurately implemented an older version of the spec. The anchor pos async scroll code in this bug depends on this condition even if other anchor pos code seems to be okay without it as of now.
Backed out for causing build bustages
| Assignee | ||
Updated•7 months ago
|
Comment 10•7 months ago
|
||
| bugherder | ||
https://hg.mozilla.org/mozilla-central/rev/7df984ea1a2d
https://hg.mozilla.org/mozilla-central/rev/b589662e09f5
https://hg.mozilla.org/mozilla-central/rev/cba51c6f762b
https://hg.mozilla.org/mozilla-central/rev/6d1306b4671c
https://hg.mozilla.org/mozilla-central/rev/9769ef682f6b
https://hg.mozilla.org/mozilla-central/rev/fa7ec7d8ecb5
https://hg.mozilla.org/mozilla-central/rev/7049e5052189
Updated•6 months ago
|
Description
•