Bug 1358570: Make PurgeCompletedTransitions lookup the correct animation collection. r?hiro draft
authorEmilio Cobos Álvarez <emilio@crisal.io>
Fri, 21 Apr 2017 16:53:21 +0200
changeset 566513 420505dbd4ae2d501cf99229b892db318d33255f
parent 566511 abd715e3634ea39302a18f29026192c8e70361b2
child 625340 e009b4770f22279f7776541e6a50fa47af825066
push id55244
push userbmo:emilio+bugs@crisal.io
push dateFri, 21 Apr 2017 18:01:34 +0000
reviewershiro
bugs1358570
milestone55.0a1
Bug 1358570: Make PurgeCompletedTransitions lookup the correct animation collection. r?hiro Probably GetAnimationCollection itself should assert against it, but that's a bigger task right now... MozReview-Commit-ID: JxFWXtgMAXy
layout/base/nsCSSFrameConstructor.cpp
layout/style/nsTransitionManager.cpp
--- a/layout/base/nsCSSFrameConstructor.cpp
+++ b/layout/base/nsCSSFrameConstructor.cpp
@@ -1896,18 +1896,18 @@ nsCSSFrameConstructor::CreateGeneratedCo
       nsStyleContext* oldStyleContext = rsc->Get(container, aPseudoElement);
       if (oldStyleContext) {
         GeckoRestyleManager::TryInitiatingTransition(aState.mPresContext,
                                                      container,
                                                      oldStyleContext,
                                                      &pseudoStyleContext);
       } else {
         aState.mPresContext->TransitionManager()->
-          PruneCompletedTransitions(container, aPseudoElement,
-                                    pseudoStyleContext);
+          PruneCompletedTransitions(aParentContent->AsElement(),
+                                    aPseudoElement, pseudoStyleContext);
       }
     }
   }
 
   uint32_t contentCount = pseudoStyleContext->StyleContent()->ContentCount();
   for (uint32_t contentIndex = 0; contentIndex < contentCount; contentIndex++) {
     nsCOMPtr<nsIContent> content =
       CreateGeneratedContent(aState, aParentContent, pseudoStyleContext,
--- a/layout/style/nsTransitionManager.cpp
+++ b/layout/style/nsTransitionManager.cpp
@@ -1104,16 +1104,19 @@ nsTransitionManager::ConsiderInitiatingT
   aWhichStarted->AddProperty(aProperty);
 }
 
 void
 nsTransitionManager::PruneCompletedTransitions(mozilla::dom::Element* aElement,
                                                CSSPseudoElementType aPseudoType,
                                                nsStyleContext* aNewStyleContext)
 {
+  MOZ_ASSERT(!aElement->IsGeneratedContentContainerForBefore() &&
+             !aElement->IsGeneratedContentContainerForAfter());
+
   CSSTransitionCollection* collection =
     CSSTransitionCollection::GetAnimationCollection(aElement, aPseudoType);
   if (!collection) {
     return;
   }
 
   // Remove any finished transitions whose style doesn't match the new
   // style.