Index: Source/core/css/CSSSegmentedFontFace.cpp |
diff --git a/Source/core/css/CSSSegmentedFontFace.cpp b/Source/core/css/CSSSegmentedFontFace.cpp |
index 420368a25a25c494eb59d8f062b729abbc51ba01..2b00c80ba89cfe31cd470a535fc5a8ff945812c6 100644 |
--- a/Source/core/css/CSSSegmentedFontFace.cpp |
+++ b/Source/core/css/CSSSegmentedFontFace.cpp |
@@ -37,6 +37,9 @@ |
namespace WebCore { |
+DEFINE_GC_TYPE_MARKER(CSSSegmentedFontFace); |
+DEFINE_GC_TYPE_MARKER(CSSSegmentedFontFace::LoadFontCallback); |
+ |
CSSSegmentedFontFace::CSSSegmentedFontFace(CSSFontSelector* fontSelector) |
: m_fontSelector(fontSelector) |
{ |
@@ -47,7 +50,7 @@ CSSSegmentedFontFace::~CSSSegmentedFontFace() |
pruneTable(); |
unsigned size = m_fontFaces.size(); |
for (unsigned i = 0; i < size; i++) |
- m_fontFaces[i]->removedFromSegmentedFontFace(this); |
+ m_fontFaces[i]->removedFromSegmentedFontFace(Handle<CSSSegmentedFontFace>(this)); |
} |
void CSSSegmentedFontFace::pruneTable() |
@@ -70,26 +73,26 @@ bool CSSSegmentedFontFace::isValid() const |
return false; |
} |
-void CSSSegmentedFontFace::fontLoaded(CSSFontFace*) |
+void CSSSegmentedFontFace::fontLoaded(Handle<CSSFontFace>) |
{ |
pruneTable(); |
if (RuntimeEnabledFeatures::fontLoadEventsEnabled() && !isLoading()) { |
- Vector<RefPtr<LoadFontCallback> > callbacks; |
- m_callbacks.swap(callbacks); |
- for (size_t index = 0; index < callbacks.size(); ++index) { |
+ CollectionRoot<Vector<Member<LoadFontCallback> > > callbacks; |
+ m_callbacks.swap(*callbacks); |
+ for (size_t index = 0; index < callbacks->size(); ++index) { |
if (checkFont()) |
- callbacks[index]->notifyLoaded(this); |
+ callbacks->at(index)->notifyLoaded(Handle<CSSSegmentedFontFace>(this)); |
else |
- callbacks[index]->notifyError(this); |
+ callbacks->at(index)->notifyError(Handle<CSSSegmentedFontFace>(this)); |
} |
} |
} |
-void CSSSegmentedFontFace::appendFontFace(PassRefPtr<CSSFontFace> fontFace) |
+void CSSSegmentedFontFace::appendFontFace(Handle<CSSFontFace> fontFace) |
{ |
pruneTable(); |
- fontFace->addedToSegmentedFontFace(this); |
+ fontFace->addedToSegmentedFontFace(Handle<CSSSegmentedFontFace>(this)); |
m_fontFaces.append(fontFace); |
} |
@@ -167,7 +170,7 @@ bool CSSSegmentedFontFace::checkFont() const |
return true; |
} |
-void CSSSegmentedFontFace::loadFont(const FontDescription& fontDescription, PassRefPtr<LoadFontCallback> callback) |
+void CSSSegmentedFontFace::loadFont(const FontDescription& fontDescription, Handle<LoadFontCallback> callback) |
{ |
getFontData(fontDescription); // Kick off the load. |
@@ -175,10 +178,16 @@ void CSSSegmentedFontFace::loadFont(const FontDescription& fontDescription, Pass |
if (isLoading()) |
m_callbacks.append(callback); |
else if (checkFont()) |
- callback->notifyLoaded(this); |
+ callback->notifyLoaded(Handle<CSSSegmentedFontFace>(this)); |
else |
- callback->notifyError(this); |
+ callback->notifyError(Handle<CSSSegmentedFontFace>(this)); |
} |
} |
+void CSSSegmentedFontFace::accept(Visitor* visitor) const |
+{ |
+ visitor->visit(m_fontFaces); |
+ visitor->visit(m_callbacks); |
+} |
+ |
} |