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

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

Issue 1306823004: Split out String, URI and CustomIdent from CSSPrimitiveValue (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@split_out_attr_values
Patch Set: Rebase Created 5 years, 2 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
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 18 matching lines...) Expand all
29 */ 29 */
30 30
31 #include "config.h" 31 #include "config.h"
32 #include "core/css/FontFace.h" 32 #include "core/css/FontFace.h"
33 33
34 #include "bindings/core/v8/ExceptionState.h" 34 #include "bindings/core/v8/ExceptionState.h"
35 #include "bindings/core/v8/ScriptState.h" 35 #include "bindings/core/v8/ScriptState.h"
36 #include "bindings/core/v8/UnionTypesCore.h" 36 #include "bindings/core/v8/UnionTypesCore.h"
37 #include "core/CSSValueKeywords.h" 37 #include "core/CSSValueKeywords.h"
38 #include "core/css/BinaryDataFontFaceSource.h" 38 #include "core/css/BinaryDataFontFaceSource.h"
39 #include "core/css/CSSCustomIdentValue.h"
39 #include "core/css/CSSFontFace.h" 40 #include "core/css/CSSFontFace.h"
40 #include "core/css/CSSFontFaceSrcValue.h" 41 #include "core/css/CSSFontFaceSrcValue.h"
41 #include "core/css/CSSFontSelector.h" 42 #include "core/css/CSSFontSelector.h"
42 #include "core/css/CSSPrimitiveValue.h" 43 #include "core/css/CSSPrimitiveValue.h"
43 #include "core/css/CSSUnicodeRangeValue.h" 44 #include "core/css/CSSUnicodeRangeValue.h"
44 #include "core/css/CSSValueList.h" 45 #include "core/css/CSSValueList.h"
45 #include "core/css/FontFaceDescriptors.h" 46 #include "core/css/FontFaceDescriptors.h"
46 #include "core/css/LocalFontFaceSource.h" 47 #include "core/css/LocalFontFaceSource.h"
47 #include "core/css/RemoteFontFaceSource.h" 48 #include "core/css/RemoteFontFaceSource.h"
48 #include "core/css/StylePropertySet.h" 49 #include "core/css/StylePropertySet.h"
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after
105 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());
106 return fontFace.release(); 107 return fontFace.release();
107 } 108 }
108 109
109 PassRefPtrWillBeRawPtr<FontFace> FontFace::create(Document* document, const Styl eRuleFontFace* fontFaceRule) 110 PassRefPtrWillBeRawPtr<FontFace> FontFace::create(Document* document, const Styl eRuleFontFace* fontFaceRule)
110 { 111 {
111 const StylePropertySet& properties = fontFaceRule->properties(); 112 const StylePropertySet& properties = fontFaceRule->properties();
112 113
113 // 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.
114 RefPtrWillBeRawPtr<CSSValue> family = properties.getPropertyCSSValue(CSSProp ertyFontFamily); 115 RefPtrWillBeRawPtr<CSSValue> family = properties.getPropertyCSSValue(CSSProp ertyFontFamily);
115 if (!family || !family->isPrimitiveValue()) 116 if (!family || (!family->isCustomIdentValue() && !family->isPrimitiveValue() ))
116 return nullptr; 117 return nullptr;
117 RefPtrWillBeRawPtr<CSSValue> src = properties.getPropertyCSSValue(CSSPropert ySrc); 118 RefPtrWillBeRawPtr<CSSValue> src = properties.getPropertyCSSValue(CSSPropert ySrc);
118 if (!src || !src->isValueList()) 119 if (!src || !src->isValueList())
119 return nullptr; 120 return nullptr;
120 121
121 RefPtrWillBeRawPtr<FontFace> fontFace = adoptRefWillBeNoop(new FontFace(docu ment)); 122 RefPtrWillBeRawPtr<FontFace> fontFace = adoptRefWillBeNoop(new FontFace(docu ment));
122 123
123 if (fontFace->setFamilyValue(toCSSPrimitiveValue(family.get())) 124 if (fontFace->setFamilyValue(*family)
124 && fontFace->setPropertyFromStyle(properties, CSSPropertyFontStyle) 125 && fontFace->setPropertyFromStyle(properties, CSSPropertyFontStyle)
125 && fontFace->setPropertyFromStyle(properties, CSSPropertyFontWeight) 126 && fontFace->setPropertyFromStyle(properties, CSSPropertyFontWeight)
126 && fontFace->setPropertyFromStyle(properties, CSSPropertyFontStretch) 127 && fontFace->setPropertyFromStyle(properties, CSSPropertyFontStretch)
127 && fontFace->setPropertyFromStyle(properties, CSSPropertyUnicodeRange) 128 && fontFace->setPropertyFromStyle(properties, CSSPropertyUnicodeRange)
128 && fontFace->setPropertyFromStyle(properties, CSSPropertyFontVariant) 129 && fontFace->setPropertyFromStyle(properties, CSSPropertyFontVariant)
129 && fontFace->setPropertyFromStyle(properties, CSSPropertyWebkitFontFeatu reSettings) 130 && fontFace->setPropertyFromStyle(properties, CSSPropertyWebkitFontFeatu reSettings)
130 && !fontFace->family().isEmpty() 131 && !fontFace->family().isEmpty()
131 && fontFace->traits().bitfield()) { 132 && fontFace->traits().bitfield()) {
132 fontFace->initCSSFontFace(document, src); 133 fontFace->initCSSFontFace(document, src);
133 return fontFace.release(); 134 return fontFace.release();
(...skipping 129 matching lines...) Expand 10 before | Expand all | Expand 10 after
263 case CSSPropertyWebkitFontFeatureSettings: 264 case CSSPropertyWebkitFontFeatureSettings:
264 m_featureSettings = value; 265 m_featureSettings = value;
265 break; 266 break;
266 default: 267 default:
267 ASSERT_NOT_REACHED(); 268 ASSERT_NOT_REACHED();
268 return false; 269 return false;
269 } 270 }
270 return true; 271 return true;
271 } 272 }
272 273
273 bool FontFace::setFamilyValue(CSSPrimitiveValue* familyValue) 274 bool FontFace::setFamilyValue(const CSSValue& familyValue)
274 { 275 {
275 AtomicString family; 276 AtomicString family;
276 if (familyValue->isCustomIdent()) { 277 if (familyValue.isCustomIdentValue()) {
277 family = AtomicString(familyValue->getStringValue()); 278 family = AtomicString(toCSSCustomIdentValue(familyValue).value());
278 } else if (familyValue->isValueID()) { 279 } else if (toCSSPrimitiveValue(familyValue).isValueID()) {
279 // We need to use the raw text for all the generic family types, since @ font-face is a way of actually 280 // We need to use the raw text for all the generic family types, since @ font-face is a way of actually
280 // defining what font to use for those types. 281 // defining what font to use for those types.
281 switch (familyValue->getValueID()) { 282 switch (toCSSPrimitiveValue(familyValue).getValueID()) {
282 case CSSValueSerif: 283 case CSSValueSerif:
283 family = FontFamilyNames::webkit_serif; 284 family = FontFamilyNames::webkit_serif;
284 break; 285 break;
285 case CSSValueSansSerif: 286 case CSSValueSansSerif:
286 family = FontFamilyNames::webkit_sans_serif; 287 family = FontFamilyNames::webkit_sans_serif;
287 break; 288 break;
288 case CSSValueCursive: 289 case CSSValueCursive:
289 family = FontFamilyNames::webkit_cursive; 290 family = FontFamilyNames::webkit_cursive;
290 break; 291 break;
291 case CSSValueFantasy: 292 case CSSValueFantasy:
(...skipping 320 matching lines...) Expand 10 before | Expand all | Expand 10 after
612 { 613 {
613 return m_cssFontFace->hadBlankText(); 614 return m_cssFontFace->hadBlankText();
614 } 615 }
615 616
616 bool FontFace::hasPendingActivity() const 617 bool FontFace::hasPendingActivity() const
617 { 618 {
618 return m_status == Loading && executionContext() && !executionContext()->act iveDOMObjectsAreStopped(); 619 return m_status == Loading && executionContext() && !executionContext()->act iveDOMObjectsAreStopped();
619 } 620 }
620 621
621 } // namespace blink 622 } // namespace blink
OLDNEW
« no previous file with comments | « third_party/WebKit/Source/core/css/FontFace.h ('k') | third_party/WebKit/Source/core/css/RuleFeature.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698