bool HTMLContentElement::validateSelect() const { ASSERT(!m_shouldParseSelect); if (m_select.isNull() || m_select.isEmpty()) return true; if (!m_selectorList.isValid()) return false; // FIXME(sky): Should we allow pseudo classes in select? bool allowAnyPseudoClasses = false; for (const CSSSelector* selector = m_selectorList.first(); selector; selector = m_selectorList.next(*selector)) { if (!selector->isCompound()) return false; if (allowAnyPseudoClasses) continue; for (const CSSSelector* subSelector = selector; subSelector; subSelector = subSelector->tagHistory()) { if (includesDisallowedPseudoClass(*subSelector)) return false; } } return true; }
bool HTMLContentElement::validateSelect() const { ASSERT(!m_shouldParseSelect); if (m_select.isNull() || m_select.isEmpty()) return true; if (!m_selectorList.isValid()) return false; bool allowAnyPseudoClasses = RuntimeEnabledFeatures::pseudoClassesInMatchingCriteriaInAuthorShadowTreesEnabled() || (containingShadowRoot() && containingShadowRoot()->type() == ShadowRoot::UserAgentShadowRoot); for (const CSSSelector* selector = m_selectorList.first(); selector; selector = m_selectorList.next(*selector)) { if (!selector->isCompound()) return false; if (allowAnyPseudoClasses) continue; for (const CSSSelector* subSelector = selector; subSelector; subSelector = subSelector->tagHistory()) { if (includesDisallowedPseudoClass(*subSelector)) return false; } } return true; }