void StyleSheetContents::findFontFaceRules( HeapVector<Member<const StyleRuleFontFace>>& fontFaceRules) { for (unsigned i = 0; i < m_importRules.size(); ++i) { if (!m_importRules[i]->styleSheet()) continue; m_importRules[i]->styleSheet()->findFontFaceRules(fontFaceRules); } findFontFaceRulesFromRules(childRules(), fontFaceRules); }
static void findFontFaceRulesFromRules(const WillBeHeapVector<RefPtrWillBeMember<StyleRuleBase> >& rules, WillBeHeapVector<RawPtrWillBeMember<const StyleRuleFontFace> >& fontFaceRules) { for (unsigned i = 0; i < rules.size(); ++i) { StyleRuleBase* rule = rules[i].get(); if (rule->isFontFaceRule()) { fontFaceRules.append(toStyleRuleFontFace(rule)); } else if (rule->isMediaRule()) { StyleRuleMedia* mediaRule = toStyleRuleMedia(rule); // We cannot know whether the media rule matches or not, but // for safety, remove @font-face in the media rule (if exists). findFontFaceRulesFromRules(mediaRule->childRules(), fontFaceRules); } } }