OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 2013 Google Inc. All rights reserved. | 2 * Copyright (C) 2013 Google Inc. All rights reserved. |
3 * | 3 * |
4 * Redistribution and use in source and binary forms, with or without | 4 * Redistribution and use in source and binary forms, with or without |
5 * modification, are permitted provided that the following conditions are | 5 * modification, are permitted provided that the following conditions are |
6 * met: | 6 * met: |
7 * | 7 * |
8 * * Redistributions of source code must retain the above copyright | 8 * * Redistributions of source code must retain the above copyright |
9 * notice, this list of conditions and the following disclaimer. | 9 * notice, this list of conditions and the following disclaimer. |
10 * * Redistributions in binary form must reproduce the above | 10 * * Redistributions in binary form must reproduce the above |
(...skipping 17 matching lines...) Expand all Loading... |
28 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | 28 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
29 */ | 29 */ |
30 | 30 |
31 #include "core/css/FontFace.h" | 31 #include "core/css/FontFace.h" |
32 | 32 |
33 #include "bindings/core/v8/ExceptionState.h" | 33 #include "bindings/core/v8/ExceptionState.h" |
34 #include "bindings/core/v8/ScriptState.h" | 34 #include "bindings/core/v8/ScriptState.h" |
35 #include "bindings/core/v8/UnionTypesCore.h" | 35 #include "bindings/core/v8/UnionTypesCore.h" |
36 #include "core/CSSValueKeywords.h" | 36 #include "core/CSSValueKeywords.h" |
37 #include "core/css/BinaryDataFontFaceSource.h" | 37 #include "core/css/BinaryDataFontFaceSource.h" |
38 #include "core/css/CSSCustomIdentValue.h" | |
39 #include "core/css/CSSFontFace.h" | 38 #include "core/css/CSSFontFace.h" |
40 #include "core/css/CSSFontFaceSrcValue.h" | 39 #include "core/css/CSSFontFaceSrcValue.h" |
| 40 #include "core/css/CSSFontFamilyValue.h" |
41 #include "core/css/CSSFontSelector.h" | 41 #include "core/css/CSSFontSelector.h" |
42 #include "core/css/CSSPrimitiveValue.h" | 42 #include "core/css/CSSPrimitiveValue.h" |
43 #include "core/css/CSSUnicodeRangeValue.h" | 43 #include "core/css/CSSUnicodeRangeValue.h" |
44 #include "core/css/CSSValueList.h" | 44 #include "core/css/CSSValueList.h" |
45 #include "core/css/FontFaceDescriptors.h" | 45 #include "core/css/FontFaceDescriptors.h" |
46 #include "core/css/LocalFontFaceSource.h" | 46 #include "core/css/LocalFontFaceSource.h" |
47 #include "core/css/RemoteFontFaceSource.h" | 47 #include "core/css/RemoteFontFaceSource.h" |
48 #include "core/css/StylePropertySet.h" | 48 #include "core/css/StylePropertySet.h" |
49 #include "core/css/StyleRule.h" | 49 #include "core/css/StyleRule.h" |
50 #include "core/css/parser/CSSParser.h" | 50 #include "core/css/parser/CSSParser.h" |
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
106 fontFace->initCSSFontFace(static_cast<const unsigned char*>(source->baseAddr
ess()), source->byteLength()); | 106 fontFace->initCSSFontFace(static_cast<const unsigned char*>(source->baseAddr
ess()), source->byteLength()); |
107 return fontFace.release(); | 107 return fontFace.release(); |
108 } | 108 } |
109 | 109 |
110 PassRefPtrWillBeRawPtr<FontFace> FontFace::create(Document* document, const Styl
eRuleFontFace* fontFaceRule) | 110 PassRefPtrWillBeRawPtr<FontFace> FontFace::create(Document* document, const Styl
eRuleFontFace* fontFaceRule) |
111 { | 111 { |
112 const StylePropertySet& properties = fontFaceRule->properties(); | 112 const StylePropertySet& properties = fontFaceRule->properties(); |
113 | 113 |
114 // Obtain the font-family property and the src property. Both must be define
d. | 114 // Obtain the font-family property and the src property. Both must be define
d. |
115 RefPtrWillBeRawPtr<CSSValue> family = properties.getPropertyCSSValue(CSSProp
ertyFontFamily); | 115 RefPtrWillBeRawPtr<CSSValue> family = properties.getPropertyCSSValue(CSSProp
ertyFontFamily); |
116 if (!family || (!family->isCustomIdentValue() && !family->isPrimitiveValue()
)) | 116 if (!family || (!family->isFontFamilyValue() && !family->isPrimitiveValue())
) |
117 return nullptr; | 117 return nullptr; |
118 RefPtrWillBeRawPtr<CSSValue> src = properties.getPropertyCSSValue(CSSPropert
ySrc); | 118 RefPtrWillBeRawPtr<CSSValue> src = properties.getPropertyCSSValue(CSSPropert
ySrc); |
119 if (!src || !src->isValueList()) | 119 if (!src || !src->isValueList()) |
120 return nullptr; | 120 return nullptr; |
121 | 121 |
122 RefPtrWillBeRawPtr<FontFace> fontFace = adoptRefWillBeNoop(new FontFace(docu
ment)); | 122 RefPtrWillBeRawPtr<FontFace> fontFace = adoptRefWillBeNoop(new FontFace(docu
ment)); |
123 | 123 |
124 if (fontFace->setFamilyValue(*family) | 124 if (fontFace->setFamilyValue(*family) |
125 && fontFace->setPropertyFromStyle(properties, CSSPropertyFontStyle) | 125 && fontFace->setPropertyFromStyle(properties, CSSPropertyFontStyle) |
126 && fontFace->setPropertyFromStyle(properties, CSSPropertyFontWeight) | 126 && fontFace->setPropertyFromStyle(properties, CSSPropertyFontWeight) |
(...skipping 144 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
271 default: | 271 default: |
272 ASSERT_NOT_REACHED(); | 272 ASSERT_NOT_REACHED(); |
273 return false; | 273 return false; |
274 } | 274 } |
275 return true; | 275 return true; |
276 } | 276 } |
277 | 277 |
278 bool FontFace::setFamilyValue(const CSSValue& familyValue) | 278 bool FontFace::setFamilyValue(const CSSValue& familyValue) |
279 { | 279 { |
280 AtomicString family; | 280 AtomicString family; |
281 if (familyValue.isCustomIdentValue()) { | 281 if (familyValue.isFontFamilyValue()) { |
282 family = AtomicString(toCSSCustomIdentValue(familyValue).value()); | 282 family = AtomicString(toCSSFontFamilyValue(familyValue).value()); |
283 } else if (toCSSPrimitiveValue(familyValue).isValueID()) { | 283 } else if (toCSSPrimitiveValue(familyValue).isValueID()) { |
284 // We need to use the raw text for all the generic family types, since @
font-face is a way of actually | 284 // We need to use the raw text for all the generic family types, since @
font-face is a way of actually |
285 // defining what font to use for those types. | 285 // defining what font to use for those types. |
286 switch (toCSSPrimitiveValue(familyValue).getValueID()) { | 286 switch (toCSSPrimitiveValue(familyValue).getValueID()) { |
287 case CSSValueSerif: | 287 case CSSValueSerif: |
288 family = FontFamilyNames::webkit_serif; | 288 family = FontFamilyNames::webkit_serif; |
289 break; | 289 break; |
290 case CSSValueSansSerif: | 290 case CSSValueSansSerif: |
291 family = FontFamilyNames::webkit_sans_serif; | 291 family = FontFamilyNames::webkit_sans_serif; |
292 break; | 292 break; |
(...skipping 350 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
643 { | 643 { |
644 return m_cssFontFace->hadBlankText(); | 644 return m_cssFontFace->hadBlankText(); |
645 } | 645 } |
646 | 646 |
647 bool FontFace::hasPendingActivity() const | 647 bool FontFace::hasPendingActivity() const |
648 { | 648 { |
649 return m_status == Loading && getExecutionContext() && !getExecutionContext(
)->activeDOMObjectsAreStopped(); | 649 return m_status == Loading && getExecutionContext() && !getExecutionContext(
)->activeDOMObjectsAreStopped(); |
650 } | 650 } |
651 | 651 |
652 } // namespace blink | 652 } // namespace blink |
OLD | NEW |