| Index: third_party/WebKit/Source/core/css/FontFace.cpp
|
| diff --git a/third_party/WebKit/Source/core/css/FontFace.cpp b/third_party/WebKit/Source/core/css/FontFace.cpp
|
| index 6aedc0bec59bddd45a7eab9b816121aa380ecc4a..90bb5a979b36a1e56feb59a8214f5161d5e2bde1 100644
|
| --- a/third_party/WebKit/Source/core/css/FontFace.cpp
|
| +++ b/third_party/WebKit/Source/core/css/FontFace.cpp
|
| @@ -128,6 +128,7 @@ PassRefPtrWillBeRawPtr<FontFace> FontFace::create(Document* document, const Styl
|
| && fontFace->setPropertyFromStyle(properties, CSSPropertyUnicodeRange)
|
| && fontFace->setPropertyFromStyle(properties, CSSPropertyFontVariant)
|
| && fontFace->setPropertyFromStyle(properties, CSSPropertyFontFeatureSettings)
|
| + && fontFace->setPropertyFromStyle(properties, CSSPropertyFontDisplay)
|
| && !fontFace->family().isEmpty()
|
| && fontFace->traits().bitfield()) {
|
| fontFace->initCSSFontFace(document, src);
|
| @@ -264,6 +265,9 @@ bool FontFace::setPropertyValue(PassRefPtrWillBeRawPtr<CSSValue> value, CSSPrope
|
| case CSSPropertyFontFeatureSettings:
|
| m_featureSettings = value;
|
| break;
|
| + case CSSPropertyFontDisplay:
|
| + m_display = value;
|
| + break;
|
| default:
|
| ASSERT_NOT_REACHED();
|
| return false;
|
| @@ -528,6 +532,27 @@ FontTraits FontFace::traits() const
|
| return FontTraits(style, variant, weight, stretch);
|
| }
|
|
|
| +static FontDisplay CSSValueToFontDisplay(CSSValue* value)
|
| +{
|
| + if (value && value->isPrimitiveValue()) {
|
| + switch (toCSSPrimitiveValue(value)->getValueID()) {
|
| + case CSSValueAuto:
|
| + return FontDisplayAuto;
|
| + case CSSValueBlock:
|
| + return FontDisplayBlock;
|
| + case CSSValueSwap:
|
| + return FontDisplaySwap;
|
| + case CSSValueFallback:
|
| + return FontDisplayFallback;
|
| + case CSSValueOptional:
|
| + return FontDisplayOptional;
|
| + default:
|
| + break;
|
| + }
|
| + }
|
| + return FontDisplayAuto;
|
| +}
|
| +
|
| static PassOwnPtrWillBeRawPtr<CSSFontFace> createCSSFontFace(FontFace* fontFace, CSSValue* unicodeRange)
|
| {
|
| Vector<CSSFontFace::UnicodeRange> ranges;
|
| @@ -566,7 +591,7 @@ void FontFace::initCSSFontFace(Document* document, PassRefPtrWillBeRawPtr<CSSVal
|
| FontResource* fetched = item->fetch(document);
|
| if (fetched) {
|
| FontLoader* fontLoader = document->styleEngine().fontSelector()->fontLoader();
|
| - source = adoptPtrWillBeNoop(new RemoteFontFaceSource(fetched, fontLoader));
|
| + source = adoptPtrWillBeNoop(new RemoteFontFaceSource(fetched, fontLoader, CSSValueToFontDisplay(m_display.get())));
|
| }
|
| }
|
| } else {
|
| @@ -601,6 +626,7 @@ DEFINE_TRACE(FontFace)
|
| visitor->trace(m_unicodeRange);
|
| visitor->trace(m_variant);
|
| visitor->trace(m_featureSettings);
|
| + visitor->trace(m_display);
|
| visitor->trace(m_error);
|
| visitor->trace(m_loadedProperty);
|
| visitor->trace(m_cssFontFace);
|
|
|