void CSSFontFaceSet::add(CSSFontFace& face) { ASSERT(!hasFace(face)); for (auto* client : m_clients) client->fontModified(); face.addClient(*this); m_cache.clear(); if (face.cssConnection()) m_faces.insert(m_facesPartitionIndex++, face); else m_faces.append(face); addToFacesLookupTable(face); if (face.status() == CSSFontFace::Status::Loading || face.status() == CSSFontFace::Status::TimedOut) incrementActiveCount(); }
void CSSFontFaceSet::remove(const CSSFontFace& face) { m_cache.clear(); for (auto* client : m_clients) client->fontModified(); if (face.families()) removeFromFacesLookupTable(face, *face.families()); for (size_t i = 0; i < m_faces.size(); ++i) { if (m_faces[i].ptr() == &face) { if (i < m_facesPartitionIndex) --m_facesPartitionIndex; m_faces[i]->removeClient(*this); m_faces.remove(i); if (face.status() == CSSFontFace::Status::Loading || face.status() == CSSFontFace::Status::TimedOut) decrementActiveCount(); return; } } ASSERT_NOT_REACHED(); }