[scroll anchoring] anchor at animation-frame boundaries instead of per-layout |
|||
Issue descriptionCurrently, scroll anchoring is done during layout. We want to investigate somehow doing it in sync with animation frames instead.
,
Oct 12 2016
,
Oct 27 2016
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/e0e3af8004e7f656ae8e1cb45c76a4a013c43961 commit e0e3af8004e7f656ae8e1cb45c76a4a013c43961 Author: skobes <skobes@chromium.org> Date: Thu Oct 27 22:10:06 2016 Tie scroll anchoring adjustments to frame lifecycle instead of layout. This applies suppressions to the entire animation frame, which lets us spec the behavior without referring to layout passes. ScrollAnchor::notifyBeforeLayout, formerly known as save(), adds the scroller to a queue owned by the FrameView, which iterates the queue to do the scroll adjustments after layout, but before the compositing update. Web APIs that force synchronous layout also force these adjustments to happen synchronously. This means it is impossible for script to observe an un-adjusted scroll position after an anchor node movement. BUG= 648780 CQ_INCLUDE_TRYBOTS=master.tryserver.chromium.linux:linux_layout_tests_slimming_paint_v2 Review-Url: https://codereview.chromium.org/2404393003 Cr-Commit-Position: refs/heads/master@{#428155} [add] https://crrev.com/e0e3af8004e7f656ae8e1cb45c76a4a013c43961/third_party/WebKit/LayoutTests/fast/layout/scroll-anchoring/reading-scroll-forces-anchoring.html [modify] https://crrev.com/e0e3af8004e7f656ae8e1cb45c76a4a013c43961/third_party/WebKit/Source/core/dom/Document.cpp [modify] https://crrev.com/e0e3af8004e7f656ae8e1cb45c76a4a013c43961/third_party/WebKit/Source/core/frame/FrameView.cpp [modify] https://crrev.com/e0e3af8004e7f656ae8e1cb45c76a4a013c43961/third_party/WebKit/Source/core/frame/FrameView.h [modify] https://crrev.com/e0e3af8004e7f656ae8e1cb45c76a4a013c43961/third_party/WebKit/Source/core/layout/LayoutBlock.cpp [modify] https://crrev.com/e0e3af8004e7f656ae8e1cb45c76a4a013c43961/third_party/WebKit/Source/core/layout/ScrollAnchor.cpp [modify] https://crrev.com/e0e3af8004e7f656ae8e1cb45c76a4a013c43961/third_party/WebKit/Source/core/layout/ScrollAnchor.h [modify] https://crrev.com/e0e3af8004e7f656ae8e1cb45c76a4a013c43961/third_party/WebKit/Source/core/paint/PaintLayerScrollableArea.cpp [modify] https://crrev.com/e0e3af8004e7f656ae8e1cb45c76a4a013c43961/third_party/WebKit/Source/platform/scroll/ScrollTypes.h [modify] https://crrev.com/e0e3af8004e7f656ae8e1cb45c76a4a013c43961/third_party/WebKit/Source/platform/scroll/ScrollableArea.cpp [modify] https://crrev.com/e0e3af8004e7f656ae8e1cb45c76a4a013c43961/third_party/WebKit/Source/web/tests/VisualViewportTest.cpp
,
Oct 27 2016
|
|||
►
Sign in to add a comment |
|||
Comment 1 by dtapu...@chromium.org
, Sep 29 2016