Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(548)

Issue 2365673002: Fix assertions related to floats and z-order lists when compositing opaque scrollers (Closed)

Created:
4 years, 3 months ago by Stephen Chennney
Modified:
4 years, 3 months ago
Reviewers:
flackr, Xianzhu
CC:
chromium-reviews, szager+layoutwatch_chromium.org, zoltan1, blink-reviews-layout_chromium.org, pdr+renderingwatchlist_chromium.org, eae+blinkwatch, leviw+renderwatch, slimming-paint-reviews_chromium.org, dshwang, jchaffraix+rendering, blink-reviews-paint_chromium.org, blink-reviews
Target Ref:
refs/pending/heads/master
Project:
chromium
Visibility:
Public.

Description

Fix assertions related to floats and z-order lists when compositing opaque scrollers The codepath for compositing opaque scrollers, enabled by --enable-blink-feature="CompositeOpaqueScrollbars", was triggering two asserts. One assertion was due to querying stacking order lists when those lists were dirty. The assertion is fixed by updating the stacking order lists if needed before the query, only if we actually need to look at the list. The other assertion was a side-effect of an earlier change to remove a different assertion, https://codereview.chromium.org/2191953002. The code in question is attempting to update the shouldPaint flag of a FloatingObject when that object has had a change in selfPaintingLayer status. But because selfPaintingLayer status has already been updated, and the query for FloatingObject::shouldPaint() checks the current selfPaintingLayer status, we have no way of finding out if a floating object with a selfpaintingLayer was previously shouldPaint. We were requiring that shouldPaint return true so that we could set it false and return, but instead we were falling out of the loop and hitting an ASSERT_NOT_REACHED. The fix is to not check the previous status and just set shouldPaint to false for all FloatingObject where the object has a selfPaintingLayer, and not assert not reached as now we might exit the loop. We are no longer returning as soon as we update the shouldPaint to false because we can no longer be sure that we are actually changing the value of shouldPaint. The lack of assertions allows 2 webkit_unit_tests to pass without crashing, and prevents crashes in a slew of LayoutTests. Of note, fast/overflow/overflow-float-stacking.html no longer crashes, but does fail analogously to fast/overflow/overflow-stacking.html. In https://codereview.chromium.org/1826013002 we had decided to live with that failure as it is a manifestation of the fundamental compositing bug that users on high DPI devices have always seen. R=wangxianzhu@chromium.org,flackr@chromium.org BUG=593097, 381840 CQ_INCLUDE_TRYBOTS=master.tryserver.chromium.linux:linux_layout_tests_slimming_paint_v2 Committed: https://crrev.com/7081b331ccd1903e0b3cc539d8decccb0a09863d Cr-Commit-Position: refs/heads/master@{#420477}

Patch Set 1 #

Unified diffs Side-by-side diffs Delta from patch set Stats (+6 lines, -8 lines) Patch
M third_party/WebKit/Source/core/layout/LayoutBlockFlow.cpp View 1 chunk +1 line, -4 lines 0 comments Download
M third_party/WebKit/Source/core/paint/PaintLayer.cpp View 1 chunk +5 lines, -4 lines 0 comments Download

Messages

Total messages: 11 (6 generated)
Stephen Chennney
To see the asserts before and after you need to be running in a debug ...
4 years, 3 months ago (2016-09-22 19:53:51 UTC) #4
Xianzhu
lgtm
4 years, 3 months ago (2016-09-22 20:27:48 UTC) #5
commit-bot: I haz the power
CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/v2/patch-status/codereview.chromium.org/2365673002/1
4 years, 3 months ago (2016-09-22 20:52:08 UTC) #8
commit-bot: I haz the power
Committed patchset #1 (id:1)
4 years, 3 months ago (2016-09-22 22:09:45 UTC) #9
commit-bot: I haz the power
4 years, 3 months ago (2016-09-22 22:11:52 UTC) #11
Message was sent while issue was closed.
Patchset 1 (id:??) landed as
https://crrev.com/7081b331ccd1903e0b3cc539d8decccb0a09863d
Cr-Commit-Position: refs/heads/master@{#420477}

Powered by Google App Engine
This is Rietveld 408576698