[Web Animations] Optimize animation resolution to not re-compute whether effects...
authorgraouts@webkit.org <graouts@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Sat, 9 Nov 2019 11:05:21 +0000 (11:05 +0000)
committergraouts@webkit.org <graouts@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Sat, 9 Nov 2019 11:05:21 +0000 (11:05 +0000)
https://bugs.webkit.org/show_bug.cgi?id=204009

Reviewed by Dean Jackson.

A KeyframeEffect already exposes whether it only affects CSS properties that can be accelerated, so use this information instead
of iterating over an effect's animated properties during resolution to get at the same information.

No tests or changes to existed test expectations as this should not yield any change in behavior.

* dom/Element.cpp:
(WebCore::Element::applyKeyframeEffects):

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@252307 268f45cc-cd09-0410-ab3c-d52691b4dbfc

Source/WebCore/ChangeLog
Source/WebCore/dom/Element.cpp

index b5ccfaf..39d8965 100644 (file)
@@ -1,3 +1,18 @@
+2019-11-08  Antoine Quint  <graouts@apple.com>
+
+        [Web Animations] Optimize animation resolution to not re-compute whether effects only contain accelerated animation properties
+        https://bugs.webkit.org/show_bug.cgi?id=204009
+
+        Reviewed by Dean Jackson.
+
+        A KeyframeEffect already exposes whether it only affects CSS properties that can be accelerated, so use this information instead
+        of iterating over an effect's animated properties during resolution to get at the same information. 
+
+        No tests or changes to existed test expectations as this should not yield any change in behavior.
+
+        * dom/Element.cpp:
+        (WebCore::Element::applyKeyframeEffects):
+
 2019-11-08  Chris Dumez  <cdumez@apple.com>
 
         Add back/forward cache quirk for Vimeo.com
index a826681..f37c930 100644 (file)
@@ -31,7 +31,6 @@
 #include "AttributeChangeInvalidation.h"
 #include "CSSAnimationController.h"
 #include "CSSParser.h"
-#include "CSSPropertyAnimation.h"
 #include "Chrome.h"
 #include "ChromeClient.h"
 #include "ClassChangeInvalidation.h"
@@ -3703,17 +3702,8 @@ bool Element::applyKeyframeEffects(RenderStyle& targetStyle)
         ASSERT(effect->animation());
         effect->animation()->resolve(targetStyle);
 
-        if (hasNonAcceleratedAnimationProperty)
-            continue;
-
-        // FIXME: https://bugs.webkit.org/show_bug.cgi?id=204009
-        // KeyframeEffectStack and KeyframeEffect should indicate whether it only contains accelerated animation properties
-        for (auto cssPropertyId : effect->animatedProperties()) {
-            if (!CSSPropertyAnimation::animationOfPropertyIsAccelerated(cssPropertyId)) {
-                hasNonAcceleratedAnimationProperty = true;
-                break;
-            }
-        }
+        if (!hasNonAcceleratedAnimationProperty && !effect->isAccelerated())
+            hasNonAcceleratedAnimationProperty = true;
     }
 
     return !hasNonAcceleratedAnimationProperty;