What steps will reproduce the problem?
1. Visit https://output.jsbin.com/didove
2. Click "Scroll"
3. Click "Shift"
What is the expected result?
Scroll anchoring adjustment keeps "ANCHOR" at the top. "FAIL" is not visible.
What happens instead of that?
No scroll anchoring adjustment, "FAIL" is visible.
Discovered during investigation of issue 746528 . Root cause is that LocalFrameView::PerformLayout can begin with nodes other than the LayoutView, via LayoutFromRootObject. When this happens, we fail to invoke ScrollAnchor::NotifyBeforeLayout on any scrollers that are DOM ancestors of the layout root.
If #inner is not marked "overflow: auto", the behavior is as expected. The presence of overflow: auto causes #inner to appear in LocalFrameView::layout_subtree_root_list_, despite not having any overflow.
Comment 1 by skobes@chromium.org
, Jan 9