Title: [86680] trunk
Revision
86680
Author
[email protected]
Date
2011-05-17 10:16:26 -0700 (Tue, 17 May 2011)

Log Message

2011-05-17  Sam Magnuson  <[email protected]>

        Reviewed by Kenneth Rohde Christiansen.

        [Qt] Node that have both an opacity and a transform animation on them seem not to fire.
        https://bugs.webkit.org/show_bug.cgi?id=40841

        Test: compositing/animation/busy-indicator.html

        * platform/graphics/qt/GraphicsLayerQt.cpp:
        (WebCore::GraphicsLayerQtImpl::recache):
        (WebCore::GraphicsLayerQtImpl::flushChanges):
        (WebCore::GraphicsLayerQt::setContentsToImage):
        (WebCore::TransformAnimationQt::getAnimatedProperty):
        (WebCore::OpacityAnimationQt::getAnimatedProperty):
        (WebCore::GraphicsLayerQt::addAnimation):
2011-05-17  Sam Magnuson  <[email protected]>

        Reviewed by Kenneth Rohde Christiansen.

        [Qt] Node that have both an opacity and a transform animation on them seem not to fire.
        https://bugs.webkit.org/show_bug.cgi?id=40841

        * compositing/animation/busy-indicator-no.png: Added.
        * compositing/animation/busy-indicator.html: Added.
        * compositing/animation/busy-indicator.png: Added.
        * compositing/animation/busy-indicator-expected.txt: Added.

Modified Paths

Added Paths

Diff

Modified: trunk/LayoutTests/ChangeLog (86679 => 86680)


--- trunk/LayoutTests/ChangeLog	2011-05-17 17:13:03 UTC (rev 86679)
+++ trunk/LayoutTests/ChangeLog	2011-05-17 17:16:26 UTC (rev 86680)
@@ -1,3 +1,15 @@
+2011-05-17  Sam Magnuson  <[email protected]>
+
+        Reviewed by Kenneth Rohde Christiansen.
+
+        [Qt] Node that have both an opacity and a transform animation on them seem not to fire.
+        https://bugs.webkit.org/show_bug.cgi?id=40841
+
+        * compositing/animation/busy-indicator-no.png: Added.
+        * compositing/animation/busy-indicator.html: Added.
+        * compositing/animation/busy-indicator.png: Added.
+        * compositing/animation/busy-indicator-expected.txt: Added.
+
 2011-05-17  Andreas Kling  <[email protected]>
 
         Bot-matching rebaseline after r86675.

Added: trunk/LayoutTests/compositing/animation/busy-indicator-expected.txt (0 => 86680)


--- trunk/LayoutTests/compositing/animation/busy-indicator-expected.txt	                        (rev 0)
+++ trunk/LayoutTests/compositing/animation/busy-indicator-expected.txt	2011-05-17 17:16:26 UTC (rev 86680)
@@ -0,0 +1,19 @@
+layer at (0,0) size 800x600
+  RenderView at (0,0) size 800x600
+layer at (0,0) size 800x8
+  RenderBlock {HTML} at (0,0) size 800x8
+    RenderBody {BODY} at (8,8) size 784x0
+layer at (8,8) size 300x100
+  RenderBlock (positioned) {DIV} at (8,8) size 300x100 [bgcolor=#00FF00]
+layer at (108,38) size 94x30
+  RenderBlock (positioned) {DIV} at (100,30) size 94x30
+layer at (108,38) size 18x30
+  RenderBlock (positioned) {DIV} at (0,0) size 18x30
+layer at (127,38) size 18x30
+  RenderBlock (positioned) {DIV} at (19,0) size 18x30
+layer at (146,38) size 18x30
+  RenderBlock (positioned) {DIV} at (38,0) size 18x30
+layer at (165,38) size 18x30
+  RenderBlock (positioned) {DIV} at (57,0) size 18x30
+layer at (184,38) size 18x30
+  RenderBlock (positioned) {DIV} at (76,0) size 18x30

Added: trunk/LayoutTests/compositing/animation/busy-indicator-no.png


(Binary files differ)
Property changes on: trunk/LayoutTests/compositing/animation/busy-indicator-no.png ___________________________________________________________________

Added: svn:mime-type

Added: trunk/LayoutTests/compositing/animation/busy-indicator.html (0 => 86680)


--- trunk/LayoutTests/compositing/animation/busy-indicator.html	                        (rev 0)
+++ trunk/LayoutTests/compositing/animation/busy-indicator.html	2011-05-17 17:16:26 UTC (rev 86680)
@@ -0,0 +1,93 @@
+<!DOCTYPE html>
+<html>
+    <head>
+        <title>Busy!</title>
+        <style type="text/css" media="screen">
+             .app-startup #app-loading {
+               width: 300px;
+               height: 100px;
+               position: absolute;
+               background: #00FF00;
+             }
+             .app-startup #app-loading-progress {
+               position: absolute;
+               top: 30px;
+               left: 100px;
+             }
+            .progress-indicator {
+               width: 94px;
+               height: 30px;
+               background: url(busy-indicator-no.png) no-repeat center center;
+               display: none;
+             }
+             .progress-indicator > div {
+               position: absolute;
+               background: url(busy-indicator.png) no-repeat;
+               width: 18px;
+               height: 30px;
+               opacity: 0;
+               -webkit-animation-duration: 2.4s;
+               -webkit-animation-iteration-count: infinite;
+             }
+             .progress-indicator.visible .progress-indicator0 {
+               left: 0px;
+               -webkit-animation-delay: 0.4s;
+             }
+             .progress-indicator.visible .progress-indicator1 {
+               left: 19px;
+               -webkit-animation-delay: 0.8s;
+             }
+             .progress-indicator.visible .progress-indicator2 {
+               left: 38px;
+               -webkit-animation-delay: 1.2s;
+             }
+             .progress-indicator.visible .progress-indicator3 {
+               left: 57px;
+               -webkit-animation-delay: 1.6s;
+             }
+             .progress-indicator.visible .progress-indicator4 {
+               left: 76px;
+               -webkit-animation-delay: 2s;
+             }
+             .progress-indicator.visible { display: block; }
+             .progress-indicator.visible > div { -webkit-animation-play-state: running; }
+
+             @-webkit-keyframes spinner {
+                 0% {
+                     -webkit-transform: scale(0.7);
+                     opacity: 1;
+                 }
+                 10% {
+                     -webkit-transform: scale(1);
+                     opacity: 1;
+                 }
+                 25% {
+                     -webkit-transform: scale(0.7);
+                     opacity: 1;
+                 }
+                 30% {
+                     -webkit-transform: scale(0.7);
+                     opacity: 0;
+                 }
+                 100% {
+                     -webkit-transform: scale(0.7);
+                     opacity: 0;
+                 }
+             }
+             .progress-indicator.visible > div {
+                 -webkit-animation-name: spinner;
+             }
+    </style>
+    </head>
+    <body class="app-startup">
+        <div id="app-loading">
+            <div id="app-loading-progress" class="progress-indicator visible">
+                <div class="progress-indicator0"></div>
+                <div class="progress-indicator1"></div>
+                <div class="progress-indicator2"></div>
+                <div class="progress-indicator3"></div>
+                <div class="progress-indicator4"></div>
+            </div>
+        </div>
+    </body>
+</html>

