void FontFaceCache::addFontFace(CSSFontSelector* cssFontSelector, RawPtr<FontFace> prpFontFace, bool cssConnected) { RawPtr<FontFace> fontFace = prpFontFace; FamilyToTraitsMap::AddResult traitsResult = m_fontFaces.add(fontFace->family(), nullptr); if (!traitsResult.storedValue->value) traitsResult.storedValue->value = new TraitsMap; TraitsMap::AddResult segmentedFontFaceResult = traitsResult.storedValue->value->add(fontFace->traits().bitfield(), nullptr); if (!segmentedFontFaceResult.storedValue->value) segmentedFontFaceResult.storedValue->value = CSSSegmentedFontFace::create(cssFontSelector, fontFace->traits()); segmentedFontFaceResult.storedValue->value->addFontFace(fontFace, cssConnected); if (cssConnected) m_cssConnectedFontFaces.add(fontFace); m_fonts.remove(fontFace->family()); ++m_version; }