2009-09-25 Simon Fraser <simon.fraser@apple.com>
authorsimon.fraser@apple.com <simon.fraser@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Mon, 28 Sep 2009 16:14:18 +0000 (16:14 +0000)
committersimon.fraser@apple.com <simon.fraser@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Mon, 28 Sep 2009 16:14:18 +0000 (16:14 +0000)
commitdcacba1e4fec78a0cbd9f62f8ea6c2361c14265a
tree6a1af903570c310706ec9af0fb6c0fdb8de3bc44
parent4d535766eeb67cb80317e3859cfc86599506b50d
2009-09-25  Simon Fraser  <simon.fraser@apple.com>

        Reviewed by Darin Adler.

        ASSERTION FAILED: !repaintContainer || repaintContainer == this
        https://bugs.webkit.org/show_bug.cgi?id=29755

        It's possible for RenderObject::container() to return an object that is higher
        in the hierarchy than the repaintContainer that is being used to repaint an
        object. For example, this can happen when running an accelerated opacity
        transition on an element with a position:absolute parent, and a position:absolute child.

        In this case we need to detect when RenderObject::container() will skip over
        repaintContainer, and in that case adjust the coords to shift into repaintContainer's space.

        Test: compositing/repaint/opacity-between-absolute.html

        * rendering/RenderBox.cpp:
        (WebCore::RenderBox::mapLocalToContainer):
        (WebCore::RenderBox::computeRectForRepaint):
        * rendering/RenderInline.cpp:
        (WebCore::RenderInline::computeRectForRepaint):
        * rendering/RenderObject.cpp:
        (WebCore::RenderObject::container):
        * rendering/RenderObject.h:

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@48816 268f45cc-cd09-0410-ab3c-d52691b4dbfc
LayoutTests/ChangeLog
LayoutTests/compositing/repaint/opacity-between-absolute.html [new file with mode: 0644]
LayoutTests/platform/mac/compositing/repaint/opacity-between-absolute-expected.checksum [new file with mode: 0644]
LayoutTests/platform/mac/compositing/repaint/opacity-between-absolute-expected.png [new file with mode: 0644]
LayoutTests/platform/mac/compositing/repaint/opacity-between-absolute-expected.txt [new file with mode: 0644]
WebCore/ChangeLog
WebCore/rendering/RenderBox.cpp
WebCore/rendering/RenderInline.cpp
WebCore/rendering/RenderObject.cpp
WebCore/rendering/RenderObject.h