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

Issue 2654843004: Fix shouldPaint issue when a composited floating iframe becomes non-self-painting (Closed)

Created:
3 years, 11 months ago by Xianzhu
Modified:
3 years, 11 months ago
Reviewers:
chrishtr
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, szager+layoutwatch_chromium.org, zoltan1
Target Ref:
refs/pending/heads/master
Project:
chromium
Visibility:
Public.

Description

Fix shouldPaint issue when a composited floating iframe becomes non-self-painting Previously we forced selfPainting flags (but let selfPainting() function return false) on all blocks into which a composited (for certain reason) floating iframe overhangs or intrudes. When the iframe became non-self- painting, all these blocks will paint the float. This caused multiple issues, such as duplicated painting, display items with duplicated ids, subsequence caching disorders, etc. This CL contains two parts: 1. Revert crrev.com/413649 which caused the problems; 2. Set PaintLayer::selfPaintingStatusChanged() when self-painting status changes, and check it and clear it during compositing update. If the status changed for a floating layer, update ancestor shouldPaint flags to reflect the new status. BUG=680423 TEST=compositing/iframes/floating-self-painting-frame.html TEST=compositing/iframes/floating-self-painting-frame-expected.html TEST=fast/block/float/float-change-composited-scrolling.html CQ_INCLUDE_TRYBOTS=master.tryserver.chromium.linux:linux_layout_tests_slimming_paint_v2 R=chrishtr@chromium.org Review-Url: https://codereview.chromium.org/2654843004 . Cr-Commit-Position: refs/heads/master@{#446226} Committed: https://chromium.googlesource.com/chromium/src/+/574d079a3f53ebfae2d34cc304fe8613cbcdf593

Patch Set 1 #

Patch Set 2 : -0 #

Total comments: 6

Patch Set 3 : TODO #

Patch Set 4 : Rename setAncestorShouldPaintFloatingObject to updateAncestorShouldPaintFloatingObject #

Messages

Total messages: 28 (16 generated)
Xianzhu
Most of the changes are reverts of crrev.com/413649. The change in CompositingInputsUpdater now correctly handles ...
3 years, 11 months ago (2017-01-25 17:44:28 UTC) #9
chrishtr
https://codereview.chromium.org/2654843004/diff/20001/third_party/WebKit/Source/core/layout/LayoutBlockFlow.cpp File third_party/WebKit/Source/core/layout/LayoutBlockFlow.cpp (right): https://codereview.chromium.org/2654843004/diff/20001/third_party/WebKit/Source/core/layout/LayoutBlockFlow.cpp#newcode4002 third_party/WebKit/Source/core/layout/LayoutBlockFlow.cpp:4002: !floatingObject.layoutObject()->hasSelfPaintingLayer()) { Why do you need this? https://codereview.chromium.org/2654843004/diff/20001/third_party/WebKit/Source/core/paint/BlockFlowPainter.cpp File ...
3 years, 11 months ago (2017-01-25 20:47:57 UTC) #12
chrishtr
Please check that the testcase in crbug.com/610906 still works here. I added a layout test, ...
3 years, 11 months ago (2017-01-25 20:48:39 UTC) #13
Xianzhu
https://codereview.chromium.org/2654843004/diff/20001/third_party/WebKit/Source/core/layout/LayoutBlockFlow.cpp File third_party/WebKit/Source/core/layout/LayoutBlockFlow.cpp (right): https://codereview.chromium.org/2654843004/diff/20001/third_party/WebKit/Source/core/layout/LayoutBlockFlow.cpp#newcode4002 third_party/WebKit/Source/core/layout/LayoutBlockFlow.cpp:4002: !floatingObject.layoutObject()->hasSelfPaintingLayer()) { On 2017/01/25 20:47:57, chrishtr wrote: > Why ...
3 years, 11 months ago (2017-01-25 21:03:25 UTC) #14
Xianzhu
On 2017/01/25 20:48:39, chrishtr wrote: > Please check that the testcase in crbug.com/610906 still works ...
3 years, 11 months ago (2017-01-25 21:04:44 UTC) #15
chrishtr
lgtm
3 years, 11 months ago (2017-01-25 21:08:56 UTC) #17
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/2654843004/60001
3 years, 11 months ago (2017-01-25 21:09:23 UTC) #18
commit-bot: I haz the power
Try jobs failed on following builders: linux_android_rel_ng on master.tryserver.chromium.android (JOB_FAILED, https://build.chromium.org/p/tryserver.chromium.android/builders/linux_android_rel_ng/builds/220367)
3 years, 11 months ago (2017-01-26 00:55:24 UTC) #20
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/2654843004/60001
3 years, 11 months ago (2017-01-26 01:09:00 UTC) #22
commit-bot: I haz the power
Try jobs failed on following builders: linux_android_rel_ng on master.tryserver.chromium.android (JOB_FAILED, https://build.chromium.org/p/tryserver.chromium.android/builders/linux_android_rel_ng/builds/220511)
3 years, 11 months ago (2017-01-26 04:22:41 UTC) #24
Xianzhu
Committed patchset #4 (id:60001) manually as 574d079a3f53ebfae2d34cc304fe8613cbcdf593 (presubmit successful).
3 years, 11 months ago (2017-01-26 04:37:56 UTC) #27
kjellander_chromium
3 years, 11 months ago (2017-01-26 07:52:21 UTC) #28
Message was sent while issue was closed.
A revert of this CL (patchset #4 id:60001) has been created in
https://codereview.chromium.org/2651253003/ by kjellander@chromium.org.

The reason for reverting is: Fails on
https://build.chromium.org/p/chromium.webkit/builders/WebKit%20Win7/builds/49858
Snippet:
20:56:41.220 1868 worker/4
compositing/iframes/floating-self-painting-frame-complex.html output stderr
lines:
20:56:41.220 1868  
[5864:3688:0125/205640.620:601633:ERROR:graphicslayer.cpp(1294)] "LayoutView
#document" Uninvalidated old/new pixels mismatch at 411,8 old:ffc4c4c4
new:fec4c4c4
20:56:41.294 1868 "E:\b\c\b\win_layout\src\out\Release\image_diff.exe --diff
c:\users\chrome~2\appdata\local\temp\tmpous4g4\actual.png
c:\users\chrome~2\appdata\local\temp\tmpous4g4\expected.png
c:\users\chrome~2\appdata\local\temp\tmpous4g4\diff.png" took 0.07s
20:56:41.389 1868 "E:\b\c\b\win_layout\src\out\Release\image_diff.exe --diff
c:\users\chrome~2\appdata\local\temp\tmpaddjzm\actual.png
c:\users\chrome~2\appdata\local\temp\tmpaddjzm\expected.png
c:\users\chrome~2\appdata\local\temp\tmpaddjzm\diff.png" took 0.09s
20:56:41.393 3184 [6230/47861]
compositing/iframes/floating-self-painting-frame-complex.html failed
unexpectedly (reference mismatch)
20:56:41.392 1868 worker/4
compositing/iframes/floating-self-painting-frame-complex.html failed:
20:56:41.392 1868 worker/4  reference mismatch.

Powered by Google App Engine
This is Rietveld 408576698