Changeset 140593 in webkit


Ignore:
Timestamp:
Jan 23, 2013 2:24:49 PM (11 years ago)
Author:
wangxianzhu@chromium.org
Message:

Should update compositing state when an out-of-view fixed position element becomes in-view
https://bugs.webkit.org/show_bug.cgi?id=107410

Reviewed by Simon Fraser.

Source/WebCore:

When a non-compositing page contains some not-composited fixed position element because of bounds out-of-view, when the element changes position and RenderLayerCompositor::updateCompositingLayers() is called, the function may return early because of "if (!m_reevaluateCompositingAfterLayout && !m_compositing)" without updating the compositing layers.

Set m_reevaluateCompositingAfterLayout when a fixed position element is not composited because of bounds out-of-view.

Test: compositing/layer-creation/fixed-position-change-out-of-view-in-view.html

  • rendering/RenderLayerCompositor.cpp:

(WebCore::RenderLayerCompositor::requiresCompositingForPosition):

LayoutTests:

Tests if compositing status is properly updated when fixed position elements change from out-of-view to in-view and back.

  • compositing/layer-creation/fixed-position-change-out-of-view-in-view-expected.txt: Added.
  • compositing/layer-creation/fixed-position-change-out-of-view-in-view.html: Added.
Location:
trunk
Files:
2 added
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/LayoutTests/ChangeLog

    r140585 r140593  
     12013-01-23  Xianzhu Wang  <wangxianzhu@chromium.org>
     2
     3        Should update compositing state when an out-of-view fixed position element becomes in-view
     4        https://bugs.webkit.org/show_bug.cgi?id=107410
     5
     6        Reviewed by Simon Fraser.
     7
     8        Tests if compositing status is properly updated when fixed position elements change from out-of-view to in-view and back.
     9
     10        * compositing/layer-creation/fixed-position-change-out-of-view-in-view-expected.txt: Added.
     11        * compositing/layer-creation/fixed-position-change-out-of-view-in-view.html: Added.
     12
    1132013-01-23  Erik Arvidsson  <arv@chromium.org>
    214
  • trunk/Source/WebCore/ChangeLog

    r140590 r140593  
     12013-01-23  Xianzhu Wang  <wangxianzhu@chromium.org>
     2
     3        Should update compositing state when an out-of-view fixed position element becomes in-view
     4        https://bugs.webkit.org/show_bug.cgi?id=107410
     5
     6        Reviewed by Simon Fraser.
     7
     8        When a non-compositing page contains some not-composited fixed position element because of bounds out-of-view, when the element changes position and RenderLayerCompositor::updateCompositingLayers() is called, the function may return early because of "if (!m_reevaluateCompositingAfterLayout && !m_compositing)" without updating the compositing layers.
     9
     10        Set m_reevaluateCompositingAfterLayout when a fixed position element is not composited because of bounds out-of-view.
     11
     12        Test: compositing/layer-creation/fixed-position-change-out-of-view-in-view.html
     13
     14        * rendering/RenderLayerCompositor.cpp:
     15        (WebCore::RenderLayerCompositor::requiresCompositingForPosition):
     16
    1172013-01-23  Tony Chang  <tony@chromium.org>
    218
  • trunk/Source/WebCore/rendering/RenderLayerCompositor.cpp

    r140229 r140593  
    20732073            if (viewportConstrainedNotCompositedReason)
    20742074                *viewportConstrainedNotCompositedReason = RenderLayer::NotCompositedForBoundsOutOfView;
     2075            // Reevaluate compositing after layout because the layer bounds may change and become composited.
     2076            m_reevaluateCompositingAfterLayout = true;
    20752077            return false;
    20762078        }
Note: See TracChangeset for help on using the changeset viewer.