Bug 1412716 - De-templatize functions in nsTransitionManager. r?emilio
MozReview-Commit-ID: 6u1fOrIH8PA
--- a/layout/style/ServoBindings.cpp
+++ b/layout/style/ServoBindings.cpp
@@ -630,18 +630,18 @@ Gecko_UpdateAnimations(RawGeckoElementBo
if (!aComputedData) {
return;
}
if (aTasks & UpdateAnimationsTasks::CSSTransitions) {
MOZ_ASSERT(aOldComputedData);
presContext->TransitionManager()->
UpdateTransitions(const_cast<dom::Element*>(aElement), pseudoType,
- aOldComputedData,
- aComputedData);
+ *aOldComputedData,
+ *aComputedData);
}
if (aTasks & UpdateAnimationsTasks::EffectProperties) {
presContext->EffectCompositor()->UpdateEffectProperties(
aComputedData, const_cast<dom::Element*>(aElement), pseudoType);
}
if (aTasks & UpdateAnimationsTasks::CascadeResults) {
--- a/layout/style/nsTransitionManager.cpp
+++ b/layout/style/nsTransitionManager.cpp
@@ -406,62 +406,61 @@ CSSTransition::SetEffectFromStyle(dom::A
}
}
////////////////////////// nsTransitionManager ////////////////////////////
static inline bool
ExtractNonDiscreteComputedValue(nsCSSPropertyID aProperty,
- const ComputedStyle* aComputedStyle,
+ const ComputedStyle& aComputedStyle,
AnimationValue& aAnimationValue)
{
if (Servo_Property_IsDiscreteAnimatable(aProperty) &&
aProperty != eCSSProperty_visibility) {
return false;
}
aAnimationValue.mServo =
- Servo_ComputedValues_ExtractAnimationValue(aComputedStyle,
+ Servo_ComputedValues_ExtractAnimationValue(&aComputedStyle,
aProperty).Consume();
return !!aAnimationValue.mServo;
}
bool
nsTransitionManager::UpdateTransitions(
dom::Element *aElement,
CSSPseudoElementType aPseudoType,
- const ComputedStyle* aOldStyle,
- const ComputedStyle* aNewStyle)
+ const ComputedStyle& aOldStyle,
+ const ComputedStyle& aNewStyle)
{
if (!mPresContext->IsDynamic()) {
// For print or print preview, ignore transitions.
return false;
}
CSSTransitionCollection* collection =
CSSTransitionCollection::GetAnimationCollection(aElement, aPseudoType);
const nsStyleDisplay* disp =
- aNewStyle->ComputedData()->GetStyleDisplay();
+ aNewStyle.ComputedData()->GetStyleDisplay();
return DoUpdateTransitions(*disp,
aElement, aPseudoType,
collection,
aOldStyle, aNewStyle);
}
-template<typename StyleType>
bool
nsTransitionManager::DoUpdateTransitions(
const nsStyleDisplay& aDisp,
dom::Element* aElement,
CSSPseudoElementType aPseudoType,
CSSTransitionCollection*& aElementTransitions,
- StyleType aOldStyle,
- StyleType aNewStyle)
+ const ComputedStyle& aOldStyle,
+ const ComputedStyle& aNewStyle)
{
MOZ_ASSERT(!aElementTransitions ||
aElementTransitions->mElement == aElement, "Element mismatch");
// Per http://lists.w3.org/Archives/Public/www-style/2009Aug/0109.html
// I'll consider only the transitions from the number of items in
// 'transition-property' on down, and later ones will override earlier
// ones (tracked using |whichStarted|).
@@ -628,27 +627,26 @@ GetTransitionKeyframes(nsCSSPropertyID a
}
static bool
IsTransitionable(nsCSSPropertyID aProperty)
{
return Servo_Property_IsTransitionable(aProperty);
}
-template<typename StyleType>
void
nsTransitionManager::ConsiderInitiatingTransition(
nsCSSPropertyID aProperty,
const nsStyleDisplay& aStyleDisplay,
uint32_t transitionIdx,
dom::Element* aElement,
CSSPseudoElementType aPseudoType,
CSSTransitionCollection*& aElementTransitions,
- StyleType aOldStyle,
- StyleType aNewStyle,
+ const ComputedStyle& aOldStyle,
+ const ComputedStyle& aNewStyle,
bool* aStartedAny,
nsCSSPropertyIDSet* aWhichStarted)
{
// IsShorthand itself will assert if aProperty is not a property.
MOZ_ASSERT(!nsCSSProps::IsShorthand(aProperty),
"property out of range");
NS_ASSERTION(!aElementTransitions ||
aElementTransitions->mElement == aElement, "Element mismatch");
@@ -818,17 +816,17 @@ nsTransitionManager::ConsiderInitiatingT
KeyframeEffectParams effectOptions;
RefPtr<ElementPropertyTransition> pt =
new ElementPropertyTransition(aElement->OwnerDoc(), target, timing,
startForReversingTest, reversePortion,
effectOptions);
pt->SetKeyframes(GetTransitionKeyframes(aProperty,
Move(startValue), Move(endValue), tf),
- aNewStyle);
+ &aNewStyle);
RefPtr<CSSTransition> animation =
new CSSTransition(mPresContext->Document()->GetScopeObject());
animation->SetOwningElement(OwningElementRef(*aElement, aPseudoType));
animation->SetTimelineNoUpdate(timeline);
animation->SetCreationSequence(
mPresContext->RestyleManager()->GetAnimationGeneration());
animation->SetEffectFromStyle(pt);
--- a/layout/style/nsTransitionManager.h
+++ b/layout/style/nsTransitionManager.h
@@ -317,46 +317,44 @@ public:
/**
* Update transitions for stylo.
*/
bool UpdateTransitions(
mozilla::dom::Element *aElement,
mozilla::CSSPseudoElementType aPseudoType,
- const mozilla::ComputedStyle* aOldStyle,
- const mozilla::ComputedStyle* aNewStyle);
+ const mozilla::ComputedStyle& aOldStyle,
+ const mozilla::ComputedStyle& aNewStyle);
protected:
virtual ~nsTransitionManager() {}
typedef nsTArray<RefPtr<mozilla::dom::CSSTransition>>
OwningCSSTransitionPtrArray;
// Update transitions. This will start new transitions,
// replace existing transitions, and stop existing transitions
// as needed. aDisp and aElement must be non-null.
// aElementTransitions is the collection of current transitions, and it
// could be a nullptr if we don't have any transitions.
- template<typename StyleType> bool
- DoUpdateTransitions(const nsStyleDisplay& aDisp,
- mozilla::dom::Element* aElement,
- mozilla::CSSPseudoElementType aPseudoType,
- CSSTransitionCollection*& aElementTransitions,
- StyleType aOldStyle,
- StyleType aNewStyle);
+ bool DoUpdateTransitions(const nsStyleDisplay& aDisp,
+ mozilla::dom::Element* aElement,
+ mozilla::CSSPseudoElementType aPseudoType,
+ CSSTransitionCollection*& aElementTransitions,
+ const mozilla::ComputedStyle& aOldStyle,
+ const mozilla::ComputedStyle& aNewStyle);
- template<typename StyleType> void
- ConsiderInitiatingTransition(nsCSSPropertyID aProperty,
- const nsStyleDisplay& aStyleDisplay,
- uint32_t transitionIdx,
- mozilla::dom::Element* aElement,
- mozilla::CSSPseudoElementType aPseudoType,
- CSSTransitionCollection*& aElementTransitions,
- StyleType aOldStyle,
- StyleType aNewStyle,
- bool* aStartedAny,
- nsCSSPropertyIDSet* aWhichStarted);
+ void ConsiderInitiatingTransition(nsCSSPropertyID aProperty,
+ const nsStyleDisplay& aStyleDisplay,
+ uint32_t transitionIdx,
+ mozilla::dom::Element* aElement,
+ mozilla::CSSPseudoElementType aPseudoType,
+ CSSTransitionCollection*& aElementTransitions,
+ const mozilla::ComputedStyle& aOldStyle,
+ const mozilla::ComputedStyle& aNewStyle,
+ bool* aStartedAny,
+ nsCSSPropertyIDSet* aWhichStarted);
};
#endif /* !defined(nsTransitionManager_h_) */