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

Issue 598548 link

Starred by 2 users

Issue metadata

Status: Fixed
Owner:
(currently inactive on Chromium)
Closed: Apr 2016
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: Linux , Windows
Pri: 1
Type: Bug-Regression



Sign in to add a comment

[Regression]: Unable to scroll on continuous use of down/up arrow key in google images page

Project Member Reported by sc00335...@techmahindra.com, Mar 29 2016

Issue description

Version: 51.0.2693.2 dev
OS: Ubuntu 12.04,14.04,windows

What steps will reproduce the problem?
(1) Launch chrome and go to google images page
(2) Now hit Down/up arrow continuously[without releasing finger] and observe

Expected: Scrolling should be smooth on using down/up arrow
Actual: Unable to scroll using up/down arrow on continuous use

This is a regression issue broken in M50. Will provide bisect info soon.
 
Actual_scroll.ogv
6.6 MB Download
Expected_scroll.ogv
14.2 MB Download

Comment 1 by ajha@chromium.org, Mar 29 2016

Status: Untriaged (was: Unconfirmed)
Able to reproduce this on Windows-7, Linux Ubuntu 14.04 on 51.0.2693.2. Worked fine on Mac OS 10.11.3.


Labels: -Needs-Bisect hasbisect
Owner: ymalik@chromium.org
Status: Assigned (was: Untriaged)
Good Build: 50.0.2645.0 dev
Bad Build: 50.0.2646.0 dev

CHANGELOG URL:
 https://chromium.googlesource.com/chromium/src/+log/81c4571248f30446f95901a76a5059929b467434..5a8740b5ac0c7cd4e9dc5eb0cea2b89db1899140

Suspecting https://codereview.chromium.org/1678713002 from changelog

@ymalik: Please help in re-assigning if it is not related to your change.

Comment 3 by ymalik@chromium.org, Mar 29 2016

Cc: skobes@chromium.org ajuma@chromium.org
Status: Started (was: Assigned)
Not sure if it's related to that particular CL yet, but it's definitely related to smooth scrolling (not reproducible with it turned off).

Looking into it now.

Comment 4 by ymalik@chromium.org, Mar 29 2016

Looks like Google Images modifies the scroll offset from javascript every time there is a keyboard scroll. When we get a continuous keyboard scroll, ScrollAnimator updates the target position of the original animation curve with the delta of a new keyboard scroll, but doesn't take into account the amount scrolled by javascript.

In any case, javascript scroll should cancel the ongoing user scroll, but we weren't handling the cleanup correctly in ScrollAnimator. Will upload a patch for review shortly.
Project Member

Comment 5 by bugdroid1@chromium.org, Mar 29 2016

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/d7b5be44530835f2b1f3c3cfc8d6d7ea18a50553

commit d7b5be44530835f2b1f3c3cfc8d6d7ea18a50553
Author: ymalik <ymalik@chromium.org>
Date: Tue Mar 29 23:02:54 2016

Correctly reset ScrollAnimator animation state after cancelling animation

We were calling willAnimaterToOffset with the updated target position before
clearing the animation state when in PostAnimationCleanup. As a result, we
didn't take into account the potentially modified scroll offset by a
programmatic scroll.

BUG= 598548 

Review URL: https://codereview.chromium.org/1842623003

