CSSRule* CSSRuleList::item(unsigned index) { if (m_list) { StyleBase* rule = m_list->item(index); ASSERT(!rule || rule->isRule()); return static_cast<CSSRule*>(rule); } if (index < m_lstCSSRules.size()) return m_lstCSSRules[index].get(); return 0; }
CSSRuleList::CSSRuleList(StyleList* list, bool omitCharsetRules) { m_list = list; if (list && omitCharsetRules) { m_list = 0; unsigned len = list->length(); for (unsigned i = 0; i < len; ++i) { StyleBase* style = list->item(i); if (style->isRule() && !style->isCharsetRule()) append(static_cast<CSSRule*>(style)); } } }
Document* CSSStyleSheet::document() { StyleBase* styleObject = this; while (styleObject) { if (styleObject->isCSSStyleSheet()) { Node* ownerNode = static_cast<CSSStyleSheet*>(styleObject)->ownerNode(); if (ownerNode) return ownerNode->document(); } if (styleObject->isRule()) styleObject = static_cast<CSSRule*>(styleObject)->parentStyleSheet(); else styleObject = styleObject->parent(); } return 0; }
void CSSStyleSheet::addSubresourceStyleURLs(ListHashSet<KURL>& urls) { Deque<CSSStyleSheet*> styleSheetQueue; styleSheetQueue.append(this); while (!styleSheetQueue.isEmpty()) { CSSStyleSheet* styleSheet = styleSheetQueue.takeFirst(); for (unsigned i = 0; i < styleSheet->length(); ++i) { StyleBase* styleBase = styleSheet->item(i); if (!styleBase->isRule()) continue; CSSRule* rule = static_cast<CSSRule*>(styleBase); if (rule->isImportRule()) { if (CSSStyleSheet* ruleStyleSheet = static_cast<CSSImportRule*>(rule)->styleSheet()) styleSheetQueue.append(ruleStyleSheet); } rule->addSubresourceStyleURLs(urls); } } }