Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(279)

Side by Side Diff: Source/core/css/FontFace.cpp

Issue 170283019: Change various helper classes to transition types to get CSSValue entirely onto the gc heap. (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Rebase and revert member to persistent in StorageEvent Created 6 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
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 89 matching lines...) Expand 10 before | Expand all | Expand 10 after
100 } 100 }
101 101
102 PassRefPtr<FontFace> FontFace::create(ExecutionContext* context, const AtomicStr ing& family, const String& source, const Dictionary& descriptors, ExceptionState & exceptionState) 102 PassRefPtr<FontFace> FontFace::create(ExecutionContext* context, const AtomicStr ing& family, const String& source, const Dictionary& descriptors, ExceptionState & exceptionState)
103 { 103 {
104 RefPtrWillBeRawPtr<CSSValue> src = parseCSSValue(toDocument(context), source , CSSPropertySrc); 104 RefPtrWillBeRawPtr<CSSValue> src = parseCSSValue(toDocument(context), source , CSSPropertySrc);
105 if (!src || !src->isValueList()) { 105 if (!src || !src->isValueList()) {
106 exceptionState.throwDOMException(SyntaxError, "The source provided ('" + source + "') could not be parsed as a value list."); 106 exceptionState.throwDOMException(SyntaxError, "The source provided ('" + source + "') could not be parsed as a value list.");
107 return nullptr; 107 return nullptr;
108 } 108 }
109 109
110 RefPtr<FontFace> fontFace = adoptRef<FontFace>(new FontFace(src)); 110 RefPtr<FontFace> fontFace = adoptRefWillBeRefCountedGarbageCollected<FontFac e>(new FontFace(src));
111 fontFace->setFamily(context, family, exceptionState); 111 fontFace->setFamily(context, family, exceptionState);
112 if (exceptionState.hadException()) 112 if (exceptionState.hadException())
113 return nullptr; 113 return nullptr;
114 114
115 String value; 115 String value;
116 if (descriptors.get("style", value)) { 116 if (descriptors.get("style", value)) {
117 fontFace->setStyle(context, value, exceptionState); 117 fontFace->setStyle(context, value, exceptionState);
118 if (exceptionState.hadException()) 118 if (exceptionState.hadException())
119 return nullptr; 119 return nullptr;
120 } 120 }
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
153 const StylePropertySet& properties = fontFaceRule->properties(); 153 const StylePropertySet& properties = fontFaceRule->properties();
154 154
155 // Obtain the font-family property and the src property. Both must be define d. 155 // Obtain the font-family property and the src property. Both must be define d.
156 RefPtrWillBeRawPtr<CSSValue> family = properties.getPropertyCSSValue(CSSProp ertyFontFamily); 156 RefPtrWillBeRawPtr<CSSValue> family = properties.getPropertyCSSValue(CSSProp ertyFontFamily);
157 if (!family || !family->isValueList()) 157 if (!family || !family->isValueList())
158 return nullptr; 158 return nullptr;
159 RefPtrWillBeRawPtr<CSSValue> src = properties.getPropertyCSSValue(CSSPropert ySrc); 159 RefPtrWillBeRawPtr<CSSValue> src = properties.getPropertyCSSValue(CSSPropert ySrc);
160 if (!src || !src->isValueList()) 160 if (!src || !src->isValueList())
161 return nullptr; 161 return nullptr;
162 162
163 RefPtr<FontFace> fontFace = adoptRef<FontFace>(new FontFace(src)); 163 RefPtr<FontFace> fontFace = adoptRefWillBeRefCountedGarbageCollected<FontFac e>(new FontFace(src));
164 164
165 if (fontFace->setFamilyValue(toCSSValueList(family.get())) 165 if (fontFace->setFamilyValue(toCSSValueList(family.get()))
166 && fontFace->setPropertyFromStyle(properties, CSSPropertyFontStyle) 166 && fontFace->setPropertyFromStyle(properties, CSSPropertyFontStyle)
167 && fontFace->setPropertyFromStyle(properties, CSSPropertyFontWeight) 167 && fontFace->setPropertyFromStyle(properties, CSSPropertyFontWeight)
168 && fontFace->setPropertyFromStyle(properties, CSSPropertyFontStretch) 168 && fontFace->setPropertyFromStyle(properties, CSSPropertyFontStretch)
169 && fontFace->setPropertyFromStyle(properties, CSSPropertyUnicodeRange) 169 && fontFace->setPropertyFromStyle(properties, CSSPropertyUnicodeRange)
170 && fontFace->setPropertyFromStyle(properties, CSSPropertyFontVariant) 170 && fontFace->setPropertyFromStyle(properties, CSSPropertyFontVariant)
171 && fontFace->setPropertyFromStyle(properties, CSSPropertyWebkitFontFeatu reSettings) 171 && fontFace->setPropertyFromStyle(properties, CSSPropertyWebkitFontFeatu reSettings)
172 && !fontFace->family().isEmpty() 172 && !fontFace->family().isEmpty()
173 && fontFace->traitsMask()) { 173 && fontFace->traitsMask()) {
(...skipping 272 matching lines...) Expand 10 before | Expand all | Expand 10 after
446 traitsMask |= FontWeight100Mask; 446 traitsMask |= FontWeight100Mask;
447 break; 447 break;
448 default: 448 default:
449 ASSERT_NOT_REACHED(); 449 ASSERT_NOT_REACHED();
450 break; 450 break;
451 } 451 }
452 } else { 452 } else {
453 traitsMask |= FontWeight400Mask; 453 traitsMask |= FontWeight400Mask;
454 } 454 }
455 455
456 if (RefPtr<CSSValue> fontVariant = m_variant) { 456 if (RefPtrWillBeRawPtr<CSSValue> fontVariant = m_variant) {
457 // font-variant descriptor can be a value list. 457 // font-variant descriptor can be a value list.
458 if (fontVariant->isPrimitiveValue()) { 458 if (fontVariant->isPrimitiveValue()) {
459 RefPtrWillBeRawPtr<CSSValueList> list = CSSValueList::createCommaSep arated(); 459 RefPtrWillBeRawPtr<CSSValueList> list = CSSValueList::createCommaSep arated();
460 list->append(fontVariant); 460 list->append(fontVariant);
461 fontVariant = list; 461 fontVariant = list;
462 } else if (!fontVariant->isValueList()) { 462 } else if (!fontVariant->isValueList()) {
463 return 0; 463 return 0;
464 } 464 }
465 465
466 CSSValueList* variantList = toCSSValueList(fontVariant.get()); 466 CSSValueList* variantList = toCSSValueList(fontVariant.get());
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after
532 532
533 if (source) { 533 if (source) {
534 #if ENABLE(SVG_FONTS) 534 #if ENABLE(SVG_FONTS)
535 source->setSVGFontFaceElement(item->svgFontFaceElement()); 535 source->setSVGFontFaceElement(item->svgFontFaceElement());
536 #endif 536 #endif
537 m_cssFontFace->addSource(source.release()); 537 m_cssFontFace->addSource(source.release());
538 } 538 }
539 } 539 }
540 } 540 }
541 541
542 void FontFace::trace(Visitor* visitor)
543 {
544 visitor->trace(m_src);
545 visitor->trace(m_style);
546 visitor->trace(m_weight);
547 visitor->trace(m_stretch);
548 visitor->trace(m_unicodeRange);
549 visitor->trace(m_variant);
550 visitor->trace(m_featureSettings);
551 }
552
542 } // namespace WebCore 553 } // namespace WebCore
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698