Cr-Commit-Position: refs/heads/master@{#383854}

[modify] https://crrev.com/d7b5be44530835f2b1f3c3cfc8d6d7ea18a50553/third_party/WebKit/Source/platform/scroll/ScrollAnimator.cpp
[modify] https://crrev.com/d7b5be44530835f2b1f3c3cfc8d6d7ea18a50553/third_party/WebKit/Source/platform/scroll/ScrollAnimatorCompositorCoordinator.h
[modify] https://crrev.com/d7b5be44530835f2b1f3c3cfc8d6d7ea18a50553/third_party/WebKit/Source/platform/scroll/ScrollAnimatorTest.cpp

Project Member

Comment 6 by bugdroid1@chromium.org, Mar 30 2016

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/d7b5be44530835f2b1f3c3cfc8d6d7ea18a50553

commit d7b5be44530835f2b1f3c3cfc8d6d7ea18a50553
Author: ymalik <ymalik@chromium.org>
Date: Tue Mar 29 23:02:54 2016

Correctly reset ScrollAnimator animation state after cancelling animation

We were calling willAnimaterToOffset with the updated target position before
clearing the animation state when in PostAnimationCleanup. As a result, we
didn't take into account the potentially modified scroll offset by a
programmatic scroll.

BUG= 598548 

Review URL: https://codereview.chromium.org/1842623003

Cr-Commit-Position: refs/heads/master@{#383854}

[modify] https://crrev.com/d7b5be44530835f2b1f3c3cfc8d6d7ea18a50553/third_party/WebKit/Source/platform/scroll/ScrollAnimator.cpp
[modify] https://crrev.com/d7b5be44530835f2b1f3c3cfc8d6d7ea18a50553/third_party/WebKit/Source/platform/scroll/ScrollAnimatorCompositorCoordinator.h
[modify] https://crrev.com/d7b5be44530835f2b1f3c3cfc8d6d7ea18a50553/third_party/WebKit/Source/platform/scroll/ScrollAnimatorTest.cpp

Comment 7 by ymalik@chromium.org, Mar 30 2016

@ajha, I tested locally, but can you also verify that the issue has been fixed?

Comment 8 by ymalik@chromium.org, Mar 31 2016

Actually this is still not fixed for all cases. More specifically, if we schedule the animation on the compositor from MT, we still have this issue.

Working on a fix.
Project Member

Comment 9 by bugdroid1@chromium.org, Apr 1 2016

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/d115573365c24d26fc93fe9b9d0976d93725e91d

commit d115573365c24d26fc93fe9b9d0976d93725e91d
Author: ymalik <ymalik@chromium.org>
Date: Fri Apr 01 22:51:44 2016

Restore handling of new scroll when waiting to cancel current scroll on cc

https://crrev.com/1678713002 caused this regression. This CL restores the
old handling of a new user scroll when in state WaitingToCancelOnCompositor.

The current behavior is pretty broken when we are in WaitingToCancelAnimation
and a new user scroll arrives. willAnimateToOffset updates the target offset and
goes into WaitingToSendToCompositor. Consequently, ::updateCompositorAnimation
doesn't abort the previous animation and starts a new one with the updated
target and the two animations compete for scroll offsets.

With this CL, when we are in WaitingToCancelAnimation and a new user scroll
arrives, we do nothing and let ::updateCompositorAnimation cancel the running
animation. As subsequent user scrolls arrive, we will now just start a new
animation with the updated target (and the bug is that we will ignore the first
user scroll when in WaitingToCancelAnimation).

The remaining bug is less serious because in general this is a special case when
we are cancelling in the middle of a user scroll and then starting another
scroll right away. This happens in cases where a site listens for the scroll and
updates the scroll offset (programmatic scroll cancels user scroll), and the
user continues to scroll. FWIW, this is the current behavior in M49, and no real
issues have been reported around it.  crbug.com/599876  tracks the correct
handling for this case.

BUG= 598548 

Review URL: https://codereview.chromium.org/1852753002

Cr-Commit-Position: refs/heads/master@{#384714}

[modify] https://crrev.com/d115573365c24d26fc93fe9b9d0976d93725e91d/third_party/WebKit/Source/platform/scroll/ScrollAnimator.cpp
[modify] https://crrev.com/d115573365c24d26fc93fe9b9d0976d93725e91d/third_party/WebKit/Source/platform/scroll/ScrollAnimatorCompositorCoordinator.h
[modify] https://crrev.com/d115573365c24d26fc93fe9b9d0976d93725e91d/third_party/WebKit/Source/platform/scroll/ScrollAnimatorTest.cpp

Labels: TE-Verified-M51 TE-Verified-51.0.2699.0
Checked the issue on 51.0.2699.0 dev,Ubuntu 14.04 and is working fine. i.e; Able to scroll on continuous use up/down key from keyboard
Labels: Merge-Request-50

Comment 12 by tin...@google.com, Apr 4 2016

Labels: -Merge-Request-50 Merge-Approved-50 Hotlist-Merge-Approved
Your change meets the bar and is auto-approved for M50 (branch: 2661)
Please merge your change to M50 branch 2661 by 5:00 PM PST today, 04/04/16 so we can take it for this week beta. Thank you.
M50 Stable is launching very soon! Your bug is labelled as Stable ReleaseBlock, pls make sure to land the fix and get it merged ASAP. All changes MUST be merged into the release branch by 5pm on Apr-8 to make into the desktop Stable final build cut. Thanks!
Project Member

Comment 15 by bugdroid1@chromium.org, Apr 4 2016

Labels: -merge-approved-50 merge-merged-2661
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/54cfe8ed557f0cd75b031cf1049c661fff28baa2

commit 54cfe8ed557f0cd75b031cf1049c661fff28baa2
Author: Yash Malik <ymalik@google.com>
Date: Mon Apr 04 21:35:15 2016

Correctly reset ScrollAnimator animation state after cancelling animation

We were calling willAnimaterToOffset with the updated target position before
clearing the animation state when in PostAnimationCleanup. As a result, we
didn't take into account the potentially modified scroll offset by a
programmatic scroll.

BUG= 598548 

Review URL: https://codereview.chromium.org/1842623003

(cherry picked from commit d7b5be44530835f2b1f3c3cfc8d6d7ea18a50553)

Cr-Original-Commit-Position: refs/heads/master@{#383854}
Cr-Commit-Position: refs/branch-heads/2661@{#481}
Cr-Branched-From: ef6f6ae5e4c96622286b563658d5cd62a6cf1197-refs/heads/master@{#378081}

[modify] https://crrev.com/54cfe8ed557f0cd75b031cf1049c661fff28baa2/third_party/WebKit/Source/platform/scroll/ScrollAnimator.cpp
[modify] https://crrev.com/54cfe8ed557f0cd75b031cf1049c661fff28baa2/third_party/WebKit/Source/platform/scroll/ScrollAnimatorCompositorCoordinator.h
[modify] https://crrev.com/54cfe8ed557f0cd75b031cf1049c661fff28baa2/third_party/WebKit/Source/platform/scroll/ScrollAnimatorTest.cpp

Project Member

Comment 16 by bugdroid1@chromium.org, Apr 4 2016

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/c0b6caeb9fc2aa138649231d719f8c4139623f70

commit c0b6caeb9fc2aa138649231d719f8c4139623f70
Author: Yash Malik <ymalik@google.com>
Date: Mon Apr 04 21:48:11 2016

Restore handling of new scroll when waiting to cancel current scroll on cc

https://crrev.com/1678713002 caused this regression. This CL restores the
old handling of a new user scroll when in state WaitingToCancelOnCompositor.

The current behavior is pretty broken when we are in WaitingToCancelAnimation
and a new user scroll arrives. willAnimateToOffset updates the target offset and
goes into WaitingToSendToCompositor. Consequently, ::updateCompositorAnimation
doesn't abort the previous animation and starts a new one with the updated
target and the two animations compete for scroll offsets.

With this CL, when we are in WaitingToCancelAnimation and a new user scroll
arrives, we do nothing and let ::updateCompositorAnimation cancel the running
animation. As subsequent user scrolls arrive, we will now just start a new
animation with the updated target (and the bug is that we will ignore the first
user scroll when in WaitingToCancelAnimation).

The remaining bug is less serious because in general this is a special case when
we are cancelling in the middle of a user scroll and then starting another
scroll right away. This happens in cases where a site listens for the scroll and
updates the scroll offset (programmatic scroll cancels user scroll), and the
user continues to scroll. FWIW, this is the current behavior in M49, and no real
issues have been reported around it.  crbug.com/599876  tracks the correct
handling for this case.

BUG= 598548 

Review URL: https://codereview.chromium.org/1852753002

(cherry picked from commit d115573365c24d26fc93fe9b9d0976d93725e91d)

Cr-Original-Commit-Position: refs/heads/master@{#384714}
Cr-Commit-Position: refs/branch-heads/2661@{#482}
Cr-Branched-From: ef6f6ae5e4c96622286b563658d5cd62a6cf1197-refs/heads/master@{#378081}

[modify] https://crrev.com/c0b6caeb9fc2aa138649231d719f8c4139623f70/third_party/WebKit/Source/platform/scroll/ScrollAnimator.cpp
[modify] https://crrev.com/c0b6caeb9fc2aa138649231d719f8c4139623f70/third_party/WebKit/Source/platform/scroll/ScrollAnimatorCompositorCoordinator.h
[modify] https://crrev.com/c0b6caeb9fc2aa138649231d719f8c4139623f70/third_party/WebKit/Source/platform/scroll/ScrollAnimatorTest.cpp

Status: Fixed (was: Started)
Merged into M50.
Labels: TE-Verified-M50 TE-Verified-50.0.2661.66
Tested the issue on Windows 7, Ubuntu 14.04 using 50.0.2661.66.Observed that scrolling is smooth on using down/up arrow key from keyboard.
Please find attached screencast.

Marking it as TE-Verified.
598548.mp4
10.9 MB Download
Labels: Hotlist-Input-Dev

Sign in to add a comment