bool HTMLContentElement::Match(nsIContent* aContent) { if (!mValidSelector) { return false; } if (mSelectorList) { nsIDocument* doc = OwnerDoc(); ShadowRoot* containingShadow = GetContainingShadow(); nsIContent* host = containingShadow->GetHost(); TreeMatchContext matchingContext(false, nsRuleWalker::eRelevantLinkUnvisited, doc, TreeMatchContext::eNeverMatchVisited); doc->FlushPendingLinkUpdates(); matchingContext.SetHasSpecifiedScope(); matchingContext.AddScopeElement(host->AsElement()); if (!aContent->IsElement()) { return false; } return nsCSSRuleProcessor::SelectorListMatches(aContent->AsElement(), matchingContext, mSelectorList); } return true; }