Changeset 172183 in webkit


Ignore:
Timestamp:
Aug 6, 2014, 4:05:34 PM (11 years ago)
Author:
Simon Fraser
Message:

REGRESSION (r168119): Album flipping animation doesn’t work
https://bugs.webkit.org/show_bug.cgi?id=132801
Source/WebCore:

<rdar://problem/16878497>, <rdar://problem/17908085>

Reviewed by Dean Jackson.

In r168119 I avoided creating backing store for backface-visibility:hidden unless
some ancestor was 3d-transformed. However, when starting transitions or animations
that apply transforms, we don't do a layout, and therefore don't update the RenderLayer
flags that mark an ancestor as having a transform. This broke various content which
used backface-visibility:hidden for "flip" animations.

Make a low-risk fix that looks for the pattern of CSS properties used for flipping,
making a compositing layer for backface-visibility:hidden if the stacking context element
has transform-style: preserve-3d.

Test: compositing/backing/backface-visibility-flip.html

  • rendering/RenderLayerCompositor.cpp:

(WebCore::RenderLayerCompositor::requiresCompositingForBackfaceVisibility):

LayoutTests:

Reviewed by Dean Jackson.

Test that starts a transform animation and dumps layers.

  • compositing/backing/backface-visibility-flip-expected.txt: Added.
  • compositing/backing/backface-visibility-flip.html: Added.
Location:
trunk
Files:
2 added
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/LayoutTests/ChangeLog

    r172160 r172183  
     12014-08-06  Simon Fraser  <simon.fraser@apple.com>
     2
     3        REGRESSION (r168119): Album flipping animation doesn’t work
     4        https://bugs.webkit.org/show_bug.cgi?id=132801
     5
     6        Reviewed by Dean Jackson.
     7       
     8        Test that starts a transform animation and dumps layers.
     9
     10        * compositing/backing/backface-visibility-flip-expected.txt: Added.
     11        * compositing/backing/backface-visibility-flip.html: Added.
     12
    1132014-08-06  Brent Fulgham  <bfulgham@apple.com>
    214
  • trunk/Source/WebCore/ChangeLog

    r172182 r172183  
     12014-08-06  Simon Fraser  <simon.fraser@apple.com>
     2
     3        REGRESSION (r168119): Album flipping animation doesn’t work
     4        https://bugs.webkit.org/show_bug.cgi?id=132801
     5        <rdar://problem/16878497>, <rdar://problem/17908085>
     6
     7        Reviewed by Dean Jackson.
     8       
     9        In r168119 I avoided creating backing store for backface-visibility:hidden unless
     10        some ancestor was 3d-transformed. However, when starting transitions or animations
     11        that apply transforms, we don't do a layout, and therefore don't update the RenderLayer
     12        flags that mark an ancestor as having a transform. This broke various content which
     13        used backface-visibility:hidden for "flip" animations.
     14       
     15        Make a low-risk fix that looks for the pattern of CSS properties used for flipping,
     16        making a compositing layer for backface-visibility:hidden if the stacking context element
     17        has transform-style: preserve-3d.
     18
     19        Test: compositing/backing/backface-visibility-flip.html
     20
     21        * rendering/RenderLayerCompositor.cpp:
     22        (WebCore::RenderLayerCompositor::requiresCompositingForBackfaceVisibility):
     23
    1242014-08-06  Brent Fulgham  <bfulgham@apple.com>
    225
  • trunk/Source/WebCore/rendering/RenderLayerCompositor.cpp

    r172179 r172183  
    23932393        return false;
    23942394
    2395     return renderer.style().backfaceVisibility() == BackfaceVisibilityHidden && renderer.layer()->has3DTransformedAncestor();
     2395    if (renderer.style().backfaceVisibility() != BackfaceVisibilityHidden)
     2396        return false;
     2397       
     2398    if (renderer.layer()->has3DTransformedAncestor())
     2399        return true;
     2400   
     2401    // FIXME: workaround for webkit.org/b/132801
     2402    RenderLayer* stackingContext = renderer.layer()->stackingContainer();
     2403    if (stackingContext && stackingContext->renderer().style().transformStyle3D() == TransformStyle3DPreserve3D)
     2404        return true;
     2405
     2406    return false;
    23962407}
    23972408
Note: See TracChangeset for help on using the changeset viewer.