New issue
Advanced search Search tips

Issue 903273 link

Starred by 1 user

Issue metadata

Status: Fixed
Owner:
Closed: Nov 28
Components:
EstimatedDays: ----
NextAction: ----
OS: Android
Pri: 1
Type: Bug

Blocking:
issue 798719



Sign in to add a comment

Implicit root scroller can cause unreachable content on some pages

Project Member Reported by bokan@chromium.org, Nov 8

Issue description

Chrome Version       : 72.0.3602.2
OS Version: Android
URLs (if applicable) : http://mikecrm.com

What steps will reproduce the problem?
1. Scroll all the way to the bottom, with the URL bar hidden

What is the expected result?
Should see the bottom of the page

What happens instead of that?
Bottom of page is obscured

Pages on which we activate the implicit root scroller but have a non-resizing ancestor that clips cause this scenario.

On the page above, the root scroller has an overflow: hidden DIV as a parent. While the root scroller is resized by Blink when the URL bar hides, the parent DIV isn't so it obscured the bottom part of the content.

We already resize ancestor layers in the same way so I'm assuming we just need to composite these cases. Otherwise we should make sure we don't activate in this case.
 
Blocking: 798719
Project Member

Comment 2 by bugdroid1@chromium.org, Nov 28

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

commit ecddf567a4fef8a04d38b3dd8f418a58ec5867a7
Author: David Bokan <bokan@chromium.org>
Date: Wed Nov 28 19:58:44 2018

[root-scroller] Don't promote descendant of clip

Promoting an element with a clipping ancestor leads to a broken UX for
users and so we should detect and prevent this case. The break occurs
when the user hides the URL bar. Unless the page explicitly resizes the
clipping element (which is difficult for us to detect), the clip will be
smaller than the viewport and so it will block out the bottom region of
the scroller. To the user, this appears as an inability to scroll to the
bottom of the content.

We already prevent promoting an element if it has a scrolling ancestor.
This CL simply generalizes that check to check for clipping and masking
(since scrollers will necessarily have an overflow clip). The exception
here is the LayoutView (i.e. viewport). The viewport always has an
overflow clip but we use the frame's bounds to clip (which accounts for
the URL bar) so in that case we simply check for scrollability.

Bug:  903273 
Change-Id: I44b21a619052bcf6e4c08fa6369814f31bfb35cf
Reviewed-on: https://chromium-review.googlesource.com/c/1351563
Commit-Queue: David Bokan <bokan@chromium.org>
Reviewed-by: Chris Harrelson <chrishtr@chromium.org>
Cr-Commit-Position: refs/heads/master@{#611831}
[modify] https://crrev.com/ecddf567a4fef8a04d38b3dd8f418a58ec5867a7/third_party/blink/renderer/core/page/scrolling/root_scroller_controller.cc
[modify] https://crrev.com/ecddf567a4fef8a04d38b3dd8f418a58ec5867a7/third_party/blink/renderer/core/page/scrolling/root_scroller_test.cc

Status: Fixed (was: Assigned)

Sign in to add a comment