void CSSFontFace::fontLoaded(CSSFontFaceSource* source) { if (source != m_activeSource) return; // FIXME: Can we assert that m_segmentedFontFaces is not empty? That may // require stopping in-progress font loading when the last // CSSSegmentedFontFace is removed. if (m_segmentedFontFaces.isEmpty()) return; // Use one of the CSSSegmentedFontFaces' font selector. They all have // the same font selector, so it's wasteful to store it in the CSSFontFace. CSSFontSelector* fontSelector = (*m_segmentedFontFaces.begin())->fontSelector(); fontSelector->fontLoaded(); #if ENABLE(FONT_LOAD_EVENTS) if (RuntimeEnabledFeatures::sharedFeatures().fontLoadEventsEnabled() && m_loadState == Loading) { if (source->ensureFontData()) notifyFontLoader(Loaded); else if (!isValid()) notifyFontLoader(Error); } #endif HashSet<CSSSegmentedFontFace*>::iterator end = m_segmentedFontFaces.end(); for (HashSet<CSSSegmentedFontFace*>::iterator it = m_segmentedFontFaces.begin(); it != end; ++it) (*it)->fontLoaded(this); #if ENABLE(FONT_LOAD_EVENTS) if (RuntimeEnabledFeatures::sharedFeatures().fontLoadEventsEnabled()) notifyLoadingDone(); #endif }
void CSSFontFace::fontLoaded(CSSFontFaceSource* source) { if (source != m_activeSource) return; // FIXME: Can we assert that m_segmentedFontFaces is not empty? That may // require stopping in-progress font loading when the last // CSSSegmentedFontFace is removed. if (m_segmentedFontFaces.isEmpty()) return; HashSet<CSSSegmentedFontFace*>::iterator end = m_segmentedFontFaces.end(); for (HashSet<CSSSegmentedFontFace*>::iterator it = m_segmentedFontFaces.begin(); it != end; ++it) (*it)->fontLoaded(this); // Use one of the CSSSegmentedFontFaces' font selector. They all have // the same font selector, so it's wasteful to store it in the CSSFontFace. CSSFontSelector* fontSelector = (*m_segmentedFontFaces.begin())->fontSelector(); fontSelector->fontLoaded(); }