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

Issue 1491193003: Fix several corner case issues of scrollbar paint invalidation (Closed)

Created:
5 years ago by Xianzhu
Modified:
5 years ago
Reviewers:
chrishtr, skobes
CC:
blink-reviews, blink-reviews-layout_chromium.org, blink-reviews-paint_chromium.org, chromium-reviews, dshwang, eae+blinkwatch, jchaffraix+rendering, leviw+renderwatch, pdr+renderingwatchlist_chromium.org, slimming-paint-reviews_chromium.org, szager+layoutwatch_chromium.org, zoltan1
Base URL:
https://chromium.googlesource.com/chromium/src.git@master
Target Ref:
refs/pending/heads/master
Project:
chromium
Visibility:
Public.

Description

Fix several corner case issues of scrollbar paint invalidation - Invalidate composited scrollbars also during paint invalidation to avoid unnecessary invalidation on intermediate changes; - Invalidate also on the containing box for moved/resized composited non-overlay scrollbars. This ensures the expanded/shrunk areas of the box because of scrollbar existence/width change are invalidated. This is the root cause of bug 535161. - Avoid unnecessary invalidations on overlay scrollbar changes. BUG=535161, 560418 Committed: https://crrev.com/48e402acbebf2717b8e79b89dba5310d31bf95da Cr-Commit-Position: refs/heads/master@{#363998}

Patch Set 1 #

Patch Set 2 : #

Total comments: 8

Patch Set 3 : #

Total comments: 4

Patch Set 4 : #

Total comments: 4

Patch Set 5 : #

Patch Set 6 : Rebaselines #

Patch Set 7 : #

Unified diffs Side-by-side diffs Delta from patch set Stats (+164 lines, -79 lines) Patch
M third_party/WebKit/LayoutTests/TestExpectations View 1 2 3 4 5 6 1 chunk +12 lines, -0 lines 0 comments Download
A + third_party/WebKit/LayoutTests/fast/repaint/destroy-composited-scrollbar.html View 1 1 chunk +4 lines, -2 lines 0 comments Download
A + third_party/WebKit/LayoutTests/fast/repaint/destroy-composited-scrollbar-expected.txt View 1 2 1 chunk +8 lines, -6 lines 0 comments Download
A + third_party/WebKit/LayoutTests/fast/repaint/destroy-overlay-scrollbar.html View 1 1 chunk +5 lines, -1 line 0 comments Download
A + third_party/WebKit/LayoutTests/fast/repaint/destroy-overlay-scrollbar-expected.txt View 1 1 chunk +3 lines, -2 lines 0 comments Download
M third_party/WebKit/LayoutTests/fast/repaint/destroy-scrollbar-expected.txt View 1 chunk +1 line, -3 lines 0 comments Download
M third_party/WebKit/LayoutTests/fast/repaint/layout-state-only-positioned-expected.txt View 1 2 1 chunk +1 line, -1 line 0 comments Download
M third_party/WebKit/LayoutTests/fast/repaint/overflow-scroll-body-appear-expected.txt View 1 2 chunks +11 lines, -10 lines 0 comments Download
M third_party/WebKit/LayoutTests/fast/repaint/resize-scrollable-div-expected.txt View 1 2 1 chunk +3 lines, -2 lines 0 comments Download
M third_party/WebKit/LayoutTests/fast/repaint/scrollbar-invalidation-on-resize-expected.txt View 1 2 1 chunk +2 lines, -2 lines 0 comments Download
M third_party/WebKit/LayoutTests/fast/repaint/scrollbar-invalidation-on-resize-with-border-expected.txt View 1 2 1 chunk +2 lines, -2 lines 0 comments Download
M third_party/WebKit/LayoutTests/platform/linux/fast/repaint/details-open-repaint-expected.txt View 1 2 1 chunk +2 lines, -1 line 0 comments Download
M third_party/WebKit/LayoutTests/platform/linux/fast/repaint/overflow-scroll-body-appear-expected.txt View 1 2 2 chunks +4 lines, -2 lines 0 comments Download
M third_party/WebKit/LayoutTests/platform/linux/fast/repaint/resize-scrollable-iframe-expected.txt View 1 2 1 chunk +3 lines, -2 lines 0 comments Download
M third_party/WebKit/Source/core/layout/LayoutBox.h View 1 2 1 chunk +2 lines, -0 lines 0 comments Download
M third_party/WebKit/Source/core/layout/LayoutBox.cpp View 1 2 3 4 1 chunk +7 lines, -0 lines 0 comments Download
M third_party/WebKit/Source/core/layout/LayoutObject.h View 1 2 3 4 5 2 chunks +5 lines, -1 line 0 comments Download
M third_party/WebKit/Source/core/layout/LayoutObject.cpp View 1 2 3 4 5 2 chunks +6 lines, -1 line 0 comments Download
M third_party/WebKit/Source/core/layout/compositing/PaintLayerCompositor.cpp View 1 2 3 4 1 chunk +2 lines, -2 lines 0 comments Download
M third_party/WebKit/Source/core/paint/PaintInvalidationCapableScrollableArea.h View 1 2 1 chunk +9 lines, -0 lines 0 comments Download
M third_party/WebKit/Source/core/paint/PaintInvalidationCapableScrollableArea.cpp View 1 2 3 4 4 chunks +72 lines, -26 lines 0 comments Download
M third_party/WebKit/Source/core/paint/PaintLayerScrollableArea.cpp View 1 2 3 4 1 chunk +0 lines, -3 lines 0 comments Download
M third_party/WebKit/Source/platform/scroll/ScrollableArea.cpp View 1 2 3 4 1 chunk +0 lines, -10 lines 0 comments Download

