Index: Source/core/css/CSSSegmentedFontFace.cpp |
diff --git a/Source/core/css/CSSSegmentedFontFace.cpp b/Source/core/css/CSSSegmentedFontFace.cpp |
index 3cc8fa56b3bf03986b80d1be9c3f5ae5d89c47e6..a2cad6411697ee17e780179e0b10cb63102cb9a7 100644 |
--- a/Source/core/css/CSSSegmentedFontFace.cpp |
+++ b/Source/core/css/CSSSegmentedFontFace.cpp |
@@ -46,16 +46,18 @@ CSSSegmentedFontFace::CSSSegmentedFontFace(CSSFontSelector* fontSelector) |
CSSSegmentedFontFace::~CSSSegmentedFontFace() |
{ |
- dispose(); |
+ pruneTable(); |
} |
+// FIXME(oilpan): Move CSSFontFaceSource and CSSFontSelector to the managed heap. |
+// Then all of CSSFontSelector, CSSSegmentedFontFace, CSSFontFace and CSSFontFaceSource |
+// die in the same round of GC, and thus we don't need to call dispose(). |
void CSSSegmentedFontFace::dispose() |
{ |
pruneTable(); |
unsigned size = m_fontFaces.size(); |
for (unsigned i = 0; i < size; i++) |
- m_fontFaces[i]->removedFromSegmentedFontFace(Handle<CSSSegmentedFontFace>(this)); |
- m_fontFaces.clear(); |
+ m_fontFaces[i]->dispose(); |
m_fontSelector = 0; |
} |
@@ -79,7 +81,7 @@ bool CSSSegmentedFontFace::isValid() const |
return false; |
} |
-void CSSSegmentedFontFace::fontLoaded(CSSFontFace*) |
+void CSSSegmentedFontFace::fontLoaded(Handle<CSSFontFace>) |
{ |
pruneTable(); |
@@ -95,7 +97,7 @@ void CSSSegmentedFontFace::fontLoaded(CSSFontFace*) |
} |
} |
-void CSSSegmentedFontFace::appendFontFace(PassRefPtr<CSSFontFace> fontFace) |
+void CSSSegmentedFontFace::appendFontFace(Handle<CSSFontFace> fontFace) |
{ |
pruneTable(); |
fontFace->addedToSegmentedFontFace(Handle<CSSSegmentedFontFace>(this)); |
@@ -190,4 +192,9 @@ void CSSSegmentedFontFace::loadFont(const FontDescription& fontDescription, Pass |
} |
} |
+void CSSSegmentedFontFace::accept(Visitor* visitor) const |
+{ |
+ visitor->visit(m_fontFaces); |
+} |
+ |
} |