Bug 1420928 - Pass a const reference of nsStyleDisplay instead of a raw pointer to DoUpdateTransitions. r?boris
MozReview-Commit-ID: 91QtuEqlRYv
--- a/layout/style/nsTransitionManager.cpp
+++ b/layout/style/nsTransitionManager.cpp
@@ -517,17 +517,17 @@ nsTransitionManager::StyleContextChanged
}
// NOTE: Things in this function (and ConsiderInitiatingTransition)
// should never call PeekStyleData because we don't preserve gotten
// structs across reframes.
// Return sooner (before the startedAny check below) for the most
// common case: no transitions specified or running.
- const nsStyleDisplay *disp = newStyleContext->StyleDisplay();
+ const nsStyleDisplay* disp = newStyleContext->StyleDisplay();
CSSPseudoElementType pseudoType = newStyleContext->GetPseudoType();
if (pseudoType != CSSPseudoElementType::NotPseudo) {
if (pseudoType != CSSPseudoElementType::before &&
pseudoType != CSSPseudoElementType::after) {
return;
}
NS_ASSERTION((pseudoType == CSSPseudoElementType::before &&
@@ -593,17 +593,17 @@ nsTransitionManager::StyleContextChanged
}
nsAutoAnimationMutationBatch mb(aElement->OwnerDoc());
DebugOnly<bool> startedAny = false;
// We don't have to update transitions if display:none, although we will
// cancel them after restyling.
if (!afterChangeStyle->IsInDisplayNoneSubtree()) {
- startedAny = DoUpdateTransitions(disp,
+ startedAny = DoUpdateTransitions(*disp,
aElement,
afterChangeStyle->GetPseudoType(),
collection,
aOldStyleContext->AsGecko(),
afterChangeStyle->AsGecko());
}
MOZ_ASSERT(!startedAny || collection,
@@ -642,46 +642,45 @@ nsTransitionManager::UpdateTransitions(
{
if (!mPresContext->IsDynamic()) {
// For print or print preview, ignore transitions.
return false;
}
CSSTransitionCollection* collection =
CSSTransitionCollection::GetAnimationCollection(aElement, aPseudoType);
- const nsStyleDisplay *disp =
+ const nsStyleDisplay* disp =
aNewStyle->ComputedData()->GetStyleDisplay();
- return DoUpdateTransitions(disp,
+ return DoUpdateTransitions(*disp,
aElement, aPseudoType,
collection,
aOldStyle, aNewStyle);
}
template<typename StyleType>
bool
nsTransitionManager::DoUpdateTransitions(
- const nsStyleDisplay* aDisp,
+ const nsStyleDisplay& aDisp,
dom::Element* aElement,
CSSPseudoElementType aPseudoType,
CSSTransitionCollection*& aElementTransitions,
StyleType aOldStyle,
StyleType aNewStyle)
{
- MOZ_ASSERT(aDisp, "Null nsStyleDisplay");
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|).
bool startedAny = false;
nsCSSPropertyIDSet whichStarted;
- for (uint32_t i = aDisp->mTransitionPropertyCount; i-- != 0; ) {
- const StyleTransition& t = aDisp->mTransitions[i];
+ for (uint32_t i = aDisp.mTransitionPropertyCount; i-- != 0; ) {
+ const StyleTransition& t = aDisp.mTransitions[i];
// Check the combined duration (combination of delay and duration)
// first, since it defaults to zero, which means we can ignore the
// transition.
if (t.GetCombinedDuration() > 0.0f) {
// We might have something to transition. See if any of the
// properties in question changed and are animatable.
// FIXME: Would be good to find a way to share code between this
// interpretation of transition-property and the one below.
@@ -723,21 +722,21 @@ nsTransitionManager::DoUpdateTransitions
// for properties that just changed (and are still in the set of
// properties to transition), but for which we didn't just start the
// transition. This can happen delay and duration are both zero, or
// because the new value is not interpolable.
// Note that we also do the latter set of work in
// nsTransitionManager::PruneCompletedTransitions.
if (aElementTransitions) {
bool checkProperties =
- aDisp->mTransitions[0].GetProperty() != eCSSPropertyExtra_all_properties;
+ aDisp.mTransitions[0].GetProperty() != eCSSPropertyExtra_all_properties;
nsCSSPropertyIDSet allTransitionProperties;
if (checkProperties) {
- for (uint32_t i = aDisp->mTransitionPropertyCount; i-- != 0; ) {
- const StyleTransition& t = aDisp->mTransitions[i];
+ for (uint32_t i = aDisp.mTransitionPropertyCount; i-- != 0; ) {
+ const StyleTransition& t = aDisp.mTransitions[i];
// FIXME: Would be good to find a way to share code between this
// interpretation of transition-property and the one above.
nsCSSPropertyID property = t.GetProperty();
if (property == eCSSPropertyExtra_no_properties ||
property == eCSSPropertyExtra_variable ||
property == eCSSProperty_UNKNOWN) {
// Nothing to do, but need to exclude this from cases below.
} else if (property == eCSSPropertyExtra_all_properties) {
--- a/layout/style/nsTransitionManager.h
+++ b/layout/style/nsTransitionManager.h
@@ -425,17 +425,17 @@ protected:
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,
+ DoUpdateTransitions(const nsStyleDisplay& aDisp,
mozilla::dom::Element* aElement,
mozilla::CSSPseudoElementType aPseudoType,
CSSTransitionCollection*& aElementTransitions,
StyleType aOldStyle,
StyleType aNewStyle);
template<typename StyleType> void
ConsiderInitiatingTransition(nsCSSPropertyID aProperty,