paint flashing on programmatic scroll of composited overflow:hidden |
||||
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.
,
Nov 11 2017
,
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
,
Nov 13 2017
,
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.
,
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.
,
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
,
Nov 22 2017
The tests in comment #3 are fixed. The original report is WontFix per comment #7. |
||||
►
Sign in to add a comment |
||||
Comment 1 by skobes@chromium.org
, Nov 11 20173.9 KB
3.9 KB View Download