[Font Loading] Crash when a single load request causes multiple fonts to fail loading
[WebKit-https.git] / Source / WebCore / css / CSSSegmentedFontFace.h
index 9179a09..946dfbc 100644 (file)
@@ -39,10 +39,13 @@ namespace WebCore {
 class CSSFontSelector;
 class FontDescription;
 
-class CSSSegmentedFontFace final : public CSSFontFace::Client {
+class CSSSegmentedFontFace final : public RefCounted<CSSSegmentedFontFace>, public CSSFontFace::Client {
     WTF_MAKE_FAST_ALLOCATED;
 public:
-    CSSSegmentedFontFace();
+    static Ref<CSSSegmentedFontFace> create()
+    {
+        return adoptRef(*new CSSSegmentedFontFace());
+    }
     ~CSSSegmentedFontFace();
 
     void appendFontFace(Ref<CSSFontFace>&&);
@@ -51,7 +54,12 @@ public:
 
     Vector<Ref<CSSFontFace>, 1>& constituentFaces() { return m_fontFaces; }
 
+    // CSSFontFace::Client needs to be able to be held in a RefPtr.
+    void ref() override { RefCounted<CSSSegmentedFontFace>::ref(); }
+    void deref() override { RefCounted<CSSSegmentedFontFace>::deref(); }
+
 private:
+    CSSSegmentedFontFace();
     void fontLoaded(CSSFontFace&) override;
 
     HashMap<FontDescriptionKey, FontRanges, FontDescriptionKeyHash, WTF::SimpleClassHashTraits<FontDescriptionKey>> m_cache;