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

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

Issue 2346193002: Split CSSPrimitiveValue into CSSPrimitiveValue and CSSIdentifierValue (Closed)
Patch Set: Rebase please work Created 4 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 21 matching lines...) Expand all
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/StringOrArrayBufferOrArrayBufferView.h" 35 #include "bindings/core/v8/StringOrArrayBufferOrArrayBufferView.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/CSSFontFace.h" 38 #include "core/css/CSSFontFace.h"
39 #include "core/css/CSSFontFaceSrcValue.h" 39 #include "core/css/CSSFontFaceSrcValue.h"
40 #include "core/css/CSSFontFamilyValue.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/CSSIdentifierValue.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"
51 #include "core/dom/DOMArrayBuffer.h" 51 #include "core/dom/DOMArrayBuffer.h"
52 #include "core/dom/DOMArrayBufferView.h" 52 #include "core/dom/DOMArrayBufferView.h"
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after
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; 107 return fontFace;
108 } 108 }
109 109
110 FontFace* FontFace::create(Document* document, const StyleRuleFontFace* fontFace Rule) 110 FontFace* FontFace::create(Document* document, const StyleRuleFontFace* fontFace Rule)
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 const CSSValue* family = properties.getPropertyCSSValue(CSSPropertyFontFamil y); 115 const CSSValue* family = properties.getPropertyCSSValue(CSSPropertyFontFamil y);
116 if (!family || (!family->isFontFamilyValue() && !family->isPrimitiveValue()) ) 116 if (!family || (!family->isFontFamilyValue() && !family->isIdentifierValue() ))
117 return nullptr; 117 return nullptr;
118 const CSSValue* src = properties.getPropertyCSSValue(CSSPropertySrc); 118 const CSSValue* src = properties.getPropertyCSSValue(CSSPropertySrc);
119 if (!src || !src->isValueList()) 119 if (!src || !src->isValueList())
120 return nullptr; 120 return nullptr;
121 121
122 FontFace* fontFace = new FontFace(document); 122 FontFace* fontFace = new FontFace(document);
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 148 matching lines...) Expand 10 before | Expand all | Expand 10 after
275 return false; 275 return false;
276 } 276 }
277 return true; 277 return true;
278 } 278 }
279 279
280 bool FontFace::setFamilyValue(const CSSValue& familyValue) 280 bool FontFace::setFamilyValue(const CSSValue& familyValue)
281 { 281 {
282 AtomicString family; 282 AtomicString family;
283 if (familyValue.isFontFamilyValue()) { 283 if (familyValue.isFontFamilyValue()) {
284 family = AtomicString(toCSSFontFamilyValue(familyValue).value()); 284 family = AtomicString(toCSSFontFamilyValue(familyValue).value());
285 } else if (toCSSPrimitiveValue(familyValue).isValueID()) { 285 } else if (familyValue.isIdentifierValue()) {
286 // We need to use the raw text for all the generic family types, since @ font-face is a way of actually 286 // We need to use the raw text for all the generic family types, since @ font-face is a way of actually
287 // defining what font to use for those types. 287 // defining what font to use for those types.
288 switch (toCSSPrimitiveValue(familyValue).getValueID()) { 288 switch (toCSSIdentifierValue(familyValue).getValueID()) {
289 case CSSValueSerif: 289 case CSSValueSerif:
290 family = FontFamilyNames::webkit_serif; 290 family = FontFamilyNames::webkit_serif;
291 break; 291 break;
292 case CSSValueSansSerif: 292 case CSSValueSansSerif:
293 family = FontFamilyNames::webkit_sans_serif; 293 family = FontFamilyNames::webkit_sans_serif;
294 break; 294 break;
295 case CSSValueCursive: 295 case CSSValueCursive:
296 family = FontFamilyNames::webkit_cursive; 296 family = FontFamilyNames::webkit_cursive;
297 break; 297 break;
298 case CSSValueFantasy: 298 case CSSValueFantasy:
(...skipping 100 matching lines...) Expand 10 before | Expand all | Expand 10 after
399 if (m_status != Unloaded) 399 if (m_status != Unloaded)
400 return; 400 return;
401 401
402 m_cssFontFace->load(); 402 m_cssFontFace->load();
403 } 403 }
404 404
405 FontTraits FontFace::traits() const 405 FontTraits FontFace::traits() const
406 { 406 {
407 FontStretch stretch = FontStretchNormal; 407 FontStretch stretch = FontStretchNormal;
408 if (m_stretch) { 408 if (m_stretch) {
409 if (!m_stretch->isPrimitiveValue()) 409 if (!m_stretch->isIdentifierValue())
410 return 0; 410 return 0;
411 411
412 switch (toCSSPrimitiveValue(m_stretch.get())->getValueID()) { 412 switch (toCSSIdentifierValue(m_stretch.get())->getValueID()) {
413 case CSSValueUltraCondensed: 413 case CSSValueUltraCondensed:
414 stretch = FontStretchUltraCondensed; 414 stretch = FontStretchUltraCondensed;
415 break; 415 break;
416 case CSSValueExtraCondensed: 416 case CSSValueExtraCondensed:
417 stretch = FontStretchExtraCondensed; 417 stretch = FontStretchExtraCondensed;
418 break; 418 break;
419 case CSSValueCondensed: 419 case CSSValueCondensed:
420 stretch = FontStretchCondensed; 420 stretch = FontStretchCondensed;
421 break; 421 break;
422 case CSSValueSemiCondensed: 422 case CSSValueSemiCondensed:
(...skipping 11 matching lines...) Expand all
434 case CSSValueUltraExpanded: 434 case CSSValueUltraExpanded:
435 stretch = FontStretchUltraExpanded; 435 stretch = FontStretchUltraExpanded;
436 break; 436 break;
437 default: 437 default:
438 break; 438 break;
439 } 439 }
440 } 440 }
441 441
442 FontStyle style = FontStyleNormal; 442 FontStyle style = FontStyleNormal;
443 if (m_style) { 443 if (m_style) {
444 if (!m_style->isPrimitiveValue()) 444 if (!m_style->isIdentifierValue())
445 return 0; 445 return 0;
446 446
447 switch (toCSSPrimitiveValue(m_style.get())->getValueID()) { 447 switch (toCSSIdentifierValue(m_style.get())->getValueID()) {
448 case CSSValueNormal: 448 case CSSValueNormal:
449 style = FontStyleNormal; 449 style = FontStyleNormal;
450 break; 450 break;
451 case CSSValueOblique: 451 case CSSValueOblique:
452 style = FontStyleOblique; 452 style = FontStyleOblique;
453 break; 453 break;
454 case CSSValueItalic: 454 case CSSValueItalic:
455 style = FontStyleItalic; 455 style = FontStyleItalic;
456 break; 456 break;
457 default: 457 default:
458 break; 458 break;
459 } 459 }
460 } 460 }
461 461
462 FontWeight weight = FontWeight400; 462 FontWeight weight = FontWeight400;
463 if (m_weight) { 463 if (m_weight) {
464 if (!m_weight->isPrimitiveValue()) 464 if (!m_weight->isIdentifierValue())
465 return 0; 465 return 0;
466 466
467 switch (toCSSPrimitiveValue(m_weight.get())->getValueID()) { 467 switch (toCSSIdentifierValue(m_weight.get())->getValueID()) {
468 case CSSValueBold: 468 case CSSValueBold:
469 case CSSValue700: 469 case CSSValue700:
470 weight = FontWeight700; 470 weight = FontWeight700;
471 break; 471 break;
472 case CSSValueNormal: 472 case CSSValueNormal:
473 case CSSValue400: 473 case CSSValue400:
474 weight = FontWeight400; 474 weight = FontWeight400;
475 break; 475 break;
476 case CSSValue900: 476 case CSSValue900:
477 weight = FontWeight900; 477 weight = FontWeight900;
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
510 510
511 size_t FontFace::approximateBlankCharacterCount() const 511 size_t FontFace::approximateBlankCharacterCount() const
512 { 512 {
513 if (m_status == Loading) 513 if (m_status == Loading)
514 return m_cssFontFace->approximateBlankCharacterCount(); 514 return m_cssFontFace->approximateBlankCharacterCount();
515 return 0; 515 return 0;
516 } 516 }
517 517
518 static FontDisplay CSSValueToFontDisplay(const CSSValue* value) 518 static FontDisplay CSSValueToFontDisplay(const CSSValue* value)
519 { 519 {
520 if (value && value->isPrimitiveValue()) { 520 if (value && value->isIdentifierValue()) {
521 switch (toCSSPrimitiveValue(value)->getValueID()) { 521 switch (toCSSIdentifierValue(value)->getValueID()) {
522 case CSSValueAuto: 522 case CSSValueAuto:
523 return FontDisplayAuto; 523 return FontDisplayAuto;
524 case CSSValueBlock: 524 case CSSValueBlock:
525 return FontDisplayBlock; 525 return FontDisplayBlock;
526 case CSSValueSwap: 526 case CSSValueSwap:
527 return FontDisplaySwap; 527 return FontDisplaySwap;
528 case CSSValueFallback: 528 case CSSValueFallback:
529 return FontDisplayFallback; 529 return FontDisplayFallback;
530 case CSSValueOptional: 530 case CSSValueOptional:
531 return FontDisplayOptional; 531 return FontDisplayOptional;
(...skipping 94 matching lines...) Expand 10 before | Expand all | Expand 10 after
626 { 626 {
627 return m_cssFontFace->hadBlankText(); 627 return m_cssFontFace->hadBlankText();
628 } 628 }
629 629
630 bool FontFace::hasPendingActivity() const 630 bool FontFace::hasPendingActivity() const
631 { 631 {
632 return m_status == Loading && getExecutionContext() && !getExecutionContext( )->activeDOMObjectsAreStopped(); 632 return m_status == Loading && getExecutionContext() && !getExecutionContext( )->activeDOMObjectsAreStopped();
633 } 633 }
634 634
635 } // namespace blink 635 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698