PassRefPtrWillBeRawPtr<StyleRuleSupports> CSSParserImpl::consumeSupportsRule(CSSParserTokenRange prelude, CSSParserTokenRange block) { CSSSupportsParser::SupportsResult supported = CSSSupportsParser::supportsCondition(prelude, *this); if (supported == CSSSupportsParser::Invalid) return nullptr; // Parse error, invalid @supports condition if (m_observerWrapper) { m_observerWrapper->observer().startRuleHeader(StyleRule::Supports, m_observerWrapper->startOffset(prelude)); m_observerWrapper->observer().endRuleHeader(m_observerWrapper->endOffset(prelude)); m_observerWrapper->observer().startRuleBody(m_observerWrapper->previousTokenStartOffset(block)); } WillBeHeapVector<RefPtrWillBeMember<StyleRuleBase>> rules; consumeRuleList(block, RegularRuleList, [&rules](PassRefPtrWillBeRawPtr<StyleRuleBase> rule) { rules.append(rule); }); if (m_observerWrapper) m_observerWrapper->observer().endRuleBody(m_observerWrapper->endOffset(block), false); return StyleRuleSupports::create(prelude.serialize().stripWhiteSpace(), supported, rules); }