Bug 1364412: Don't ignore the pseudo-element argument in ResolvePseudoElementStyle. r?heycam
MozReview-Commit-ID: 4KA4bj2Ww5W
Signed-off-by: Emilio Cobos Álvarez <emilio@crisal.io>
--- a/layout/style/ServoStyleSet.cpp
+++ b/layout/style/ServoStyleSet.cpp
@@ -431,31 +431,37 @@ ServoStyleSet::ResolveStyleForPlaceholde
}
already_AddRefed<nsStyleContext>
ServoStyleSet::ResolvePseudoElementStyle(Element* aOriginatingElement,
CSSPseudoElementType aType,
nsStyleContext* aParentContext,
Element* aPseudoElement)
{
- if (aPseudoElement) {
- NS_WARNING("stylo: We don't support CSS_PSEUDO_ELEMENT_SUPPORTS_USER_ACTION_STATE yet");
- }
-
MaybeRebuildStylist();
// NB: We ignore aParentContext, on the assumption that pseudo element styles
// should just inherit from aOriginatingElement's primary style, which Servo
// already knows.
MOZ_ASSERT(aType < CSSPseudoElementType::Count);
nsIAtom* pseudoTag = nsCSSPseudoElements::GetPseudoAtom(aType);
- RefPtr<ServoComputedValues> computedValues =
- Servo_ResolvePseudoStyle(aOriginatingElement, pseudoTag,
- /* is_probe = */ false, mRawSet.get()).Consume();
+ RefPtr<ServoComputedValues> computedValues;
+ if (aPseudoElement) {
+ MOZ_ASSERT(aType == aPseudoElement->GetPseudoElementType());
+ computedValues = Servo_ResolveStyle(aPseudoElement, mRawSet.get(),
+ mAllowResolveStaleStyles).Consume();
+ } else {
+ computedValues =
+ Servo_ResolvePseudoStyle(aOriginatingElement,
+ pseudoTag,
+ /* is_probe = */ false,
+ mRawSet.get()).Consume();
+ }
+
MOZ_ASSERT(computedValues);
bool isBeforeOrAfter = aType == CSSPseudoElementType::before ||
aType == CSSPseudoElementType::after;
return GetContext(computedValues.forget(), aParentContext, pseudoTag, aType,
isBeforeOrAfter ? aOriginatingElement : nullptr);
}