Changeset 149084 in webkit


Ignore:
Timestamp:
Apr 24, 2013, 6:27:20 PM (12 years ago)
Author:
Simon Fraser
Message:

Garbage at the top of http://www.technologyreview.com after scrolling
https://bugs.webkit.org/show_bug.cgi?id=114825

Source/WebCore:

Reviewed by Tim Horton.

Garbage pixels are caused by GraphicsLayerCA setting a layer to be opaque,
but then not painting anything into it. On this page, the element is
toggled to be visibility:hidden on scrolling, but RenderLayer::backgroundIsKnownToBeOpaqueInRect()
failed to consider that as something that can cause backgrounds not to be opaque.

For the bug to happen, some subtle interactions with r142012 come into play
for the layer to remain visible, hence the slightly complex testcase.

Test: compositing/contents-opaque/visibility-hidden.html

  • rendering/RenderLayer.cpp:

(WebCore::RenderLayer::backgroundIsKnownToBeOpaqueInRect):

LayoutTests:

Reviewed by Tim Horton.

Test that sets visibility:hidden on an element with some complex
configuration of layer children, and dumps the layer tree to check
that the contents are not marked as opaque.

  • compositing/contents-opaque/visibility-hidden-expected.txt: Added.
  • compositing/contents-opaque/visibility-hidden.html: Added.
Location:
trunk
Files:
2 added
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/LayoutTests/ChangeLog

    r149075 r149084  
     12013-04-24  Simon Fraser  <simon.fraser@apple.com>
     2
     3        Garbage at the top of http://www.technologyreview.com after scrolling
     4        https://bugs.webkit.org/show_bug.cgi?id=114825
     5
     6        Reviewed by Tim Horton.
     7       
     8        Test that sets visibility:hidden on an element with some complex
     9        configuration of layer children, and dumps the layer tree to check
     10        that the contents are not marked as opaque.
     11
     12        * compositing/contents-opaque/visibility-hidden-expected.txt: Added.
     13        * compositing/contents-opaque/visibility-hidden.html: Added.
     14
    1152013-04-24  David Kilzer  <ddkilzer@apple.com>
    216
  • trunk/Source/WebCore/ChangeLog

    r149083 r149084  
     12013-04-24  Simon Fraser  <simon.fraser@apple.com>
     2
     3        Garbage at the top of http://www.technologyreview.com after scrolling
     4        https://bugs.webkit.org/show_bug.cgi?id=114825
     5
     6        Reviewed by Tim Horton.
     7
     8        Garbage pixels are caused by GraphicsLayerCA setting a layer to be opaque,
     9        but then not painting anything into it. On this page, the element is
     10        toggled to be visibility:hidden on scrolling, but RenderLayer::backgroundIsKnownToBeOpaqueInRect()
     11        failed to consider that as something that can cause backgrounds not to be opaque.
     12       
     13        For the bug to happen, some subtle interactions with r142012 come into play
     14        for the layer to remain visible, hence the slightly complex testcase.
     15       
     16        Test: compositing/contents-opaque/visibility-hidden.html
     17
     18        * rendering/RenderLayer.cpp:
     19        (WebCore::RenderLayer::backgroundIsKnownToBeOpaqueInRect):
     20
    1212013-04-24  Simon Fraser  <simon.fraser@apple.com>
    222
  • trunk/Source/WebCore/rendering/RenderLayer.cpp

    r149066 r149084  
    55655565        return false;
    55665566
     5567    ASSERT(!m_visibleContentStatusDirty);
     5568    if (!hasVisibleContent())
     5569        return false;
     5570
    55675571#if ENABLE(CSS_FILTERS)
    55685572    if (paintsWithFilters() && renderer()->style()->filter().hasFilterThatAffectsOpacity())
Note: See TracChangeset for help on using the changeset viewer.