WebKit Bugzilla
New
Browse
Log In
×
Sign in with GitHub
or
Remember my login
Create Account
·
Forgot Password
Forgotten password account recovery
NEW
94527
Remove RenderView::layoutDelta() now that it's no longer needed
https://bugs.webkit.org/show_bug.cgi?id=94527
Summary
Remove RenderView::layoutDelta() now that it's no longer needed
Eric Seidel (no email)
Reported
2012-08-20 14:27:25 PDT
Look at removing layoutDelta
Attachments
for the EWS
(1.38 KB, patch)
2012-08-20 14:28 PDT
,
Eric Seidel (no email)
no flags
Details
Formatted Diff
Diff
Archive of layout-test-results from gce-cr-linux-04
(489.81 KB, application/zip)
2012-08-20 15:49 PDT
,
WebKit Review Bot
no flags
Details
Another patch for EWS bots
(25.86 KB, patch)
2012-08-20 17:56 PDT
,
Eric Seidel (no email)
no flags
Details
Formatted Diff
Diff
Patch
(25.05 KB, patch)
2012-08-20 18:59 PDT
,
Eric Seidel (no email)
no flags
Details
Formatted Diff
Diff
Archive of layout-test-results from gce-cr-linux-08
(445.24 KB, application/zip)
2012-08-20 20:55 PDT
,
WebKit Review Bot
no flags
Details
Patch
(72.53 KB, patch)
2012-08-21 00:50 PDT
,
Eric Seidel (no email)
hyatt
: review-
hyatt
: commit-queue-
Details
Formatted Diff
Diff
Show Obsolete
(3)
View All
Add attachment
proposed patch, testcase, etc.
Eric Seidel (no email)
Comment 1
2012-08-20 14:28:04 PDT
Created
attachment 159521
[details]
for the EWS
WebKit Review Bot
Comment 2
2012-08-20 14:32:28 PDT
Attachment 159521
[details]
did not pass style-queue: Failed to run "['Tools/Scripts/check-webkit-style', '--diff-files', u'Source/WebCore/ChangeLog', u'Source/WebCor..." exit_code: 1 Source/WebCore/rendering/RenderView.h:123: Should have a space between // and comment [whitespace/comments] [4] Total errors found: 1 in 2 files If any of these errors are false positives, please file a bug against check-webkit-style.
Eric Seidel (no email)
Comment 3
2012-08-20 15:21:16 PDT
On my Mac Lion box, I see 4 changes with this patch: fast/repaint/add-table-overpaint.html - FIXED! fast/repaint/bugzilla-3509.html -Underpainting :( fast/repaint/float-in-new-block-with-layout-delta.html - FIXED! fast/repaint/table-cell-move.html - Overpainting. :( Investigating.
WebKit Review Bot
Comment 4
2012-08-20 15:49:06 PDT
Comment on
attachment 159521
[details]
for the EWS
Attachment 159521
[details]
did not pass chromium-ews (chromium-xvfb): Output:
http://queues.webkit.org/results/13543513
New failing tests: fast/table/border-collapsing/cached-cell-append.html fast/repaint/table-cell-move.html fast/repaint/add-table-overpaint.html fast/repaint/table-extra-bottom-grow.html fast/repaint/bugzilla-3509.html fast/repaint/float-in-new-block-with-layout-delta.html
WebKit Review Bot
Comment 5
2012-08-20 15:49:09 PDT
Created
attachment 159547
[details]
Archive of layout-test-results from gce-cr-linux-04 The attached test failures were seen while running run-webkit-tests on the chromium-ews. Bot: gce-cr-linux-04 Port: <class 'webkitpy.common.config.ports.ChromiumXVFBPort'> Platform: Linux-2.6.39-gcg-201203291735-x86_64-with-Ubuntu-10.04-lucid
Eric Seidel (no email)
Comment 6
2012-08-20 16:41:51 PDT
fast/repaint/bugzilla-3509.html underpaints because margin collapsing happens after child layout. (See RenderBlock#2420) We don't invalidate the child if we move it here. We probably should.
Eric Seidel (no email)
Comment 7
2012-08-20 16:44:13 PDT
I believe this block in RenderBlock::layoutBlockChild should be either marking the child for layout (since we moved it!) or telling it to repaint: // Now we have a final top position. See if it really does end up being different from our estimate. // clearFloatsIfNeeded can also mark the child as needing a layout even though we didn't move. This happens // when collapseMargins dynamically adds overhanging floats because of a child with negative margins. if (logicalTopAfterClear != logicalTopEstimate || child->needsLayout()) { if (child->shrinkToAvoidFloats()) { // The child's width depends on the line width. // When the child shifts to clear an item, its width can // change (because it has more available line width). // So go ahead and mark the item as dirty. child->setChildNeedsLayout(true, MarkOnlyThis); } if (childRenderBlock) { if (!child->avoidsFloats() && childRenderBlock->containsFloats()) childRenderBlock->markAllDescendantsWithFloatsForLayout(); if (!child->needsLayout()) child->markForPaginationRelayoutIfNeeded(); } // Our guess was wrong. Make the child lay itself out again. child->layoutIfNeeded(); } I'm not sure which.
Eric Seidel (no email)
Comment 8
2012-08-20 17:56:22 PDT
Created
attachment 159578
[details]
Another patch for EWS bots
Eric Seidel (no email)
Comment 9
2012-08-20 17:59:22 PDT
I'm not sure my repaint() call is in quite the right place. It's possible that LayoutSize childOffset = child->location() - oldRect.location(); if (childOffset.width() || childOffset.height()) { // If the child moved, we have to repaint it as well as any floating/positioned // descendants. An exception is if we need a layout. In this case, we know we're going to // repaint ourselves (and the child) anyway. if (childHadLayout && !selfNeedsLayout() && child->checkForRepaintDuringLayout()) child->repaintDuringLayoutIfMoved(oldRect); } a few lines lower is supposed to have done the repaint for me. I'll investigate again in the debugger.
Eric Seidel (no email)
Comment 10
2012-08-20 18:59:31 PDT
Created
attachment 159587
[details]
Patch
Eric Seidel (no email)
Comment 11
2012-08-20 19:01:23 PDT
I expect there may be a couple png rebaselines needed. As soon as they're provided by the cr-linux EWS, I'll update the patch. I'd appreciate your review, Señors Hyatt or Mitz.
WebKit Review Bot
Comment 12
2012-08-20 20:55:05 PDT
Comment on
attachment 159587
[details]
Patch
Attachment 159587
[details]
did not pass chromium-ews (chromium-xvfb): Output:
http://queues.webkit.org/results/13539897
New failing tests: fast/repaint/bugzilla-3509.html fast/repaint/table-cell-move.html fast/repaint/add-table-overpaint.html fast/repaint/float-in-new-block-with-layout-delta.html fast/repaint/table-extra-bottom-grow.html
WebKit Review Bot
Comment 13
2012-08-20 20:55:09 PDT
Created
attachment 159609
[details]
Archive of layout-test-results from gce-cr-linux-08 The attached test failures were seen while running run-webkit-tests on the chromium-ews. Bot: gce-cr-linux-08 Port: <class 'webkitpy.common.config.ports.ChromiumXVFBPort'> Platform: Linux-2.6.39-gcg-201203291735-x86_64-with-Ubuntu-10.04-lucid
Eric Seidel (no email)
Comment 14
2012-08-21 00:50:24 PDT
Created
attachment 159635
[details]
Patch
Eric Seidel (no email)
Comment 15
2012-08-21 00:51:44 PDT
This patch should pass the cr-linux EWS. If it doesn't, i'll update it again. :)
Eric Seidel (no email)
Comment 16
2012-08-21 04:36:36 PDT
Looks like the EWS bots believe this is ready for landing, if you agree mitz/hyatt?
Dave Hyatt
Comment 17
2012-08-21 07:45:01 PDT
Comment on
attachment 159635
[details]
Patch There are a few things making me uncomfortable about this (and I really think we want Dan's input here). (1) You have a bunch of results that are repainting tightly now overpainting. These test cases are obviously regressing. (2) I'm not convinced the one multi-pass spot you patched is good enough. We have numerous other places where we do multi-pass layout. Do they all have to be patched? If they do all have to be patched, is that the precise problem layoutDelta was trying to solve? I think we absolutely need to get Dan's input here, since he seems to be the only one who knows what layoutDelta's purpose really is.
Eric Seidel (no email)
Comment 18
2012-08-21 11:15:38 PDT
(In reply to
comment #17
)
> (From update of
attachment 159635
[details]
) > There are a few things making me uncomfortable about this (and I really think we want Dan's input here). > > (1) You have a bunch of results that are repainting tightly now overpainting. These test cases are obviously regressing.
Yup. Several which are obviously progressing as well. I'm happy to work on making them overpaint less, either as part of this patch or another.
> (2) I'm not convinced the one multi-pass spot you patched is good enough. We have numerous other places where we do multi-pass layout. Do they all have to be patched? If they do all have to be patched, is that the precise problem layoutDelta was trying to solve?
Perhaps. I have to trust our testing here. If it's insufficient, we'll have to make it better.
> I think we absolutely need to get Dan's input here, since he seems to be the only one who knows what layoutDelta's purpose really is.
Yup. I've emailed him.
mitz
Comment 19
2012-08-21 18:55:31 PDT
The patch is incorrect. You can see this if you take fast/repaint/bugzilla-3509.html and modify it so that the "im" div starts out with a width of 100px and repaintTest() shrinks it to 50px. Now the newly added call to repaint() can only invalidate the new size of 50×100 at the correct position, but the other 50×100 pixels that are no longer part of the object were not invalidated correctly, because that invalidation happened when the object was at an intermediate position. This is exactly the sort of thing layoutDelta was meant to address.
Eric Seidel (no email)
Comment 20
2012-08-22 12:01:40 PDT
Thank you mitz.
Note
You need to
log in
before you can comment on or make changes to this bug.
Top of Page
Format For Printing
XML
Clone This Bug