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

Issue 2845613002: Fix the bug that sticky element may not be correctly invalidated due to non-promotion (Closed)

Created:
3 years, 8 months ago by yigu
Modified:
3 years, 7 months ago
Reviewers:
flackr, *chrishtr
CC:
blink-reviews, blink-reviews-paint_chromium.org, chromium-reviews, dshwang
Target Ref:
refs/heads/master
Project:
chromium
Visibility:
Public.

Description

Fix the bug that sticky element may not be correctly invalidated due to non-promotion. When a non composited sticky element is nested in a compositied ancestor which requires repaint on scroll, the sticky element should also be composited to have correct paint invalidation. TEST=compositing/overflow/non-composited-sticky-element-in-main-thread-scrolled-composited-ancestor.html; BUG=698358 CQ_INCLUDE_TRYBOTS=master.tryserver.chromium.linux:linux_layout_tests_slimming_paint_v2 Review-Url: https://codereview.chromium.org/2845613002 Cr-Commit-Position: refs/heads/master@{#472947} Committed: https://chromium.googlesource.com/chromium/src/+/e44021ea6e3e18bc59854b4c8d30999f1fc4379f

Patch Set 1 #

Total comments: 12

Patch Set 2 : Logic update && add layout test #

Total comments: 10

Patch Set 3 : Update tests #

Total comments: 7

Patch Set 4 : Address comments #

Total comments: 2

Patch Set 5 : Remove paint invalidation related logic #

Patch Set 6 : bug fix && nit #

Patch Set 7 : Update compositing trigger #

Patch Set 8 : bug fix #

Total comments: 2

Patch Set 9 : Address comments #

Total comments: 2

Patch Set 10 : Add comments #

Patch Set 11 : Update test due to spv2 failure #

Total comments: 6

Patch Set 12 : Remove promotion logic and set appropriate ingore_lcd_text instead #

Patch Set 13 : Bug fix #

Total comments: 4

Patch Set 14 : Address comments #

Total comments: 4

Patch Set 15 : Address comments #

Messages

