Issue metadata
Sign in to add a comment
|
Scrolling gets stuck on page after following link
Reported by
jdor...@gmail.com,
Dec 17 2016
|
||||||||||||||||||||||||||
Issue descriptionDevice name: Samsung S7 From "Settings > About Chrome" Application version:55.0.2883.91 Operating system: Android 6.0.1 URLs (if applicable): https://m.facebook.com/ Steps to reproduce: (1) Select and follow any given link that is represented by an image on the page (2) when link loaded, go back to the original page (3) try to scroll up or down Expected result: Scrolling works Actual result: The image with the link gets framed by an orange frame and the page is stuck on that part of the page. Trying to drag makes the page jump back immediately. This behavior also occurs on many other sites, this is just an example. Regards Jan
,
Dec 18 2016
I noticed this on various sites. I do not get any visual changes in the sites but scrolling snaps to the top after following links. Google Chrome 56.0.2924.23 (Official Build) beta (32-bit) Revision 034f1b9f3c64af980d051d007c992dc94882241e-refs/branch-heads/2924@{#437} OS Android 7.1.1; Pixel Build/NMF26O Command Line --use-mobile-user-agent --top-controls-show-threshold=0.5 --top-controls-hide-threshold=0.5 --use-mobile-user-agent --enable-pinch --enable-viewport --enable-overlay-scrollbar --validate-input-event-stream --enable-longpress-drag-selection --touch-selection-strategy=direction --disable-gpu-process-crash-limit --main-frame-resizes-are-orientation-changes --disable-composited-antialiasing --ui-prioritize-in-gpu-process --profiler-timing=0 --prerender-from-omnibox=enabled --enable-dom-distiller --flag-switches-begin --enable-data-reduction-proxy-lite-page --disable-password-generation --site-per-process --show-autofill-type-predictions --supervised-user-safesites=disabled --enable-features=NTPSaveToOffline,OfflineBookmarks --disable-features=enable-manual-password-generation,enable-password-force-saving --flag-switches-end --enable-instant-extended-api
,
Dec 19 2016
Made a quick screen recording to show the effect. Notice refreshing the page resets any affect. This is also now 100% reproducible. https://goo.gl/photos/Y2R93DJE9C4hq8iR8
,
Dec 19 2016
,
Dec 21 2016
Steve, David, is this on your radar already? I think this has been happening on Dev for >2 weeks (I first filed in-app feedback on Dec 2nd - on a Pixel with 56.0.2924.10), but I can't find a bug other than this one. I noticed that this seems to have to do with whether an element has "focus", e.g. after clicking on a link or selecting (by tapping on) an element. The scroll loop can be cleared by deselecting the element, e.g. tapping elsewhere on the page or reloading it. Maybe related to scroll anchoring?
,
Dec 21 2016
There have been some changes related to scroll anchoring and focus, it's possible those might have introduced a bug. I can't reproduce myself though on a Nexus 5X, holding down a link doesn't seem to give it focus and I can't find a way to reproduce the orange "focus" ring. Do you know what the difference might be? Even with a focused text box, which does get the orange ring, I can't reproduce the scroll behavior. I've tried in Chrome 57.0.2950.3 (Dev), 56.0.2924.23 (Beta), and 55.0.2883.91 (Stable) to no avail.
,
Dec 21 2016
Sorry, in my post above replace "scroll anchoring" with "scroll into view". I don't know about scroll anchoring :)
,
Dec 21 2016
I think that giving something focus alone isn't enough. Feels a bit like you need a different tab / widget to be active before trying to scroll. The steps described in #1 (and done in the video of #3) and #2 reproduce it for me.
,
Dec 21 2016
* steps in #0 and #1 .. Sorry :)
,
Dec 21 2016
I can't repro using steps from any of the reports here.
,
Dec 21 2016
According to eseckler@, he can't repro on a N5X either so perhaps it's device specific. skobes@, do you have a Pixel you could try this on?
,
Dec 21 2016
I tried this on a Pixel with 55.0.2883.91 but was unable to repro either the orange focus rectangle or the scroll jumping.
,
Dec 22 2016
This seems to be due to another Android app interfering with Chrome via Android's Accessibility features. For me, that's the "Tasker" app. Once disabled, the problem disappears. @other folks experiencing this: Can you try disabling apps listed under accessibility in the Android settings (and then restarting the Chrome app)? Not sure if this is an issue that's caused by Chrome, Android's accessibility feature, or by a bad third-party app.
,
Dec 22 2016
Testing with N5X: If I enable any service in Android's Accessibility settings (e.g. "Switch Access"), the problem starts to occur.
,
Dec 22 2016
OP here. I can confirm that disabling all services under accessibility settings removes the issue. However, this problem must be something very recently introduced as I always have had at least the service enabled for lastpass.
,
Dec 22 2016
I can also confirm that enabling one or more services from the the following apps causes the issue: Automagic Premium, LastPass, Light Flow. The common permission they all require is the ”Observe your actions" permission.
,
Dec 22 2016
Interesting, there was a scroll perf regression introduced in issue 666251 that turned out to be related to accessibility, maybe it's related. That was in M54 though.
,
Dec 22 2016
Issue 675957 has been merged into this issue.
,
Dec 22 2016
Attached a trace. Seems that the scroll offset jumps everytimes we handle AccessibilityMsg_Events_ACK. I'll dig deeper.
,
Dec 22 2016
Here's a trace of when the scroll gets reset. It's actually from AccessibilityMsg_PerformAction: #0 blink::FrameView::updateScrollOffset #1 0xa7b06d2c in blink::ScrollableArea::scrollOffsetChanged #2 0xa7b061f0 in blink::ScrollAnimatorCompositorCoordinator::scrollOffsetChanged #3 0xa7b0256a in blink::ProgrammaticScrollAnimator::notifyOffsetChanged #4 0xa7b02592 in blink::ProgrammaticScrollAnimator::scrollToOffsetWithoutAnimation #5 0xa7b06e2e in blink::ScrollableArea::programmaticScrollHelper #6 0xa7b06b92 in blink::ScrollableArea::setScrollOffset #7 0xa654a02a in blink::RootFrameViewport::distributeScrollBetweenViewports #8 0xa654a21a in blink::RootFrameViewport::updateScrollOffset #9 0xa7b06d2c in blink::ScrollableArea::scrollOffsetChanged #10 0xa7b061f0 in blink::ScrollAnimatorCompositorCoordinator::scrollOffsetChanged #11 0xa7b0256a in blink::ProgrammaticScrollAnimator::notifyOffsetChanged #12 0xa7b02592 in blink::ProgrammaticScrollAnimator::scrollToOffsetWithoutAnimation #13 0xa7b06e2e in blink::ScrollableArea::programmaticScrollHelper #14 0xa7b06b92 in blink::ScrollableArea::setScrollOffset #15 0xa6549e7c in blink::RootFrameViewport::setScrollOffset #16 0xa654a19e in blink::RootFrameViewport::scrollIntoView #17 0xa68a0816 in blink::LayoutBox::scrollRectToVisible #18 0xa68a0968 in blink::LayoutBox::scrollRectToVisible #19 0xa68a0968 in blink::LayoutBox::scrollRectToVisible #20 0xa68a0968 in blink::LayoutBox::scrollRectToVisible #21 0xa68a0968 in blink::LayoutBox::scrollRectToVisible #22 0xa68a0968 in blink::LayoutBox::scrollRectToVisible #23 0xa68a0968 in blink::LayoutBox::scrollRectToVisible #24 0xa68a0968 in blink::LayoutBox::scrollRectToVisible #25 0xa68a0968 in blink::LayoutBox::scrollRectToVisible #26 0xa68a0968 in blink::LayoutBox::scrollRectToVisible #27 0xa68a0968 in blink::LayoutBox::scrollRectToVisible #28 0xa68a0968 in blink::LayoutBox::scrollRectToVisible #29 0xa68a0968 in blink::LayoutBox::scrollRectToVisible #30 0xa68a0968 in blink::LayoutBox::scrollRectToVisible #31 0xa690e60c in blink::LayoutObject::scrollRectToVisible #32 0xa624f7c0 in blink::Element::updateFocusAppearance #33 0xa61fc424 in blink::Document::setFocusedElement #34 0xa6a9b664 in blink::FocusController::setFocusedElement #35 0xa624f540 in blink::Element::focus #36 0xa537f96c in blink::AXNodeObject::setFocused #37 0xa4d3b70c in blink::WebAXObject::setFocused #38 0xa3a5fa00 in content::RenderAccessibilityImpl::OnPerformAction So it looks like for some reason accessibility is constantly setting the focused element which cases it to scroll into view.
,
Dec 23 2016
maybe related to https://crbug.com/676058? cc-ing dmazzoni@ for accessibility triage. Dominic, do you have an idea why accessibility might be setting the focus continuously?
,
Jan 3 2017
I'm seeing lots of reports from the Play Store talking about scrolling issues, so we need to review (and fix) this ASAP. PTAL dmazzoni@.
,
Jan 3 2017
FWIW dmazzoni@ is OOO this week. TE, can we please get an exact bisect on this?
,
Jan 3 2017
kravula@ - can you try to repro?
,
Jan 3 2017
We are able to repro this issue with Accessibility-> Switch Access ON option Chrome Beta :56.0.2924.23 Devices: Nexus 5X/NMF26V Samsung Galaxy S7(SM-G930F)/MMB29K Bisect info: Good build: 56.0.2924.13 Bad build : 56.0.2924.18
,
Jan 3 2017
,
Jan 3 2017
Two patches stand out in that range: """ commit 7fa77424b02d63b38bb1262471cc4af8e3f54fc0 author Dominic Mazzoni <dmazzoni@chromium.org> Fri Dec 02 20:05:14 2016 Merge to M56: Revert "Android shouldn't fire focus events when the WebView itself isn't focused" Caused http://crbug.com/667559 - when clicking on a <select> pop-up and then returning to the page, focus was being reset to the whole page rather than back to the select element. Original changelist: https://chromiumcodereview.appspot.com/2416293002 BUG= 648391 , 667559 TBR=dtseng@chromium.org Review-Url: https://codereview.chromium.org/2547903002 Cr-Commit-Position: refs/heads/master@{#435964} (cherry picked from commit c2607397665f0a0a8e3b16198dbeaae2a9e1e0bb) Review URL: https://codereview.chromium.org/2546183002 . Cr-Commit-Position: refs/branch-heads/2924@{#296} Cr-Branched-From: 3a87aecc31cd1ffe751dd72c04e5a96a1fc8108a-refs/heads/master@{#433059} """ And """ commit 13ae3f245af2124718f024ae13f328c27c618f09 author Koji Ishii <kojii@chromium.org> Thu Dec 01 08:28:25 2016 committer Koji Ishii <kojii@chromium.org> Thu Dec 01 08:31:28 2016 Merge 2924: Avoid updateStyleAndLayoutTree in determineAccessibilityRole This patch avoids updating layout tree in AXNodeObject::determineAccessibilityRole(). Element::isFocusable() requires styles to be updated. However, when layout code calls determineAccessibilityRole(), updating layout tree should be avoided since it may destroy the calling object. This patch replaces it to supportsFocus(), since the main purpose is to give elements with tabIndex explicitly set get some role. This is a speculative fix. BUG=590369, 647602 , 665168 Review-Url: https://codereview.chromium.org/2532023002 Cr-Commit-Position: refs/heads/master@{#435009} (cherry picked from commit 338b38e06760302a8010bfea008865f55db4db0c) Review URL: https://codereview.chromium.org/2542883002 . Cr-Commit-Position: refs/branch-heads/2924@{#241} Cr-Branched-From: 3a87aecc31cd1ffe751dd72c04e5a96a1fc8108a-refs/heads/master@{#433059} """ I'll try to manually revert each to narrow it down.
,
Jan 4 2017
The bisect in #25 is wrong, I tried a wider bisect and the problem existed in 56.0.2924.10 and beyond. I did a fresh bisect and narrowed it down to: commit fd9566093da77d9413ba61f8be1b6e03daaadf33 Author: dmazzoni <dmazzoni@chromium.org> Date: Fri Nov 4 13:40:02 2016 -0700 Android accessibility: automatically focus links Manually reverting from ToT does fix the issue.
,
Jan 4 2017
And just found issue 675343 and aelias@ is already on the revert so dup'ing into that.
,
Jan 4 2017
For future reference, you can exact bisect from Clank prebuilts nowadays, which allowed me to investigate fast. The command I used is "python clank/tools/bisect-archived-builds.py -a arm --apk chromium -u -o -g 414607 -b 423768" |
|||||||||||||||||||||||||||
►
Sign in to add a comment |
|||||||||||||||||||||||||||
Comment 1 by gollyz...@gmail.com
, Dec 17 2016