Dependent Patchsets:

Messages

Total messages: 39 (13 generated)
Xianzhu
5 years ago (2015-12-03 18:24:26 UTC) #3
chrishtr
https://codereview.chromium.org/1491193003/diff/20001/third_party/WebKit/Source/core/layout/compositing/PaintLayerCompositor.cpp File third_party/WebKit/Source/core/layout/compositing/PaintLayerCompositor.cpp (right): https://codereview.chromium.org/1491193003/diff/20001/third_party/WebKit/Source/core/layout/compositing/PaintLayerCompositor.cpp#newcode339 third_party/WebKit/Source/core/layout/compositing/PaintLayerCompositor.cpp:339: layoutObject->setPreviousPaintInvalidationRect(LayoutRect()); Add a new virtual method LayoutObject::clearPreviousPaintInvalidationRects() and override ...
5 years ago (2015-12-03 18:52:36 UTC) #4
Xianzhu
https://codereview.chromium.org/1491193003/diff/20001/third_party/WebKit/Source/core/layout/compositing/PaintLayerCompositor.cpp File third_party/WebKit/Source/core/layout/compositing/PaintLayerCompositor.cpp (right): https://codereview.chromium.org/1491193003/diff/20001/third_party/WebKit/Source/core/layout/compositing/PaintLayerCompositor.cpp#newcode339 third_party/WebKit/Source/core/layout/compositing/PaintLayerCompositor.cpp:339: layoutObject->setPreviousPaintInvalidationRect(LayoutRect()); On 2015/12/03 18:52:36, chrishtr wrote: > Add a ...
5 years ago (2015-12-03 22:13:28 UTC) #5
chrishtr
https://codereview.chromium.org/1491193003/diff/40001/third_party/WebKit/Source/core/paint/PaintInvalidationCapableScrollableArea.cpp File third_party/WebKit/Source/core/paint/PaintInvalidationCapableScrollableArea.cpp (right): https://codereview.chromium.org/1491193003/diff/40001/third_party/WebKit/Source/core/paint/PaintInvalidationCapableScrollableArea.cpp#newcode75 third_party/WebKit/Source/core/paint/PaintInvalidationCapableScrollableArea.cpp:75: needsPaintInvalidation = false; I find overriding a parameter's value ...
5 years ago (2015-12-04 00:20:01 UTC) #6
Xianzhu
https://codereview.chromium.org/1491193003/diff/40001/third_party/WebKit/Source/core/paint/PaintInvalidationCapableScrollableArea.cpp File third_party/WebKit/Source/core/paint/PaintInvalidationCapableScrollableArea.cpp (right): https://codereview.chromium.org/1491193003/diff/40001/third_party/WebKit/Source/core/paint/PaintInvalidationCapableScrollableArea.cpp#newcode75 third_party/WebKit/Source/core/paint/PaintInvalidationCapableScrollableArea.cpp:75: needsPaintInvalidation = false; On 2015/12/04 00:20:01, chrishtr wrote: > ...
5 years ago (2015-12-04 01:08:37 UTC) #7
chrishtr
https://codereview.chromium.org/1491193003/diff/60001/third_party/WebKit/Source/core/paint/PaintInvalidationCapableScrollableArea.cpp File third_party/WebKit/Source/core/paint/PaintInvalidationCapableScrollableArea.cpp (right): https://codereview.chromium.org/1491193003/diff/60001/third_party/WebKit/Source/core/paint/PaintInvalidationCapableScrollableArea.cpp#newcode86 third_party/WebKit/Source/core/paint/PaintInvalidationCapableScrollableArea.cpp:86: if (!isOverlay) It still reads confusingly to me. Isn't ...
5 years ago (2015-12-04 01:28:18 UTC) #8
Xianzhu
https://codereview.chromium.org/1491193003/diff/60001/third_party/WebKit/Source/core/paint/PaintInvalidationCapableScrollableArea.cpp File third_party/WebKit/Source/core/paint/PaintInvalidationCapableScrollableArea.cpp (right): https://codereview.chromium.org/1491193003/diff/60001/third_party/WebKit/Source/core/paint/PaintInvalidationCapableScrollableArea.cpp#newcode86 third_party/WebKit/Source/core/paint/PaintInvalidationCapableScrollableArea.cpp:86: if (!isOverlay) On 2015/12/04 01:28:18, chrishtr wrote: > It ...
5 years ago (2015-12-04 02:35:14 UTC) #9
Xianzhu
ping...
5 years ago (2015-12-08 18:56:54 UTC) #10
chrishtr
https://codereview.chromium.org/1491193003/diff/60001/third_party/WebKit/Source/core/paint/PaintInvalidationCapableScrollableArea.cpp File third_party/WebKit/Source/core/paint/PaintInvalidationCapableScrollableArea.cpp (right): https://codereview.chromium.org/1491193003/diff/60001/third_party/WebKit/Source/core/paint/PaintInvalidationCapableScrollableArea.cpp#newcode86 third_party/WebKit/Source/core/paint/PaintInvalidationCapableScrollableArea.cpp:86: if (!isOverlay) On 2015/12/04 at 02:35:14, Xianzhu wrote: > ...
5 years ago (2015-12-08 21:17:10 UTC) #11
Xianzhu
https://codereview.chromium.org/1491193003/diff/60001/third_party/WebKit/Source/core/paint/PaintInvalidationCapableScrollableArea.cpp File third_party/WebKit/Source/core/paint/PaintInvalidationCapableScrollableArea.cpp (right): https://codereview.chromium.org/1491193003/diff/60001/third_party/WebKit/Source/core/paint/PaintInvalidationCapableScrollableArea.cpp#newcode86 third_party/WebKit/Source/core/paint/PaintInvalidationCapableScrollableArea.cpp:86: if (!isOverlay) On 2015/12/08 21:17:10, chrishtr wrote: > On ...
5 years ago (2015-12-08 22:22:00 UTC) #12
chrishtr
lgtm
5 years ago (2015-12-08 22:25:19 UTC) #14
commit-bot: I haz the power
CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/patch-status/1491193003/80001 View timeline at https://chromium-cq-status.appspot.com/patch-timeline/1491193003/80001
5 years ago (2015-12-08 22:27:03 UTC) #15
commit-bot: I haz the power
Try jobs failed on following builders: linux_android_rel_ng on tryserver.chromium.linux (JOB_FAILED, http://build.chromium.org/p/tryserver.chromium.linux/builders/linux_android_rel_ng/builds/107228)
5 years ago (2015-12-08 23:53:30 UTC) #17
commit-bot: I haz the power
CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/patch-status/1491193003/80001 View timeline at https://chromium-cq-status.appspot.com/patch-timeline/1491193003/80001
5 years ago (2015-12-08 23:59:31 UTC) #19
commit-bot: I haz the power
Try jobs failed on following builders: linux_chromium_rel_ng on tryserver.chromium.linux (JOB_FAILED, http://build.chromium.org/p/tryserver.chromium.linux/builders/linux_chromium_rel_ng/builds/152743)
5 years ago (2015-12-09 00:43:20 UTC) #21
commit-bot: I haz the power
CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/patch-status/1491193003/100001 View timeline at https://chromium-cq-status.appspot.com/patch-timeline/1491193003/100001
5 years ago (2015-12-09 01:58:38 UTC) #24
commit-bot: I haz the power
Try jobs failed on following builders: mac_chromium_rel_ng on tryserver.chromium.mac (JOB_FAILED, http://build.chromium.org/p/tryserver.chromium.mac/builders/mac_chromium_rel_ng/builds/152376)
5 years ago (2015-12-09 04:23:19 UTC) #26
commit-bot: I haz the power
CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/patch-status/1491193003/120001 View timeline at https://chromium-cq-status.appspot.com/patch-timeline/1491193003/120001
5 years ago (2015-12-09 05:26:28 UTC) #29
commit-bot: I haz the power
Committed patchset #7 (id:120001)
5 years ago (2015-12-09 07:05:19 UTC) #31
commit-bot: I haz the power
Patchset 7 (id:??) landed as https://crrev.com/48e402acbebf2717b8e79b89dba5310d31bf95da Cr-Commit-Position: refs/heads/master@{#363998}
5 years ago (2015-12-09 07:06:19 UTC) #33
dominicc (has gone to gerrit)
A revert of this CL (patchset #7 id:120001) has been created in https://codereview.chromium.org/1513573004/ by dominicc@chromium.org. ...
5 years ago (2015-12-09 07:32:54 UTC) #34
ccameron
On 2015/12/09 at 07:32:54, dominicc wrote: > A revert of this CL (patchset #7 id:120001) ...
5 years ago (2015-12-11 00:02:14 UTC) #35
Xianzhu
On 2015/12/11 00:02:14, ccameron wrote: > On 2015/12/09 at 07:32:54, dominicc wrote: > > A ...
5 years ago (2015-12-11 00:47:40 UTC) #36
Xianzhu
On 2015/12/11 00:02:14, ccameron wrote: > On 2015/12/09 at 07:32:54, dominicc wrote: > > A ...
5 years ago (2015-12-11 19:48:59 UTC) #37
ccameron
On 2015/12/11 at 19:48:59, wangxianzhu wrote: > On 2015/12/11 00:02:14, ccameron wrote: > > On ...
5 years ago (2015-12-11 19:59:58 UTC) #38
Xianzhu
5 years ago (2015-12-11 20:05:16 UTC) #39
Message was sent while issue was closed.
On 2015/12/11 19:59:58, ccameron wrote:
> On 2015/12/11 at 19:48:59, wangxianzhu wrote:
> > On 2015/12/11 00:02:14, ccameron wrote:
> > > On 2015/12/09 at 07:32:54, dominicc wrote:
> > > > A revert of this CL (patchset #7 id:120001) has been created in
> > > https://codereview.chromium.org/1513573004/ by
mailto:dominicc@chromium.org.
> > > > 
> > > > The reason for reverting is: I suspect this may have broken the Oilpan
> > build:
> > > > 
> > > >
> > >
> >
>
https://build.chromium.org/p/chromium.webkit/builders/WebKit%20Mac%20Oilpan/b....
> > > 
> > > This also broke the fade-in and fade-out effect for Mac scrollbars
(bisected
> > to
> > > this patch).
> > 
> > ccamaron@, are there test and bug for the issue?
> 
> I didn't file a bug, because I already saw that this patch was reverted. Since
> no test failed, there is not a test that hits exactly how it failed.
> 
> I suspect that the issue is that Scrollbar::setNeedsPaintInvalidation had no
> effect.

The revert was reverted just after the revert, so we have the bug in ToT.

Powered by Google App Engine
This is Rietveld 408576698