New issue
Advanced search Search tips
Note: Color blocks (like or ) mean that a user may not be available. Tooltip shows the reason.

Issue 648780 link

Starred by 2 users

Issue metadata

Status: Fixed
Owner:
Closed: Oct 2016
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: All
Pri: 2
Type: Bug

Blocking:
issue 558575



Sign in to add a comment

[scroll anchoring] anchor at animation-frame boundaries instead of per-layout

Project Member Reported by skobes@chromium.org, Sep 20 2016

Issue description

Currently, scroll anchoring is done during layout.  We want to investigate somehow doing it in sync with animation frames instead.
 
Labels: Hotlist-Input-Dev

Comment 2 by skobes@chromium.org, Oct 12 2016

Status: Started (was: Available)
Summary: [scroll anchoring] anchor at animation-frame boundaries instead of per-layout (was: [scroll anchoring] investigate anchoring at animation-frame boundaries instead of per-layout)
Project Member

Comment 3 by bugdroid1@chromium.org, 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

Comment 4 by skobes@chromium.org, Oct 27 2016

Status: Fixed (was: Started)

Sign in to add a comment