DescriptionRemove LayoutBlockFlow overflow invalidation
"Overflow" invalidation was to invalidate changed lines in a
LayoutBlockFlow with inline children. Upper and lower bounds of
changed lines are recorded during layout. The concept was not
properly named, and the implementation is complex.
Now switch to LayoutInline/LayoutText invalidation. Set the owning
inline LayoutObject shouldDoFullPaintInvalidation when a InlineBox
is deleted or changed.
This also improves performance during inline layout for paint
invalidation when many InlineBoxes are deleted.
Under-invalidation checking didn't find any error in layout tests (which
would be pixel mismatches or crashes).
With this patch, we may invalidate bigger rect in case that not all
InlineBoxes changed in a big LayutInline or LayoutText. Previously the
paint invalidation rects cover the changed InlineBoxes only; now
the rects cover the whole LayoutInline and LayoutText containing the
changed InlineBoxes. The case normally happens when some intruding
floating objects change geometry which is not very common.
In other cases we may invalidate smaller rects because we no longer
invalidate the whole width of the LayoutBlockFlow.
We may invalidate more rects than before.
BUG=619630
Committed: https://crrev.com/0e20bd123062a6bc463391c8970b24936983c466
Cr-Commit-Position: refs/heads/master@{#402292}
Patch Set 1 #Patch Set 2 : - #Patch Set 3 : Rebase #Patch Set 4 : Remove LayoutBlockFlow overflow invalidation #Patch Set 5 : Rebase on https://codereview.chromium.org/2092953002 #Patch Set 6 : Rebase #Patch Set 7 : Rebase #Patch Set 8 : Fix InlineTextBoxTest #
Total comments: 5
Patch Set 9 : NeedsRebaseline #Patch Set 10 : NeedsRebaseline #Messages
Total messages: 28 (15 generated)
|