author | Emilio Cobos Álvarez <emilio@crisal.io> |
Fri, 12 May 2017 17:51:32 +0200 | |
changeset 358511 | 21a5f7033f60dd7cb63638255a10b07d0f74fe07 |
parent 358510 | 170fee4541a332cbe517494793c6061ab0051c02 |
child 358512 | 85726f8e31c51406a821525eda5031f690824522 |
push id | 31827 |
push user | cbook@mozilla.com |
push date | Tue, 16 May 2017 10:34:19 +0000 |
treeherder | mozilla-central@49365d675cbb [default view] [failures only] |
perfherder | [talos] [build metrics] [platform microbench] (compared to previous push) |
reviewers | bholley |
bugs | 1364412 |
milestone | 55.0a1 |
first release with | nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
|
last release without | nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
|
--- a/layout/base/nsPresContext.cpp +++ b/layout/base/nsPresContext.cpp @@ -2205,44 +2205,33 @@ nsPresContext::CountReflows(const char * void nsPresContext::UpdateIsChrome() { mIsChrome = mContainer && nsIDocShellTreeItem::typeChrome == mContainer->ItemType(); } bool -nsPresContext::HasAuthorSpecifiedRules(const nsIFrame *aFrame, - uint32_t ruleTypeMask) const +nsPresContext::HasAuthorSpecifiedRules(const nsIFrame* aFrame, + uint32_t aRuleTypeMask) const { if (mShell->StyleSet()->IsGecko()) { return nsRuleNode::HasAuthorSpecifiedRules(aFrame->StyleContext(), - ruleTypeMask, + aRuleTypeMask, UseDocumentColors()); - } else { - Element *elem = aFrame->GetContent()->AsElement(); - if (elem->IsNativeAnonymous()) { - elem = nsContentUtils::GetClosestNonNativeAnonymousAncestor(elem); - } - if (!elem->HasServoData()) { - return false; - } - - nsIAtom *pseudoTag = aFrame->StyleContext()->GetPseudo(); - RefPtr<RawServoRuleNode> ruleNode; - ruleNode = mShell->StyleSet()->AsServo()->ResolveRuleNode(elem, pseudoTag); - if (!ruleNode) { - return false; - } - return Servo_HasAuthorSpecifiedRules(ruleNode, - elem, - ruleTypeMask, - UseDocumentColors()); } + Element* elem = aFrame->GetContent()->AsElement(); + + MOZ_ASSERT(elem->GetPseudoElementType() == + aFrame->StyleContext()->GetPseudoType()); + MOZ_ASSERT(elem->HasServoData()); + return Servo_HasAuthorSpecifiedRules(elem, + aRuleTypeMask, + UseDocumentColors()); } gfxUserFontSet* nsPresContext::GetUserFontSet(bool aFlushUserFontSet) { return mDocument->GetUserFontSet(aFlushUserFontSet); }
--- a/layout/style/ServoBindingList.h +++ b/layout/style/ServoBindingList.h @@ -380,21 +380,17 @@ SERVO_BINDING_FUNC(Servo_NoteExplicitHin SERVO_BINDING_FUNC(Servo_TakeChangeHint, nsChangeHint, RawGeckoElementBorrowed element) SERVO_BINDING_FUNC(Servo_ResolveStyle, ServoComputedValuesStrong, RawGeckoElementBorrowed element, RawServoStyleSetBorrowed set, bool allow_stale) SERVO_BINDING_FUNC(Servo_ResolvePseudoStyle, ServoComputedValuesStrong, RawGeckoElementBorrowed element, nsIAtom* pseudo_tag, bool is_probe, RawServoStyleSetBorrowed set) -SERVO_BINDING_FUNC(Servo_ResolveRuleNode, RawServoRuleNodeStrong, - RawGeckoElementBorrowed element, nsIAtom* pseudo_tag, - RawServoStyleSetBorrowed set) SERVO_BINDING_FUNC(Servo_HasAuthorSpecifiedRules, bool, - RawServoRuleNodeBorrowed rule_node, RawGeckoElementBorrowed element, uint32_t rule_type_mask, bool author_colors_allowed) // Resolves style for an element or pseudo-element without processing pending // restyles first. The Element and its ancestors may be unstyled, have pending // restyles, or be in a display:none subtree. Styles are cached when possible, // though caching is not possible within display:none subtrees, and the styles
--- a/layout/style/ServoStyleSet.cpp +++ b/layout/style/ServoStyleSet.cpp @@ -555,23 +555,16 @@ ServoStyleSet::ResolveNonInheritingAnony RefPtr<nsStyleContext> retval = GetContext(computedValues.forget(), nullptr, aPseudoTag, CSSPseudoElementType::NonInheritingAnonBox, nullptr); cache = retval; return retval.forget(); } -already_AddRefed<RawServoRuleNode> -ServoStyleSet::ResolveRuleNode(dom::Element *aElement, nsIAtom *aPseudoTag) -{ - MOZ_ASSERT(aElement); - return Servo_ResolveRuleNode(aElement, aPseudoTag, mRawSet.get()).Consume(); -} - // manage the set of style sheets in the style set nsresult ServoStyleSet::AppendStyleSheet(SheetType aType, ServoStyleSheet* aSheet) { MOZ_ASSERT(aSheet); MOZ_ASSERT(aSheet->IsApplicable()); MOZ_ASSERT(nsStyleSet::IsCSSSheetType(aType));
--- a/layout/style/ServoStyleSet.h +++ b/layout/style/ServoStyleSet.h @@ -191,20 +191,16 @@ public: nsStyleContext* aParentContext); // Get a style context for an anonymous box that does not inherit style from // anything. aPseudoTag is the pseudo-tag to use and must be non-null. It // must be an anon box, and must be a non-inheriting one. already_AddRefed<nsStyleContext> ResolveNonInheritingAnonymousBoxStyle(nsIAtom* aPseudoTag); - // Get the rule node for a (pseudo-)element, resolving it lazily if needed. - already_AddRefed<RawServoRuleNode> - ResolveRuleNode(dom::Element *aElement, nsIAtom *aPseudoTag); - // manage the set of style sheets in the style set nsresult AppendStyleSheet(SheetType aType, ServoStyleSheet* aSheet); nsresult PrependStyleSheet(SheetType aType, ServoStyleSheet* aSheet); nsresult RemoveStyleSheet(SheetType aType, ServoStyleSheet* aSheet); nsresult ReplaceSheets(SheetType aType, const nsTArray<RefPtr<ServoStyleSheet>>& aNewSheets); nsresult InsertStyleSheetBefore(SheetType aType, ServoStyleSheet* aNewSheet,