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;
+ }
}
}