void CommonAnimationManager::AddStyleUpdatesTo(RestyleTracker& aTracker) { TimeStamp now = mPresContext->RefreshDriver()->MostRecentRefresh(); for (AnimationCollection* collection = mElementCollections.getFirst(); collection; collection = collection->getNext()) { collection->EnsureStyleRuleFor(now); dom::Element* elementToRestyle = collection->GetElementToRestyle(); if (elementToRestyle) { nsRestyleHint rshint = collection->IsForTransitions() ? eRestyle_CSSTransitions : eRestyle_CSSAnimations; aTracker.AddPendingRestyle(elementToRestyle, rshint, nsChangeHint(0)); } } }
void CommonAnimationManager::FlushAnimations() { TimeStamp now = mPresContext->RefreshDriver()->MostRecentRefresh(); for (AnimationCollection* collection = mElementCollections.getFirst(); collection; collection = collection->getNext()) { if (collection->mStyleRuleRefreshTime == now) { continue; } MOZ_ASSERT(collection->mElement->GetComposedDoc() == mPresContext->Document(), "Should not have a transition/animation collection for an " "element that is not part of the document tree"); collection->RequestRestyle(AnimationCollection::RestyleType::Standard); } }
void CommonAnimationManager::FlushAnimations(FlushFlags aFlags) { TimeStamp now = mPresContext->RefreshDriver()->MostRecentRefresh(); for (AnimationCollection* collection = mElementCollections.getFirst(); collection; collection = collection->getNext()) { if (collection->mStyleRuleRefreshTime == now) { continue; } if (aFlags == Cannot_Throttle) { collection->RequestRestyle(AnimationCollection::RestyleType::Standard); } nsAutoAnimationMutationBatch mb(collection->mElement); collection->Tick(); } MaybeStartOrStopObservingRefreshDriver(); }