[Web Animations] Document.getAnimations() should only consider document connection...
authorcommit-queue@webkit.org <commit-queue@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Mon, 11 May 2020 19:37:24 +0000 (19:37 +0000)
committercommit-queue@webkit.org <commit-queue@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Mon, 11 May 2020 19:37:24 +0000 (19:37 +0000)
https://bugs.webkit.org/show_bug.cgi?id=211697

Patch by Antoine Quint <graouts@apple.com> on 2020-05-11
Reviewed by Dean Jackson.

LayoutTests/imported/w3c:

Mark two additional WPT tests as PASS.

* web-platform-tests/web-animations/interfaces/DocumentOrShadowRoot/getAnimations-expected.txt:

Source/WebCore:

The Document.getAnimations() function should return any animation running for an element that is a child of the
target Document. We now consider all current animations, regardless of which timeline they might be associated
with. This lets us pass the final two WPT Document.getAnimations() tests.

* dom/Document.cpp:
(WebCore::Document::matchingAnimations):

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

LayoutTests/imported/w3c/ChangeLog
LayoutTests/imported/w3c/web-platform-tests/web-animations/interfaces/DocumentOrShadowRoot/getAnimations-expected.txt
Source/WebCore/ChangeLog
Source/WebCore/dom/Document.cpp

index 611eb37..fea3ebc 100644 (file)
@@ -1,3 +1,14 @@
+2020-05-11  Antoine Quint  <graouts@apple.com>
+
+        [Web Animations] Document.getAnimations() should only consider document connection and not timeline association
+        https://bugs.webkit.org/show_bug.cgi?id=211697
+
+        Reviewed by Dean Jackson.
+
+        Mark two additional WPT tests as PASS.
+
+        * web-platform-tests/web-animations/interfaces/DocumentOrShadowRoot/getAnimations-expected.txt:
+
 2020-05-10  Rob Buis  <rbuis@igalia.com>
 
         Fix base64.any.html test
index 26a6584..0d003ca 100644 (file)
@@ -4,8 +4,8 @@ PASS Document.getAnimations() returns script-generated animations
 PASS Document.getAnimations() returns script-generated animations in the order they were created 
 PASS Document.getAnimations() does not return a disconnected node 
 PASS Document.getAnimations() does not return an animation with a null target 
-FAIL Document.getAnimations() returns animations on elements inside same-origin iframes assert_equals: expected 1 but got 0
-FAIL iframe.contentDocument.getAnimations() returns animations on elements inside same-origin Document assert_equals: expected 1 but got 0
+PASS Document.getAnimations() returns animations on elements inside same-origin iframes 
+PASS iframe.contentDocument.getAnimations() returns animations on elements inside same-origin Document 
 PASS ShadowRoot.getAnimations() return all animations in the shadow tree 
 PASS Document.getAnimations() does NOT return animations in shadow trees 
 PASS ShadowRoot.getAnimations() does NOT return animations in parent document 
index 42daa84..f7639d7 100644 (file)
@@ -1,3 +1,17 @@
+2020-05-11  Antoine Quint  <graouts@apple.com>
+
+        [Web Animations] Document.getAnimations() should only consider document connection and not timeline association
+        https://bugs.webkit.org/show_bug.cgi?id=211697
+
+        Reviewed by Dean Jackson.
+
+        The Document.getAnimations() function should return any animation running for an element that is a child of the
+        target Document. We now consider all current animations, regardless of which timeline they might be associated
+        with. This lets us pass the final two WPT Document.getAnimations() tests.
+
+        * dom/Document.cpp:
+        (WebCore::Document::matchingAnimations):
+
 2020-05-11  Andres Gonzalez  <andresg_22@apple.com>
 
         Add implementation  for AXIsolatedObject::elementPath, hasHighlighting, isBlockquote, isKeyboardFocusable.
index 6084dd7..6252a6e 100644 (file)
@@ -8129,16 +8129,13 @@ Vector<RefPtr<WebAnimation>> Document::matchingAnimations(const WTF::Function<bo
     // such as updates to CSS Animations and CSS Transitions.
     updateStyleIfNeeded();
 
-    if (!m_timeline)
-        return { };
-
     Vector<RefPtr<WebAnimation>> animations;
-    for (auto& animation : m_timeline->relevantAnimations()) {
+    for (auto* animation : WebAnimation::instances()) {
         if (!animation || !animation->isRelevant() || !is<KeyframeEffect>(animation->effect()))
             continue;
 
         auto* target = downcast<KeyframeEffect>(*animation->effect()).targetElementOrPseudoElement();
-        if (target && target->isDescendantOf(this) && function(*target))
+        if (target && target->isConnected() && &target->document() == this && function(*target))
             animations.append(animation);
     }