nsIStyleRule* CommonAnimationManager::GetAnimationRule(mozilla::dom::Element* aElement, nsCSSPseudoElements::Type aPseudoType) { MOZ_ASSERT( aPseudoType == nsCSSPseudoElements::ePseudo_NotPseudoElement || aPseudoType == nsCSSPseudoElements::ePseudo_before || aPseudoType == nsCSSPseudoElements::ePseudo_after, "forbidden pseudo type"); if (!mPresContext->IsDynamic()) { // For print or print preview, ignore animations. return nullptr; } AnimationPlayerCollection* collection = GetAnimationPlayers(aElement, aPseudoType, false); if (!collection) { return nullptr; } RestyleManager* restyleManager = mPresContext->RestyleManager(); if (restyleManager->SkipAnimationRules()) { // During the non-animation part of processing restyles, we don't // add the animation rule. if (collection->mStyleRule && restyleManager->PostAnimationRestyles()) { collection->PostRestyleForAnimation(mPresContext); } return nullptr; } // Animations should already be refreshed, but transitions may not be. // Note that this is temporary, we would like both animations and transitions // to both be refreshed by this point. if (IsAnimationManager()) { NS_WARN_IF_FALSE(!collection->mNeedsRefreshes || collection->mStyleRuleRefreshTime == mPresContext->RefreshDriver()->MostRecentRefresh(), "should already have refreshed style rule"); } else { // FIXME: Remove this assignment. See bug 1061364. collection->mNeedsRefreshes = true; collection->EnsureStyleRuleFor( mPresContext->RefreshDriver()->MostRecentRefresh(), EnsureStyleRule_IsNotThrottled); } return collection->mStyleRule; }
nsIStyleRule* nsAnimationManager::GetAnimationRule(mozilla::dom::Element* aElement, nsCSSPseudoElements::Type aPseudoType) { NS_ABORT_IF_FALSE( aPseudoType == nsCSSPseudoElements::ePseudo_NotPseudoElement || aPseudoType == nsCSSPseudoElements::ePseudo_before || aPseudoType == nsCSSPseudoElements::ePseudo_after, "forbidden pseudo type"); if (!mPresContext->IsDynamic()) { // For print or print preview, ignore animations. return nullptr; } AnimationPlayerCollection* collection = GetAnimationPlayers(aElement, aPseudoType, false); if (!collection) { return nullptr; } RestyleManager* restyleManager = mPresContext->RestyleManager(); if (restyleManager->SkipAnimationRules()) { // During the non-animation part of processing restyles, we don't // add the animation rule. if (collection->mStyleRule && restyleManager->PostAnimationRestyles()) { collection->PostRestyleForAnimation(mPresContext); } return nullptr; } NS_WARN_IF_FALSE(!collection->mNeedsRefreshes || collection->mStyleRuleRefreshTime == mPresContext->RefreshDriver()->MostRecentRefresh(), "should already have refreshed style rule"); return collection->mStyleRule; }