Bug 1381431 - Allow that restyle hints other than animation hints remain for flushing throttle animations. r=emilio

MozReview-Commit-ID: GMkgvaK0mAu

--HG--
extra : rebase_source : 76b9cc6ab1b49b8e3b59c96915f9b72ccbe19970
This commit is contained in:
Hiroyuki Ikezoe 2017-07-18 20:56:15 +09:00
Родитель e648e73317
Коммит 607348ba52
4 изменённых файлов: 17 добавлений и 8 удалений

Просмотреть файл

@ -552,7 +552,7 @@ ServoRestyleManager::ProcessPostTraversal(
if (wasRestyled && oldStyleContext) {
MOZ_ASSERT(styleFrame || displayContentsNode);
RefPtr<ServoStyleContext> currentContext =
aRestyleState.StyleSet().ResolveServoStyle(aElement);
aRestyleState.StyleSet().ResolveServoStyle(aElement, aRestyleBehavior);
MOZ_ASSERT(oldStyleContext->ComputedValues() != currentContext->ComputedValues());
newContext = currentContext;

Просмотреть файл

@ -510,7 +510,8 @@ SERVO_BINDING_FUNC(Servo_TakeChangeHint,
bool* was_restyled)
SERVO_BINDING_FUNC(Servo_ResolveStyle, ServoStyleContextStrong,
RawGeckoElementBorrowed element,
RawServoStyleSetBorrowed set)
RawServoStyleSetBorrowed set,
mozilla::TraversalRestyleBehavior restyle_behavior)
SERVO_BINDING_FUNC(Servo_ResolvePseudoStyle, ServoStyleContextStrong,
RawGeckoElementBorrowed element,
mozilla::CSSPseudoElementType pseudo_type,

Просмотреть файл

@ -196,7 +196,8 @@ ServoStyleSet::GetContext(nsIContent* aContent,
ResolveStyleLazily(element, CSSPseudoElementType::NotPseudo, aPseudoTag, aParentContext);
computedValues->UpdateWithElementState(element);
} else {
computedValues = ResolveServoStyle(element);
computedValues = ResolveServoStyle(element,
TraversalRestyleBehavior::Normal);
}
MOZ_ASSERT(computedValues);
@ -443,8 +444,10 @@ ServoStyleSet::ResolvePseudoElementStyle(Element* aOriginatingElement,
nsIAtom* pseudoTag = nsCSSPseudoElements::GetPseudoAtom(aType);
if (aPseudoElement) {
MOZ_ASSERT(aType == aPseudoElement->GetPseudoElementType());
computedValues = Servo_ResolveStyle(aPseudoElement,
mRawSet.get()).Consume();
computedValues =
Servo_ResolveStyle(aPseudoElement,
mRawSet.get(),
TraversalRestyleBehavior::Normal).Consume();
} else {
const ServoComputedValues* parentStyle =
aParentContext ? aParentContext->ComputedValues() : nullptr;
@ -1096,10 +1099,13 @@ ServoStyleSet::CompatibilityModeChanged()
}
already_AddRefed<ServoStyleContext>
ServoStyleSet::ResolveServoStyle(Element* aElement)
ServoStyleSet::ResolveServoStyle(Element* aElement,
TraversalRestyleBehavior aRestyleBehavior)
{
UpdateStylistIfNeeded();
return Servo_ResolveStyle(aElement, mRawSet.get()).Consume();
return Servo_ResolveStyle(aElement,
mRawSet.get(),
aRestyleBehavior).Consume();
}
void

Просмотреть файл

@ -362,7 +362,9 @@ public:
* Resolve style for the given element, and return it as a
* ServoComputedValues, not an nsStyleContext.
*/
already_AddRefed<ServoStyleContext> ResolveServoStyle(dom::Element* aElement);
already_AddRefed<ServoStyleContext>
ResolveServoStyle(dom::Element* aElement,
TraversalRestyleBehavior aRestyleBehavior);
bool GetKeyframesForName(const nsString& aName,
const nsTimingFunction& aTimingFunction,