Total messages: 64 (30 generated)
yigu
Hi Rob. PTAL at my fix. Thanks!
3 years, 8 months ago (2017-04-26 14:33:24 UTC) #4
flackr
https://codereview.chromium.org/2845613002/diff/1/third_party/WebKit/LayoutTests/compositing/overflow/non-composited-sticky-element-in-main-thread-scrolled-composited-ancestor-expected.html File third_party/WebKit/LayoutTests/compositing/overflow/non-composited-sticky-element-in-main-thread-scrolled-composited-ancestor-expected.html (right): https://codereview.chromium.org/2845613002/diff/1/third_party/WebKit/LayoutTests/compositing/overflow/non-composited-sticky-element-in-main-thread-scrolled-composited-ancestor-expected.html#newcode37 third_party/WebKit/LayoutTests/compositing/overflow/non-composited-sticky-element-in-main-thread-scrolled-composited-ancestor-expected.html:37: window.requestAnimationFrame(function() { There's no need to delay the scroll ...
3 years, 8 months ago (2017-04-26 15:21:01 UTC) #5
yigu
Thanks Rob. I've updated the patch. PTAL. https://codereview.chromium.org/2845613002/diff/1/third_party/WebKit/LayoutTests/compositing/overflow/non-composited-sticky-element-in-main-thread-scrolled-composited-ancestor-expected.html File third_party/WebKit/LayoutTests/compositing/overflow/non-composited-sticky-element-in-main-thread-scrolled-composited-ancestor-expected.html (right): https://codereview.chromium.org/2845613002/diff/1/third_party/WebKit/LayoutTests/compositing/overflow/non-composited-sticky-element-in-main-thread-scrolled-composited-ancestor-expected.html#newcode37 third_party/WebKit/LayoutTests/compositing/overflow/non-composited-sticky-element-in-main-thread-scrolled-composited-ancestor-expected.html:37: window.requestAnimationFrame(function() { ...
3 years, 8 months ago (2017-04-26 21:46:57 UTC) #6
flackr
https://codereview.chromium.org/2845613002/diff/20001/third_party/WebKit/LayoutTests/compositing/overflow/non-composited-sticky-element-in-main-thread-scrolled-composited-ancestor-expected.html File third_party/WebKit/LayoutTests/compositing/overflow/non-composited-sticky-element-in-main-thread-scrolled-composited-ancestor-expected.html (right): https://codereview.chromium.org/2845613002/diff/20001/third_party/WebKit/LayoutTests/compositing/overflow/non-composited-sticky-element-in-main-thread-scrolled-composited-ancestor-expected.html#newcode11 third_party/WebKit/LayoutTests/compositing/overflow/non-composited-sticky-element-in-main-thread-scrolled-composited-ancestor-expected.html:11: position: sticky; Just to avoid testing sticky with sticky, ...
3 years, 7 months ago (2017-04-27 14:22:57 UTC) #8
yigu
Hi Chris. PTAL at this bug fix. Thanks! https://codereview.chromium.org/2845613002/diff/20001/third_party/WebKit/LayoutTests/compositing/overflow/non-composited-sticky-element-in-main-thread-scrolled-composited-ancestor-expected.html File third_party/WebKit/LayoutTests/compositing/overflow/non-composited-sticky-element-in-main-thread-scrolled-composited-ancestor-expected.html (right): https://codereview.chromium.org/2845613002/diff/20001/third_party/WebKit/LayoutTests/compositing/overflow/non-composited-sticky-element-in-main-thread-scrolled-composited-ancestor-expected.html#newcode11 third_party/WebKit/LayoutTests/compositing/overflow/non-composited-sticky-element-in-main-thread-scrolled-composited-ancestor-expected.html:11: position: ...
3 years, 7 months ago (2017-04-27 15:20:11 UTC) #11
flackr
https://codereview.chromium.org/2845613002/diff/40001/third_party/WebKit/LayoutTests/compositing/overflow/non-composited-sticky-element-in-main-thread-scrolled-composited-ancestor.html File third_party/WebKit/LayoutTests/compositing/overflow/non-composited-sticky-element-in-main-thread-scrolled-composited-ancestor.html (right): https://codereview.chromium.org/2845613002/diff/40001/third_party/WebKit/LayoutTests/compositing/overflow/non-composited-sticky-element-in-main-thread-scrolled-composited-ancestor.html#newcode20 third_party/WebKit/LayoutTests/compositing/overflow/non-composited-sticky-element-in-main-thread-scrolled-composited-ancestor.html:20: width: 100%; nit: Shouldn't this be the same width ...
3 years, 7 months ago (2017-04-28 17:14:57 UTC) #12
yigu
Thanks Rob. PTAL. https://codereview.chromium.org/2845613002/diff/40001/third_party/WebKit/LayoutTests/compositing/overflow/non-composited-sticky-element-in-main-thread-scrolled-composited-ancestor.html File third_party/WebKit/LayoutTests/compositing/overflow/non-composited-sticky-element-in-main-thread-scrolled-composited-ancestor.html (right): https://codereview.chromium.org/2845613002/diff/40001/third_party/WebKit/LayoutTests/compositing/overflow/non-composited-sticky-element-in-main-thread-scrolled-composited-ancestor.html#newcode20 third_party/WebKit/LayoutTests/compositing/overflow/non-composited-sticky-element-in-main-thread-scrolled-composited-ancestor.html:20: width: 100%; On 2017/04/28 17:14:57, flackr ...
3 years, 7 months ago (2017-04-28 20:01:29 UTC) #13
chrishtr
https://codereview.chromium.org/2845613002/diff/60001/third_party/WebKit/Source/core/paint/PaintLayer.cpp File third_party/WebKit/Source/core/paint/PaintLayer.cpp (right): https://codereview.chromium.org/2845613002/diff/60001/third_party/WebKit/Source/core/paint/PaintLayer.cpp#newcode841 third_party/WebKit/Source/core/paint/PaintLayer.cpp:841: if (!HasCompositedLayerMapping() && This is not in general the ...
3 years, 7 months ago (2017-04-28 20:11:43 UTC) #14
yigu
Thanks Chris. Please see explanation below. https://codereview.chromium.org/2845613002/diff/60001/third_party/WebKit/Source/core/paint/PaintLayer.cpp File third_party/WebKit/Source/core/paint/PaintLayer.cpp (right): https://codereview.chromium.org/2845613002/diff/60001/third_party/WebKit/Source/core/paint/PaintLayer.cpp#newcode841 third_party/WebKit/Source/core/paint/PaintLayer.cpp:841: if (!HasCompositedLayerMapping() && ...
3 years, 7 months ago (2017-04-28 20:38:56 UTC) #16
chrishtr
This is not just a problem for position:sticky. Changing the compositing trigger in non-composited-sticky-element-in-main-thread-scrolled-composited-ancestor.html to: ...
3 years, 7 months ago (2017-04-29 01:43:00 UTC) #17
yigu
On 2017/04/29 01:43:00, chrishtr wrote: > This is not just a problem for position:sticky. Changing ...
3 years, 7 months ago (2017-05-01 15:35:04 UTC) #18
yigu
On 2017/05/01 15:35:04, yigu wrote: > On 2017/04/29 01:43:00, chrishtr wrote: > > This is ...
3 years, 7 months ago (2017-05-02 17:19:53 UTC) #19
yigu
On 2017/05/02 17:19:53, yigu wrote: > On 2017/05/01 15:35:04, yigu wrote: > > On 2017/04/29 ...
3 years, 7 months ago (2017-05-02 19:51:58 UTC) #20
chrishtr
FYI I haven't forgotten about this CL, just need more time to think it through.
3 years, 7 months ago (2017-05-04 00:59:25 UTC) #21
chrishtr
On 2017/05/02 at 19:51:58, yigu wrote: > On 2017/05/02 17:19:53, yigu wrote: > > On ...
3 years, 7 months ago (2017-05-05 18:16:31 UTC) #22
yigu
On 2017/05/05 18:16:31, chrishtr wrote: > On 2017/05/02 at 19:51:58, yigu wrote: > > On ...
3 years, 7 months ago (2017-05-08 17:50:50 UTC) #24
chrishtr
https://codereview.chromium.org/2845613002/diff/140001/third_party/WebKit/Source/core/layout/compositing/CompositingRequirementsUpdater.cpp File third_party/WebKit/Source/core/layout/compositing/CompositingRequirementsUpdater.cpp (right): https://codereview.chromium.org/2845613002/diff/140001/third_party/WebKit/Source/core/layout/compositing/CompositingRequirementsUpdater.cpp#newcode382 third_party/WebKit/Source/core/layout/compositing/CompositingRequirementsUpdater.cpp:382: reasons_to_composite |= kCompositingReasonScrollDependentPosition; You don't need current_recursion_data.has_composited_non_root_ancestor_. Instead: if ...
3 years, 7 months ago (2017-05-10 17:48:44 UTC) #25
yigu
Thanks Chris for the feedback! Logic updated. https://codereview.chromium.org/2845613002/diff/140001/third_party/WebKit/Source/core/layout/compositing/CompositingRequirementsUpdater.cpp File third_party/WebKit/Source/core/layout/compositing/CompositingRequirementsUpdater.cpp (right): https://codereview.chromium.org/2845613002/diff/140001/third_party/WebKit/Source/core/layout/compositing/CompositingRequirementsUpdater.cpp#newcode382 third_party/WebKit/Source/core/layout/compositing/CompositingRequirementsUpdater.cpp:382: reasons_to_composite |= ...
3 years, 7 months ago (2017-05-10 18:04:13 UTC) #26
chrishtr
https://codereview.chromium.org/2845613002/diff/160001/third_party/WebKit/Source/core/layout/compositing/CompositingRequirementsUpdater.cpp File third_party/WebKit/Source/core/layout/compositing/CompositingRequirementsUpdater.cpp (right): https://codereview.chromium.org/2845613002/diff/160001/third_party/WebKit/Source/core/layout/compositing/CompositingRequirementsUpdater.cpp#newcode379 third_party/WebKit/Source/core/layout/compositing/CompositingRequirementsUpdater.cpp:379: current_recursion_data.compositing_ancestor_->AncestorScrollingLayer() && Please add the comments explaining that this ...
3 years, 7 months ago (2017-05-10 19:29:36 UTC) #27
yigu
Thanks Chris. https://codereview.chromium.org/2845613002/diff/160001/third_party/WebKit/Source/core/layout/compositing/CompositingRequirementsUpdater.cpp File third_party/WebKit/Source/core/layout/compositing/CompositingRequirementsUpdater.cpp (right): https://codereview.chromium.org/2845613002/diff/160001/third_party/WebKit/Source/core/layout/compositing/CompositingRequirementsUpdater.cpp#newcode379 third_party/WebKit/Source/core/layout/compositing/CompositingRequirementsUpdater.cpp:379: current_recursion_data.compositing_ancestor_->AncestorScrollingLayer() && On 2017/05/10 19:29:36, chrishtr wrote: ...
3 years, 7 months ago (2017-05-10 20:01:42 UTC) #28
chrishtr
lgtm
3 years, 7 months ago (2017-05-10 20:13:58 UTC) #29
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/2845613002/180001
3 years, 7 months ago (2017-05-11 23:10:26 UTC) #31
commit-bot: I haz the power
Try jobs failed on following builders: win_chromium_rel_ng on master.tryserver.chromium.win (JOB_FAILED, http://build.chromium.org/p/tryserver.chromium.win/builders/win_chromium_rel_ng/builds/442541)
3 years, 7 months ago (2017-05-12 01:00:49 UTC) #33
yigu
Hi Chris. I've updated the test because the previous one failed spv2. If failed because ...
3 years, 7 months ago (2017-05-12 16:22:37 UTC) #34
chrishtr
lgtm
3 years, 7 months ago (2017-05-12 16:26:27 UTC) #37
flackr
https://codereview.chromium.org/2845613002/diff/200001/third_party/WebKit/Source/core/layout/compositing/CompositingRequirementsUpdater.cpp File third_party/WebKit/Source/core/layout/compositing/CompositingRequirementsUpdater.cpp (right): https://codereview.chromium.org/2845613002/diff/200001/third_party/WebKit/Source/core/layout/compositing/CompositingRequirementsUpdater.cpp#newcode279 third_party/WebKit/Source/core/layout/compositing/CompositingRequirementsUpdater.cpp:279: compositing_reason_finder_.DirectReasons(layer, ignore_lcd_text); I think we should set ignore_lcd_text appropriately ...
3 years, 7 months ago (2017-05-12 18:00:46 UTC) #40
yigu
I've updated the patch to set ignore_lcd_text. PTAL. Thanks! https://codereview.chromium.org/2845613002/diff/200001/third_party/WebKit/Source/core/layout/compositing/CompositingRequirementsUpdater.cpp File third_party/WebKit/Source/core/layout/compositing/CompositingRequirementsUpdater.cpp (right): https://codereview.chromium.org/2845613002/diff/200001/third_party/WebKit/Source/core/layout/compositing/CompositingRequirementsUpdater.cpp#newcode279 third_party/WebKit/Source/core/layout/compositing/CompositingRequirementsUpdater.cpp:279: ...
3 years, 7 months ago (2017-05-17 19:39:06 UTC) #46
flackr
Working around the missing invalidation by promoting feels like we're making an inconsistent decision. I.e. ...
3 years, 7 months ago (2017-05-17 20:18:57 UTC) #47
yigu
PTAL. Thanks. https://codereview.chromium.org/2845613002/diff/240001/third_party/WebKit/Source/core/layout/compositing/CompositingRequirementsUpdater.cpp File third_party/WebKit/Source/core/layout/compositing/CompositingRequirementsUpdater.cpp (right): https://codereview.chromium.org/2845613002/diff/240001/third_party/WebKit/Source/core/layout/compositing/CompositingRequirementsUpdater.cpp#newcode281 third_party/WebKit/Source/core/layout/compositing/CompositingRequirementsUpdater.cpp:281: (layer->SticksToScroller() && On 2017/05/17 20:18:57, flackr wrote: ...
3 years, 7 months ago (2017-05-18 18:00:35 UTC) #51
flackr
LGTM with nits. https://codereview.chromium.org/2845613002/diff/260001/third_party/WebKit/Source/core/layout/compositing/CompositingRequirementsUpdater.cpp File third_party/WebKit/Source/core/layout/compositing/CompositingRequirementsUpdater.cpp (right): https://codereview.chromium.org/2845613002/diff/260001/third_party/WebKit/Source/core/layout/compositing/CompositingRequirementsUpdater.cpp#newcode276 third_party/WebKit/Source/core/layout/compositing/CompositingRequirementsUpdater.cpp:276: layer->SticksToScroller(); Sorry, can you put both ...
3 years, 7 months ago (2017-05-18 18:13:15 UTC) #52
yigu
Thanks! https://codereview.chromium.org/2845613002/diff/260001/third_party/WebKit/Source/core/layout/compositing/CompositingRequirementsUpdater.cpp File third_party/WebKit/Source/core/layout/compositing/CompositingRequirementsUpdater.cpp (right): https://codereview.chromium.org/2845613002/diff/260001/third_party/WebKit/Source/core/layout/compositing/CompositingRequirementsUpdater.cpp#newcode276 third_party/WebKit/Source/core/layout/compositing/CompositingRequirementsUpdater.cpp:276: layer->SticksToScroller(); On 2017/05/18 18:13:14, flackr wrote: > Sorry, ...
3 years, 7 months ago (2017-05-18 19:26:43 UTC) #55
chrishtr
lgtm
3 years, 7 months ago (2017-05-18 21:56:12 UTC) #58
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/2845613002/280001
3 years, 7 months ago (2017-05-18 21:58:58 UTC) #61
commit-bot: I haz the power
3 years, 7 months ago (2017-05-18 22:08:16 UTC) #64
Message was sent while issue was closed.
Committed patchset #15 (id:280001) as
https://chromium.googlesource.com/chromium/src/+/e44021ea6e3e18bc59854b4c8d30...

Powered by Google App Engine
This is Rietveld 408576698