New issue
Advanced search Search tips
Note: Color blocks (like or ) mean that a user may not be available. Tooltip shows the reason.

Issue 874675 link

Starred by 1 user

Issue metadata

Status: Fixed
Owner:
Last visit > 30 days ago
Closed: Aug 23
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: ----
Pri: 1
Type: Bug

Blocking:
issue 836886



Sign in to add a comment

[BlinkGenPropertyTrees] 2 new sticky-related scroll layout test failures

Project Member Reported by pdr@chromium.org, Aug 15

Issue description

These tests started failing recently (run with --additional-driver-flag=--enable-blink-gen-property-trees):
compositing/overflow/mixed-composited-nested-sticky-overflow-scroller.html
fast/css/sticky/sticky-clip-rel-child.html

See: https://test-results.appspot.com/data/layout_results/linux-blink-gen-property-trees/228/layout-test-results/results.html

Using the bot I was able to narrow the regression range to:
https://chromium.googlesource.com/chromium/src/+log/04b716f7608bea53d0903f821ef0aa4f59741b6d..ec978fdcd324d32e1dd1ccec03900084652ebe26?pretty=fuller&n=10000

I think this was likely caused by crrev.com/581763:
Don't force paint invalidation on non-composited scroll.
 
Cc: pdr@chromium.org
Owner: trchen@chromium.org
Status: Started (was: Assigned)
It looks like composited sticky position not having viewport constraints hooked up properly. Investigating.
Cc: chrishtr@google.com
Labels: -Pri-2 Pri-1
The scroller is non-composited, therefore the sticky layer doesn't use sticky constrained layer either, which is working as intended.

However the sticky descendant was not invalidated nor have paint offset updated properly upon scroll, even in non-BGPT mode.

I uploaded a test simplified from a mixed-composited-nested-sticky-overflow-scroller.html

Repro: Open test26.html and scroll the scroller.
Expected result: The green box should not move.
Actual result: The green box scrolled along. Bonus: With a DCHECK build, toggling the background color of the green box to force a repaint, the paint offset under-invalidation will be detected by a DCHECK.

[1:1:0820/163941.707652:FATAL:find_paint_offset_and_visual_rect_needing_update.h(46)] Check failed: *&old_paint_offset_ == *&paint_offset. Property was updated without the layout object ("LayoutBlockFlow (sticky positioned) DIV class='outersticky'") needing a paint property update.

Promoting to P1 since it also breaks vanilla.
test26.html
372 bytes View Download
Project Member

Comment 3 by bugdroid1@chromium.org, Aug 23

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

commit 47afbe8ea56346b06f85309a351eb9de841e8c12
Author: Tien-Ren Chen <trchen@chromium.org>
Date: Thu Aug 23 02:23:02 2018

[Blink] Fix under-invalidation for sticky descendants of non-composited scoller

Sticky descendants need to re-compute paint offset upon scrolled. Beside
fixing the under-invalidation, this CL also reduced the strength of the
invalidation so instead of full paint invalidation it only needs a paint
offset check.

BUG= 874675 

Cq-Include-Trybots: luci.chromium.try:linux-blink-gen-property-trees;luci.chromium.try:linux_layout_tests_slimming_paint_v2;master.tryserver.blink:linux_trusty_blink_rel
Change-Id: I0e4ab3b667a6f06bfe3c584285dc2e31fa4ea7c2
Reviewed-on: https://chromium-review.googlesource.com/1182668
Reviewed-by: Chris Harrelson <chrishtr@chromium.org>
Reviewed-by: Xianzhu Wang <wangxianzhu@chromium.org>
Commit-Queue: Tien-Ren Chen <trchen@chromium.org>
Cr-Commit-Position: refs/heads/master@{#585370}
[modify] https://crrev.com/47afbe8ea56346b06f85309a351eb9de841e8c12/third_party/WebKit/LayoutTests/FlagExpectations/enable-blink-gen-property-trees
[modify] https://crrev.com/47afbe8ea56346b06f85309a351eb9de841e8c12/third_party/blink/renderer/core/paint/paint_and_raster_invalidation_test.cc
[modify] https://crrev.com/47afbe8ea56346b06f85309a351eb9de841e8c12/third_party/blink/renderer/core/paint/paint_layer_scrollable_area.cc

Status: Fixed (was: Started)

Sign in to add a comment