Bug 847287 patch 9 - Use fully-updated style rule for animations when updating cascade results for transitions. r=birtles

I don't have a test case that requires this, but it seems like a good
idea.  (It was an incorrect theory for fixing a test failure that I was
debugging, but still seems worth doing.)
This commit is contained in:
L. David Baron 2015-03-31 15:05:55 -07:00
parent bb63a8c97c
commit 957e72b3a6
2 changed files with 13 additions and 6 deletions

View File

@ -615,7 +615,7 @@ nsTransitionManager::UpdateCascadeResultsWithTransitions(
void
nsTransitionManager::UpdateCascadeResultsWithAnimations(
const AnimationPlayerCollection* aAnimations)
AnimationPlayerCollection* aAnimations)
{
AnimationPlayerCollection* transitions =
mPresContext->TransitionManager()->
@ -641,7 +641,7 @@ nsTransitionManager::UpdateCascadeResultsWithAnimationsToBeDestroyed(
void
nsTransitionManager::UpdateCascadeResults(
AnimationPlayerCollection* aTransitions,
const AnimationPlayerCollection* aAnimations)
AnimationPlayerCollection* aAnimations)
{
if (!aTransitions) {
// Nothing to do.
@ -656,8 +656,15 @@ nsTransitionManager::UpdateCascadeResults(
// http://dev.w3.org/csswg/css-transitions/#application says that
// transitions do not apply when the same property has a CSS Animation
// on that element (even though animations are lower in the cascade).
if (aAnimations && aAnimations->mStyleRule) {
aAnimations->mStyleRule->AddPropertiesToSet(propertiesUsed);
if (aAnimations) {
TimeStamp now = mPresContext->RefreshDriver()->MostRecentRefresh();
// Passing EnsureStyleRule_IsThrottled is OK since we will
// unthrottle when animations are finishing.
aAnimations->EnsureStyleRuleFor(now, EnsureStyleRule_IsThrottled);
if (aAnimations->mStyleRule) {
aAnimations->mStyleRule->AddPropertiesToSet(propertiesUsed);
}
}
// Since we should never have more than one transition for the same

View File

@ -131,11 +131,11 @@ public:
void UpdateCascadeResultsWithTransitions(
AnimationPlayerCollection* aTransitions);
void UpdateCascadeResultsWithAnimations(
const AnimationPlayerCollection* aAnimations);
AnimationPlayerCollection* aAnimations);
void UpdateCascadeResultsWithAnimationsToBeDestroyed(
const AnimationPlayerCollection* aAnimations);
void UpdateCascadeResults(AnimationPlayerCollection* aTransitions,
const AnimationPlayerCollection* aAnimations);
AnimationPlayerCollection* aAnimations);
void SetInAnimationOnlyStyleUpdate(bool aInAnimationOnlyUpdate) {
mInAnimationOnlyStyleUpdate = aInAnimationOnlyUpdate;