New issue
Advanced search Search tips

Issue 607989 link

Starred by 1 user

Issue metadata

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

Blocking:
issue 436198



Sign in to add a comment

Under invalidation of descendants under separate self-painting layers when ancestor filter changes

Project Member Reported by wangxianzhu@chromium.org, Apr 29 2016

Issue description

Slightly modified test case from fast/repaint/filter-invalidation-after-display.html:

<!DOCTYPE html>
<style>
.green {
  background-color: green;
}
.box {
  width: 200px;
  height: 200px;
  -webkit-filter: drop-shadow(350px 50px 10px green);
/*  position: absolute;
  left: 300px;*/
}
.drop-shadowed {
  -webkit-filter: drop-shadow(600px 100px 10px red);
}
</style>
<!--
    This test checks that we correctly invalidate filters when they are removed.
    There should be no red below.
-->
<div class="green box" id="box">
  <div style="backface-visibility: hidden; position: absolute; top: 400px; left: 600px; width: 100px; height: 100px; background-color: blue"></div>
</div>
<script src="resources/text-based-repaint.js"></script>
<script>
function repaintTest() {
    var box = document.getElementById('box');
    box.classList.toggle('drop-shadowed');
}
window.onload = runRepaintTest;
</script>

We can make filter a special case when calculating visual overflow rect to include descendant visual overflow including self-painting descendants (but not composited descendants).
 
Blocking: 436198
"backface-visibility: hidden" should be removed from the test case to reproduce under-invalidation bug.
Summary: Under invalidation of descendants under separate self-painting layers when ancestor filter changes (was: Paint invalidation doesn't cover descendants with self-painting-layers when filter changes)
It's not necessary to include whole filter visual effect into the object having filter, just like the way we deal with opacity. The actual issue is that we don't inflate the paint invalidation rect descendants under separate self-painting layers for filter.
Project Member

Comment 4 by bugdroid1@chromium.org, May 4 2016

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

commit 05fb4239a14a319f2a76de26b1f5a5413bb71ed1
Author: wangxianzhu <wangxianzhu@chromium.org>
Date: Wed May 04 16:06:53 2016

Ensure filter and reflection outsets are applied on paint invalidation rect

Previously filter and reflection outsets are applied in
mapToVisualRectInAncestorSpace along the container chain. This missed
filters/reflections between the object and its container.

BUG= 607989 
TEST=fast/repaint/filter-invalidation-positioned-child.html
TEST=fast/repaint/reflection-invalidation-positioned-child.html

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

[add] https://crrev.com/05fb4239a14a319f2a76de26b1f5a5413bb71ed1/third_party/WebKit/LayoutTests/fast/repaint/filter-invalidation-positioned-child-expected.txt
[add] https://crrev.com/05fb4239a14a319f2a76de26b1f5a5413bb71ed1/third_party/WebKit/LayoutTests/fast/repaint/filter-invalidation-positioned-child.html
[add] https://crrev.com/05fb4239a14a319f2a76de26b1f5a5413bb71ed1/third_party/WebKit/LayoutTests/fast/repaint/reflection-invalidation-positioned-child-expected.txt
[add] https://crrev.com/05fb4239a14a319f2a76de26b1f5a5413bb71ed1/third_party/WebKit/LayoutTests/fast/repaint/reflection-invalidation-positioned-child.html
[modify] https://crrev.com/05fb4239a14a319f2a76de26b1f5a5413bb71ed1/third_party/WebKit/Source/core/layout/LayoutBox.cpp
[modify] https://crrev.com/05fb4239a14a319f2a76de26b1f5a5413bb71ed1/third_party/WebKit/Source/core/layout/LayoutBox.h
[modify] https://crrev.com/05fb4239a14a319f2a76de26b1f5a5413bb71ed1/third_party/WebKit/Source/core/layout/LayoutInline.cpp
[modify] https://crrev.com/05fb4239a14a319f2a76de26b1f5a5413bb71ed1/third_party/WebKit/Source/core/layout/LayoutObject.cpp
[modify] https://crrev.com/05fb4239a14a319f2a76de26b1f5a5413bb71ed1/third_party/WebKit/Source/core/layout/LayoutObject.h
[modify] https://crrev.com/05fb4239a14a319f2a76de26b1f5a5413bb71ed1/third_party/WebKit/Source/core/style/ComputedStyle.cpp

Status: Fixed (was: Assigned)

Sign in to add a comment