Bug 1344619 - Part 4: Add ServoStyleSet::ResolveStyleLazily(). r?heycam
MozReview-Commit-ID: GvlD6lQYBQ6
--- a/layout/style/ServoStyleSet.cpp
+++ b/layout/style/ServoStyleSet.cpp
@@ -135,18 +135,17 @@ ServoStyleSet::GetContext(nsIContent* aC
{
MOZ_ASSERT(aContent->IsElement());
Element* element = aContent->AsElement();
ResolveMappedAttrDeclarationBlocks();
RefPtr<ServoComputedValues> computedValues;
if (aMayCompute == LazyComputeBehavior::Allow) {
- computedValues =
- Servo_ResolveStyleLazily(element, nullptr, mRawSet.get()).Consume();
+ computedValues = ResolveStyleLazily(element, nullptr);
} else {
computedValues = ResolveServoStyle(element);
}
MOZ_ASSERT(computedValues);
return GetContext(computedValues.forget(), aParentContext, aPseudoTag, aPseudoType,
element);
}
@@ -331,17 +330,17 @@ already_AddRefed<nsStyleContext>
ServoStyleSet::ResolveTransientStyle(Element* aElement, CSSPseudoElementType aType)
{
nsIAtom* pseudoTag = nullptr;
if (aType != CSSPseudoElementType::NotPseudo) {
pseudoTag = nsCSSPseudoElements::GetPseudoAtom(aType);
}
RefPtr<ServoComputedValues> computedValues =
- Servo_ResolveStyleLazily(aElement, pseudoTag, mRawSet.get()).Consume();
+ ResolveStyleLazily(aElement, pseudoTag);
return GetContext(computedValues.forget(), nullptr, pseudoTag, aType,
nullptr);
}
// aFlags is an nsStyleSet flags bitfield
already_AddRefed<nsStyleContext>
ServoStyleSet::ResolveAnonymousBoxStyle(nsIAtom* aPseudoTag,
@@ -700,9 +699,15 @@ ServoStyleSet::ResolveServoStyle(Element
void
ServoStyleSet::ClearNonInheritingStyleContexts()
{
for (RefPtr<nsStyleContext>& ptr : mNonInheritingStyleContexts) {
ptr = nullptr;
}
}
+already_AddRefed<ServoComputedValues>
+ServoStyleSet::ResolveStyleLazily(Element* aElement, nsIAtom* aPseudoTag)
+{
+ return Servo_ResolveStyleLazily(aElement, aPseudoTag, mRawSet.get()).Consume();
+}
+
bool ServoStyleSet::sInServoTraversal = false;
--- a/layout/style/ServoStyleSet.h
+++ b/layout/style/ServoStyleSet.h
@@ -265,16 +265,19 @@ private:
*/
void ClearNonInheritingStyleContexts();
/**
* Perform processes that we should do before traversing.
*/
void PreTraverse();
+ already_AddRefed<ServoComputedValues> ResolveStyleLazily(dom::Element* aElement,
+ nsIAtom* aPseudoTag);
+
nsPresContext* mPresContext;
UniquePtr<RawServoStyleSet> mRawSet;
EnumeratedArray<SheetType, SheetType::Count,
nsTArray<RefPtr<ServoStyleSheet>>> mSheets;
int32_t mBatching;
// Stores pointers to our cached style contexts for non-inheriting anonymous
// boxes.