CSSSegmentedFontFace::~CSSSegmentedFontFace()
{
pruneTable();
+#if !ENABLE(OILPAN)
for (FontFaceList::iterator it = m_fontFaces.begin(); it != m_fontFaces.end(); ++it)
(*it)->cssFontFace()->clearSegmentedFontFace();
+#endif
}
void CSSSegmentedFontFace::pruneTable()
pruneTable();
}
-void CSSSegmentedFontFace::addFontFace(PassRefPtr<FontFace> prpFontFace, bool cssConnected)
+void CSSSegmentedFontFace::addFontFace(PassRefPtrWillBeRawPtr<FontFace> prpFontFace, bool cssConnected)
{
- RefPtr<FontFace> fontFace = prpFontFace;
+ RefPtrWillBeRawPtr<FontFace> fontFace = prpFontFace;
pruneTable();
fontFace->cssFontFace()->setSegmentedFontFace(this);
if (cssConnected) {
}
}
-void CSSSegmentedFontFace::removeFontFace(PassRefPtr<FontFace> prpFontFace)
+void CSSSegmentedFontFace::removeFontFace(PassRefPtrWillBeRawPtr<FontFace> prpFontFace)
{
- RefPtr<FontFace> fontFace = prpFontFace;
+ RefPtrWillBeRawPtr<FontFace> fontFace = prpFontFace;
FontFaceList::iterator it = m_fontFaces.find(fontFace);
if (it == m_fontFaces.end())
return;
return true;
}
-void CSSSegmentedFontFace::willUseFontData(const FontDescription& fontDescription)
+void CSSSegmentedFontFace::willUseFontData(const FontDescription& fontDescription, UChar32 character)
{
- for (FontFaceList::iterator it = m_fontFaces.begin(); it != m_fontFaces.end(); ++it)
- (*it)->cssFontFace()->willUseFontData(fontDescription);
+ for (FontFaceList::reverse_iterator it = m_fontFaces.rbegin(); it != m_fontFaces.rend(); ++it) {
+ if ((*it)->loadStatus() != FontFace::Unloaded)
+ break;
+ if ((*it)->cssFontFace()->maybeScheduleFontLoad(fontDescription, character))
+ break;
+ }
}
bool CSSSegmentedFontFace::checkFont(const String& text) const
return true;
}
-void CSSSegmentedFontFace::match(const String& text, Vector<RefPtr<FontFace> >& faces) const
+void CSSSegmentedFontFace::match(const String& text, WillBeHeapVector<RefPtrWillBeMember<FontFace> >& faces) const
{
for (FontFaceList::const_iterator it = m_fontFaces.begin(); it != m_fontFaces.end(); ++it) {
if ((*it)->cssFontFace()->ranges().intersectsWith(text))
}
}
+void CSSSegmentedFontFace::trace(Visitor* visitor)
+{
+ visitor->trace(m_fontSelector);
+ visitor->trace(m_fontFaces);
+}
+
}