New issue
Advanced search Search tips
Note: Color blocks (like or ) mean that a user may not be available. Tooltip shows the reason.

Issue 619263 link

Starred by 1 user

Issue metadata

Status: Fixed
Owner:
Closed: Jun 2016
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: All
Pri: 2
Type: Bug



Sign in to add a comment

Paint invalidation flag of multicol spanner is marked in wrong hierarchy

Project Member Reported by wangxianzhu@chromium.org, Jun 11 2016

Issue description

Open the attached test case in content_shell or chrome with dcheck enabled, and it will crash:

#3 0x0000053bd600 blink::LayoutObject::assertClearedPaintInvalidationFlags()
#4 0x0000053ba608 blink::LayoutObject::assertSubtreeClearedPaintInvalidationFlags()
#5 0x0000053abd05 blink::FrameView::invalidateTreeIfNeeded()
#6 0x0000053b34ec blink::FrameView::invalidateTreeIfNeededRecursiveInternal()
#7 0x0000053b1f2b blink::FrameView::invalidateTreeIfNeededRecursive()

This is because when the spanner's style changes, we mark ancestors of the spanner for childShouldCheckForPaintInvalidation through the natural ancestor chain. We should go through the placeholder instead.
 
column-span.html
243 bytes View Download
Project Member

Comment 1 by bugdroid1@chromium.org, Jun 14 2016

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/9c97b32bc9b60b0ec26da4954895ad7eb38d5e79

commit 9c97b32bc9b60b0ec26da4954895ad7eb38d5e79
Author: wangxianzhu <wangxianzhu@chromium.org>
Date: Tue Jun 14 00:22:01 2016

LayoutObject::paintInvalidationParent() to fix multicol spanner invalidation

This was LayoutObject::parentCrossingFrameBoundaries(). Renamed and
added special rule for column spanner, and used for both finding
painting layer and marking ancestor chain for paint invalidation.

Previously we marked ancestor chain for paint invalidation through
the normal tree order, causing the placeholder not marked for
paint invalidation and missing walking to the spanner. If dcheck
was enabled, it would crash because the paint invalidation flags
of the spanner is not cleared.

BUG= 619263 
TEST=fast/repaint/multicol-spanner-background-color.html

Review-Url: https://codereview.chromium.org/2063543002
Cr-Commit-Position: refs/heads/master@{#399614}

[add] https://crrev.com/9c97b32bc9b60b0ec26da4954895ad7eb38d5e79/third_party/WebKit/LayoutTests/fast/repaint/multicol-spanner-background-color-expected.html
[add] https://crrev.com/9c97b32bc9b60b0ec26da4954895ad7eb38d5e79/third_party/WebKit/LayoutTests/fast/repaint/multicol-spanner-background-color.html
[modify] https://crrev.com/9c97b32bc9b60b0ec26da4954895ad7eb38d5e79/third_party/WebKit/Source/core/layout/LayoutObject.cpp
[modify] https://crrev.com/9c97b32bc9b60b0ec26da4954895ad7eb38d5e79/third_party/WebKit/Source/core/layout/LayoutObject.h
[modify] https://crrev.com/9c97b32bc9b60b0ec26da4954895ad7eb38d5e79/third_party/WebKit/Source/core/layout/VisualRectMappingTest.cpp

Project Member

Comment 2 by bugdroid1@chromium.org, Jun 15 2016

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/9c97b32bc9b60b0ec26da4954895ad7eb38d5e79

commit 9c97b32bc9b60b0ec26da4954895ad7eb38d5e79
Author: wangxianzhu <wangxianzhu@chromium.org>
Date: Tue Jun 14 00:22:01 2016

LayoutObject::paintInvalidationParent() to fix multicol spanner invalidation

This was LayoutObject::parentCrossingFrameBoundaries(). Renamed and
added special rule for column spanner, and used for both finding
painting layer and marking ancestor chain for paint invalidation.

Previously we marked ancestor chain for paint invalidation through
the normal tree order, causing the placeholder not marked for
paint invalidation and missing walking to the spanner. If dcheck
was enabled, it would crash because the paint invalidation flags
of the spanner is not cleared.

BUG= 619263 
TEST=fast/repaint/multicol-spanner-background-color.html

Review-Url: https://codereview.chromium.org/2063543002
Cr-Commit-Position: refs/heads/master@{#399614}

[add] https://crrev.com/9c97b32bc9b60b0ec26da4954895ad7eb38d5e79/third_party/WebKit/LayoutTests/fast/repaint/multicol-spanner-background-color-expected.html
[add] https://crrev.com/9c97b32bc9b60b0ec26da4954895ad7eb38d5e79/third_party/WebKit/LayoutTests/fast/repaint/multicol-spanner-background-color.html
[modify] https://crrev.com/9c97b32bc9b60b0ec26da4954895ad7eb38d5e79/third_party/WebKit/Source/core/layout/LayoutObject.cpp
[modify] https://crrev.com/9c97b32bc9b60b0ec26da4954895ad7eb38d5e79/third_party/WebKit/Source/core/layout/LayoutObject.h
[modify] https://crrev.com/9c97b32bc9b60b0ec26da4954895ad7eb38d5e79/third_party/WebKit/Source/core/layout/VisualRectMappingTest.cpp

Status: Fixed (was: Started)

Sign in to add a comment