bool CSSSelector::isCompound() const { if (!validateSubSelector(this)) return false; const CSSSelector* prevSubSelector = this; const CSSSelector* subSelector = tagHistory(); while (subSelector) { if (!validateSubSelector(subSelector)) return false; prevSubSelector = subSelector; subSelector = subSelector->tagHistory(); } return true; }
static bool validateSelector(CSSSelector* selector) { ASSERT(selector); if (!validateSubSelector(selector)) return false; CSSSelector* prevSubSelector = selector; CSSSelector* subSelector = selector->tagHistory(); while (subSelector) { if (prevSubSelector->relation() != CSSSelector::SubSelector) return false; if (!validateSubSelector(subSelector)) return false; prevSubSelector = subSelector; subSelector = subSelector->tagHistory(); } return true; }