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 80 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
91 | 91 |
92 static PassRefPtr<CSSValue> parseCSSValue(const String& s, CSSPropertyID propert
yID) | 92 static PassRefPtr<CSSValue> parseCSSValue(const String& s, CSSPropertyID propert
yID) |
93 { | 93 { |
94 if (s.isEmpty()) | 94 if (s.isEmpty()) |
95 return 0; | 95 return 0; |
96 RefPtr<MutableStylePropertySet> parsedStyle = MutableStylePropertySet::creat
e(); | 96 RefPtr<MutableStylePropertySet> parsedStyle = MutableStylePropertySet::creat
e(); |
97 CSSParser::parseValue(parsedStyle.get(), propertyID, s, true, HTMLStandardMo
de, 0); | 97 CSSParser::parseValue(parsedStyle.get(), propertyID, s, true, HTMLStandardMo
de, 0); |
98 return parsedStyle->getPropertyCSSValue(propertyID); | 98 return parsedStyle->getPropertyCSSValue(propertyID); |
99 } | 99 } |
100 | 100 |
101 PassRefPtr<FontFace> FontFace::create(const String& family, const String& source
, const Dictionary& descriptors, ExceptionState& exceptionState) | 101 PassRefPtr<FontFace> FontFace::create(const AtomicString& family, const String&
source, const Dictionary& descriptors, ExceptionState& exceptionState) |
102 { | 102 { |
103 RefPtr<CSSValue> src = parseCSSValue(source, CSSPropertySrc); | 103 RefPtr<CSSValue> src = parseCSSValue(source, CSSPropertySrc); |
104 if (!src || !src->isValueList()) { | 104 if (!src || !src->isValueList()) { |
105 exceptionState.throwUninformativeAndGenericDOMException(SyntaxError); | 105 exceptionState.throwUninformativeAndGenericDOMException(SyntaxError); |
106 return 0; | 106 return 0; |
107 } | 107 } |
108 | 108 |
109 RefPtr<FontFace> fontFace = adoptRef<FontFace>(new FontFace(src)); | 109 RefPtr<FontFace> fontFace = adoptRef<FontFace>(new FontFace(src)); |
110 fontFace->setFamily(family, exceptionState); | 110 fontFace->setFamily(family, exceptionState); |
111 if (exceptionState.hadException()) | 111 if (exceptionState.hadException()) |
(...skipping 172 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
284 return true; | 284 return true; |
285 } | 285 } |
286 | 286 |
287 bool FontFace::setFamilyValue(CSSValueList* familyList) | 287 bool FontFace::setFamilyValue(CSSValueList* familyList) |
288 { | 288 { |
289 // The font-family descriptor has to have exactly one family name. | 289 // The font-family descriptor has to have exactly one family name. |
290 if (familyList->length() != 1) | 290 if (familyList->length() != 1) |
291 return false; | 291 return false; |
292 | 292 |
293 CSSPrimitiveValue* familyValue = toCSSPrimitiveValue(familyList->itemWithout
BoundsCheck(0)); | 293 CSSPrimitiveValue* familyValue = toCSSPrimitiveValue(familyList->itemWithout
BoundsCheck(0)); |
294 String family; | 294 AtomicString family; |
295 if (familyValue->isString()) { | 295 if (familyValue->isString()) { |
296 family = familyValue->getStringValue(); | 296 family = AtomicString(familyValue->getStringValue()); |
297 } else if (familyValue->isValueID()) { | 297 } else if (familyValue->isValueID()) { |
298 // We need to use the raw text for all the generic family types, since @
font-face is a way of actually | 298 // We need to use the raw text for all the generic family types, since @
font-face is a way of actually |
299 // defining what font to use for those types. | 299 // defining what font to use for those types. |
300 switch (familyValue->getValueID()) { | 300 switch (familyValue->getValueID()) { |
301 case CSSValueSerif: | 301 case CSSValueSerif: |
302 family = FontFamilyNames::webkit_serif; | 302 family = FontFamilyNames::webkit_serif; |
303 break; | 303 break; |
304 case CSSValueSansSerif: | 304 case CSSValueSansSerif: |
305 family = FontFamilyNames::webkit_sans_serif; | 305 family = FontFamilyNames::webkit_sans_serif; |
306 break; | 306 break; |
(...skipping 224 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
531 unsigned numRanges = rangeList->length(); | 531 unsigned numRanges = rangeList->length(); |
532 for (unsigned i = 0; i < numRanges; i++) { | 532 for (unsigned i = 0; i < numRanges; i++) { |
533 CSSUnicodeRangeValue* range = toCSSUnicodeRangeValue(rangeList->item
WithoutBoundsCheck(i)); | 533 CSSUnicodeRangeValue* range = toCSSUnicodeRangeValue(rangeList->item
WithoutBoundsCheck(i)); |
534 cssFontFace->ranges().add(range->from(), range->to()); | 534 cssFontFace->ranges().add(range->from(), range->to()); |
535 } | 535 } |
536 } | 536 } |
537 return cssFontFace; | 537 return cssFontFace; |
538 } | 538 } |
539 | 539 |
540 } // namespace WebCore | 540 } // namespace WebCore |
OLD | NEW |