New issue
Advanced search Search tips

Issue 798434 link

Starred by 1 user

Issue metadata

Status: Fixed
Owner:
Closed: Jan 2018
Components:
EstimatedDays: ----
NextAction: ----
OS: Android
Pri: 1
Type: Bug

Blocking:
issue 417782



Sign in to add a comment

[root-layer-scrolls] Bottom-fixed Elements move as URL bar hides

Project Member Reported by bokan@chromium.org, Jan 2 2018

Issue description

Chrome Version       : 65.0.3309.0	
OS Version: Android
URLs (if applicable) : http://bokand.github.io/bottomfixed.html

What steps will reproduce the problem?
1. Lauch chrome with --root-layer-scrolls
2. Visit any page with a position: fixed element fixed to the viewport bottom (e.g. above URL)
3. Scroll down to hide the URL bar 

What is the expected result?
The fixed element should always remain at the bottom of the viewport.

What happens instead of that?
The fixed element moves up as the URL bar hides until the finger is lifted. It then snaps back to the bottom when the user finishes the scroll.

 

Comment 1 by bokan@chromium.org, Jan 2 2018

Blocking: 417782
Project Member

Comment 2 by bugdroid1@chromium.org, Jan 3 2018

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

commit 91418fce4d985330002fc38c39815dec3835ed51
Author: David Bokan <bokan@chromium.org>
Date: Wed Jan 03 03:46:30 2018

Fix URL bar adjustment under root-layer-scrolls

When an element is position: fixed to the bottom of the screen, hiding
the URL bar produces a transform in the compositor so that the Element
appears to stay fixed to the viewport bottom. This is because, as the
URL bar is hidden, the viewport height is expanded. However, this
expansion happens entirely in the compositor. Until the user releases
their finger, Blink will not get a resize so the Element won't get be
repositioned with the updated viewport height.

With root-layer-scrolling, the root scroller becomes the root
PaintLayer. We previously carved out exceptions for the root layer since
its scrolling was delegated to special "frame scrolling" layers in the
compositor. This patch removes these exceptions and marks the
LayoutView's scrolling layer as being a "position fixed container" so
that position: fixed Elements use it as their container. It also marks
this layer as being affected by URL bar resizes so that we apply the
above-mentioned URl bar transform.

Bug:  798434 
Cq-Include-Trybots: master.tryserver.blink:linux_trusty_blink_rel;master.tryserver.chromium.linux:linux_layout_tests_slimming_paint_v2
Change-Id: I69623c619471ced826aa61340d946a0eeb0110ae
Reviewed-on: https://chromium-review.googlesource.com/847458
Reviewed-by: Steve Kobes <skobes@chromium.org>
Commit-Queue: David Bokan <bokan@chromium.org>
Cr-Commit-Position: refs/heads/master@{#526612}
[modify] https://crrev.com/91418fce4d985330002fc38c39815dec3835ed51/third_party/WebKit/LayoutTests/VirtualTestSuites
[add] https://crrev.com/91418fce4d985330002fc38c39815dec3835ed51/third_party/WebKit/LayoutTests/virtual/android/url-bar/README.txt
[add] https://crrev.com/91418fce4d985330002fc38c39815dec3835ed51/third_party/WebKit/LayoutTests/virtual/android/url-bar/bottom-fixed-adjusted-when-showing-url-bar-expected.html
[add] https://crrev.com/91418fce4d985330002fc38c39815dec3835ed51/third_party/WebKit/LayoutTests/virtual/android/url-bar/bottom-fixed-adjusted-when-showing-url-bar.html
[modify] https://crrev.com/91418fce4d985330002fc38c39815dec3835ed51/third_party/WebKit/Source/core/frame/Settings.json5
[modify] https://crrev.com/91418fce4d985330002fc38c39815dec3835ed51/third_party/WebKit/Source/core/frame/SettingsDelegate.h
[modify] https://crrev.com/91418fce4d985330002fc38c39815dec3835ed51/third_party/WebKit/Source/core/page/Page.cpp
[modify] https://crrev.com/91418fce4d985330002fc38c39815dec3835ed51/third_party/WebKit/Source/core/paint/compositing/CompositedLayerMapping.cpp
[modify] https://crrev.com/91418fce4d985330002fc38c39815dec3835ed51/third_party/WebKit/Source/core/paint/compositing/PaintLayerCompositor.cpp

Comment 3 by bokan@chromium.org, Jan 3 2018

Status: Fixed (was: Started)

Sign in to add a comment