New issue
Advanced search Search tips

Issue 784053 link

Starred by 1 user

Issue metadata

Status: WontFix
Owner:
Closed: Nov 2017
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: Linux , Android , Windows , Chrome , Mac
Pri: 2
Type: Bug

Blocking:
issue 544140



Sign in to add a comment

paint flashing on programmatic scroll of composited overflow:hidden

Project Member Reported by skobes@chromium.org, Nov 11 2017

Issue description

Open attachment with --show-paint-rects, note flashing during scroll.

This is because PLSA::ComputeNeedsCompositedScrolling has

  if (!layer->ScrollsOverflow())
    return false;

and ScrollsOverflow returns false for overflow: hidden (it would be better named InputScrollsOverflow, since such elements can be scrolled programmatically).

With RLS, this affects iframe documents (even after my pending fix for  issue 778469 ).

Probably an easy fix.
 

Comment 1 by skobes@chromium.org, Nov 11 2017

cs4.html
3.9 KB View Download

Comment 2 by skobes@chromium.org, Nov 11 2017

Components: Blink>Scroll

Comment 3 by skobes@chromium.org, Nov 11 2017

This affects 5 tests in compositing/ with RLS:

  compositing/iframes/invisible-nested-iframe-show.html
  compositing/iframes/overlapped-iframe-iframe.html
  compositing/rtl/rtl-iframe-absolute.html
  compositing/rtl/rtl-iframe-fixed.html
  compositing/rtl/rtl-iframe-relative.html

Comment 4 by skobes@chromium.org, Nov 11 2017

Blocking: -417782 544140

Comment 5 by skobes@chromium.org, Nov 13 2017

Owner: skobes@chromium.org
Status: Started (was: Available)

Comment 6 by skobes@chromium.org, Nov 16 2017

Correction, this really only affects compositing/iframes/invisible-nested-iframe-show.html.

The other four tests just need new RLS baselines with "Child Containment Layer".  Child Containment Layer is the red flag I noted on  issue 778469 , of a composited iframe without composited scrolling.  But it's correct for those tests because the iframes in question don't actually have positive overflow.

In compositing/iframes/overlapped-iframe-iframe.html, the first iframe has no overflow; it got scrolling layers without RLS, but won't get them with RLS. 
 (PLC creates scrolling layers when it is in "compositing mode", regardless of overflow.)  The second iframe, with id="overlap", is a stranger case - it HAS overflow, but its PLC doesn't enter compositing mode.  So it doesn't get scrolling layers, even without RLS.  I'll add a note about this on issue 782991.

The RTL tests are strange in a different way - they have "negative" overflow (content overflowing to the right, in the opposite of the inline flow direction).  Such content is unreachable by scrolling (input or programmatic) and PLSA::HasHorizontalOverflow returns false.  So it doesn't make sense to create scrolling layers there.

Comment 7 by skobes@chromium.org, Nov 17 2017

Update: pdr and chrishtr raised concerns about memory usage, since the scrolling contents layer for a composited overflow: hidden will be larger than its main GraphicsLayer.

I'm going to abandon pending change http://crrev.com/c/776072, which enabled composited scrolling for promoted overflow: hidden.

We discussed changing non-RLS behavior to avoid creating the PLC scroll layer for composited iframes with overflow: hidden documents, but I think it would be difficult to decouple PLC's composited scrolling paths from PLC::compositing_.

Let's just update the RLS baselines based on the current RLS behavior.
Project Member

Comment 8 by bugdroid1@chromium.org, Nov 22 2017

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

commit 25fb9705c7407617fd362c060c71c711b2febdde
Author: Steve Kobes <skobes@chromium.org>
Date: Wed Nov 22 23:40:38 2017

RLS baselines for some tests with composited iframes.

Compared to generic baselines (patchset 3), the RLS baselines reflect the
presence of scrolling layers for top-level documents.  For composited iframes,
PaintLayerCompositor's scrolling layers are gone, replaced by:

- CompositedLayerMapping's scrolling layers, if the iframe is user-scrollable
- "Child Containment Layer", if no overflow or user scrolls are disabled

See comments on attached bug regarding treatment of RTL overflow and the
decision not to create scrolling layers when user scrolls are disabled.

Bug:  784053 
Change-Id: I100a2e0ecad5b2599522f0472c603d51d20c6252
Reviewed-on: https://chromium-review.googlesource.com/786310
Reviewed-by: Philip Rogers <pdr@chromium.org>
Commit-Queue: Steve Kobes <skobes@chromium.org>
Cr-Commit-Position: refs/heads/master@{#518805}
[modify] https://crrev.com/25fb9705c7407617fd362c060c71c711b2febdde/third_party/WebKit/LayoutTests/FlagExpectations/root-layer-scrolls
[add] https://crrev.com/25fb9705c7407617fd362c060c71c711b2febdde/third_party/WebKit/LayoutTests/flag-specific/root-layer-scrolls/compositing/iframes/invisible-nested-iframe-show-expected.txt
[add] https://crrev.com/25fb9705c7407617fd362c060c71c711b2febdde/third_party/WebKit/LayoutTests/flag-specific/root-layer-scrolls/compositing/iframes/overlapped-iframe-iframe-expected.txt
[add] https://crrev.com/25fb9705c7407617fd362c060c71c711b2febdde/third_party/WebKit/LayoutTests/flag-specific/root-layer-scrolls/compositing/rtl/rtl-iframe-absolute-expected.txt
[add] https://crrev.com/25fb9705c7407617fd362c060c71c711b2febdde/third_party/WebKit/LayoutTests/flag-specific/root-layer-scrolls/compositing/rtl/rtl-iframe-fixed-expected.txt
[add] https://crrev.com/25fb9705c7407617fd362c060c71c711b2febdde/third_party/WebKit/LayoutTests/flag-specific/root-layer-scrolls/compositing/rtl/rtl-iframe-relative-expected.txt
[add] https://crrev.com/25fb9705c7407617fd362c060c71c711b2febdde/third_party/WebKit/LayoutTests/flag-specific/root-layer-scrolls/platform/win/compositing/iframes/invisible-nested-iframe-show-expected.txt

Comment 9 by skobes@chromium.org, Nov 22 2017

Status: WontFix (was: Started)
The tests in comment #3 are fixed.  The original report is WontFix per comment #7.

Sign in to add a comment