Added: trunk/LayoutTests/compositing/animation/busy-indicator.png


(Binary files differ)
Property changes on: trunk/LayoutTests/compositing/animation/busy-indicator.png ___________________________________________________________________

Added: svn:mime-type

Modified: trunk/Source/WebCore/ChangeLog (86679 => 86680)


--- trunk/Source/WebCore/ChangeLog	2011-05-17 17:13:03 UTC (rev 86679)
+++ trunk/Source/WebCore/ChangeLog	2011-05-17 17:16:26 UTC (rev 86680)
@@ -1,3 +1,20 @@
+2011-05-17  Sam Magnuson  <[email protected]>
+
+        Reviewed by Kenneth Rohde Christiansen.
+
+        [Qt] Node that have both an opacity and a transform animation on them seem not to fire.
+        https://bugs.webkit.org/show_bug.cgi?id=40841
+
+        Test: compositing/animation/busy-indicator.html
+
+        * platform/graphics/qt/GraphicsLayerQt.cpp:
+        (WebCore::GraphicsLayerQtImpl::recache):
+        (WebCore::GraphicsLayerQtImpl::flushChanges):
+        (WebCore::GraphicsLayerQt::setContentsToImage):
+        (WebCore::TransformAnimationQt::getAnimatedProperty):
+        (WebCore::OpacityAnimationQt::getAnimatedProperty):
+        (WebCore::GraphicsLayerQt::addAnimation):
+
 2011-05-17  Grace Kloba  <[email protected]>
 
         Reviewed by Kenneth Russell.

Modified: trunk/Source/WebCore/platform/graphics/qt/GraphicsLayerQt.cpp (86679 => 86680)


--- trunk/Source/WebCore/platform/graphics/qt/GraphicsLayerQt.cpp	2011-05-17 17:13:03 UTC (rev 86679)
+++ trunk/Source/WebCore/platform/graphics/qt/GraphicsLayerQt.cpp	2011-05-17 17:16:26 UTC (rev 86680)
@@ -792,7 +792,7 @@
         case HTMLContentType:
             if (m_pendingContent.contentType != m_currentContent.contentType)
                 update();
-            if (!m_state.drawsContent && m_layer->drawsContent())
+            else if (!m_state.drawsContent && m_layer->drawsContent())
                 update();
 
             setFlag(ItemHasNoContents, !m_layer->drawsContent());
@@ -1395,6 +1395,9 @@
     {
     }
 
+
+    virtual AnimatedPropertyID animatedProperty() const = 0;
+
     virtual void updateState(QAbstractAnimation::State newState, QAbstractAnimation::State oldState)
     {
         QAbstractAnimation::updateState(newState, oldState);
@@ -1528,6 +1531,8 @@
             setCurrentTime(1);
     }
 
+    virtual AnimatedPropertyID animatedProperty() const { return AnimatedPropertyWebkitTransform; }
+
     // The idea is that we let WebCore manage the transform operations and Qt just manage the
     // animation heartbeat and the bottom-line QTransform. We gain performance, not by using
     // Transform instead of TransformationMatrix, but by proper caching of items that are
@@ -1599,6 +1604,8 @@
             setCurrentTime(1);
     }
 
+    virtual AnimatedPropertyID animatedProperty() const { return AnimatedPropertyOpacity; }
+
     virtual void applyFrame(const qreal& fromValue, const qreal& toValue, qreal progress)
     {
         qreal opacity = qBound(qreal(0), fromValue + (toValue - fromValue) * progress, qreal(1));
@@ -1640,8 +1647,11 @@
     for (it = m_impl->m_animations.begin(); it != m_impl->m_animations.end(); ++it) {
         if (*it) {
             AnimationQtBase* curAnimation = static_cast<AnimationQtBase*>(it->data());
-            if (curAnimation && curAnimation->m_webkitAnimation == anim)
+            if (curAnimation && curAnimation->m_webkitAnimation == anim
+                && values.property() == curAnimation->animatedProperty()) {
                 newAnim = curAnimation;
+                break;
+            }
         }
     }
 
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes

Reply via email to