Fix sticky handling more with dynamic toolbar
Categories
(Core :: Panning and Zooming, defect, P3)
Tracking
()
Tracking | Status | |
---|---|---|
firefox77 | --- | verified |
People
(Reporter: kats, Assigned: kats)
References
Details
Attachments
(8 files)
1.17 KB,
text/html
|
Details | |
47 bytes,
text/x-phabricator-request
|
Details | Review | |
47 bytes,
text/x-phabricator-request
|
Details | Review | |
47 bytes,
text/x-phabricator-request
|
Details | Review | |
47 bytes,
text/x-phabricator-request
|
Details | Review | |
47 bytes,
text/x-phabricator-request
|
Details | Review | |
47 bytes,
text/x-phabricator-request
|
Details | Review | |
47 bytes,
text/x-phabricator-request
|
Details | Review |
I was doing some additional manual testing with the position:sticky support in bug 1610731 and found at least one bug with sticky positioned items. It happens primarily with WebRender enabled but also manifests transiently with WebRender disabled.
STR:
- load the attached page in Fenix (I was using the emulator) with the dynamic toolbar at the bottom.
- Scroll down to where the text "top of next div" is visible.
- Scroll up and down with that text on-screen to show and hide the dynamic toolbar.
Expected:
- the red sticky div never covers up the "top of next div" text
Actual:
- the red sticky div can end up getting shifted down to cover the "top of next div" text.
I think this might be because the red div is at outside its sticky range, and so shouldn't behave "sticky" any more. But we apply the compositor transform to it anyway
Comment 1•5 years ago
|
||
Ah! We have a check for "currently stuck" that we probably need to use in some other codepaths, including the WR one.
Comment 2•5 years ago
•
|
||
(In reply to Botond Ballo [:botond] from comment #1)
Ah! We have a check for "currently stuck" that we probably need to use in some other codepaths, including the WR one.
And the issue in bug 1627326 may well be that that check only handles bottom and not top.
Assignee | ||
Updated•5 years ago
|
Assignee | ||
Comment 3•4 years ago
|
||
We can use the map lock to do a lookup in mApzcMap, instead of requiring the
tree lock to call GetTargetAPZC.
Assignee | ||
Comment 4•4 years ago
|
||
This will make future patches simpler, as we can now create these info objects
more easily for the non-WR codepath as well.
Depends on D70906
Assignee | ||
Comment 5•4 years ago
|
||
This sets us up to be able to use these helper methods on WR sampling codepath.
Depends on D70907
Assignee | ||
Comment 6•4 years ago
|
||
Assignee | ||
Comment 7•4 years ago
|
||
I couldn't understand what it was doing before, but conceptually it should
be pretty simple.
Depends on D70908
Assignee | ||
Comment 8•4 years ago
|
||
The semantics of sticky items are somewhat different from the semantics of
fixed items. For fixed items, if an item is fixed to eTop or eBottom or
eTopBottom, it is always fixed to those sides. For sticky items, however,
the sides actively stuck to are dependent on the scroll position. So we need
a mechanism to dynamically figure out which sides are stuck, and use those
sides when computing the fixed margins to apply. This patch implements that
by modifying the IsStuckToRootContentAtBottom method into a
SidesStuckToRootContent method.
Depends on D70909
Assignee | ||
Comment 9•4 years ago
|
||
This patch just ensures the changes in the previous patches get applied
to the WR codepath, and is sufficient to make all the remaining sticky
tests pass on Android+WR.
Depends on D70910
Assignee | ||
Comment 10•4 years ago
|
||
Depends on D70911
Comment 11•4 years ago
|
||
Comment 12•4 years ago
|
||
bugherder |
https://hg.mozilla.org/mozilla-central/rev/b6821fad28e5
https://hg.mozilla.org/mozilla-central/rev/882b9adeff90
https://hg.mozilla.org/mozilla-central/rev/35144abc5266
https://hg.mozilla.org/mozilla-central/rev/ec1127afc8ad
https://hg.mozilla.org/mozilla-central/rev/2348d884d386
https://hg.mozilla.org/mozilla-central/rev/5bbfa16aa52d
https://hg.mozilla.org/mozilla-central/rev/ba223c9eb4fd
Updated•4 years ago
|
Comment 13•4 years ago
|
||
Tested on the latest Fenix Nightly build (78.0a1-5/12) following the steps from the description and the issue is still reproducible (the red sticky div is covering the "top of next div" text) if the toolbar is not displayed. Video: https://drive.google.com/open?id=1BH5rHaeuHa-XA_VKfmqAXRl6urNcB_i2.
Please note that this is reproducible only when scrolling slowly up with the toolbar hidden.
Assignee | ||
Comment 14•4 years ago
|
||
I see that as well, but it's actually a separate issue from what I meant in comment 0. In your video it's the "transition point" that's glitchy but in comment 0 I was referring to jiggling up and down rapidly while the "top of next div" was already near the middle of the screen. The thing in your video should probably be filed as another bug, but it's more of an edge case.
Updated•4 years ago
|
Description
•