OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "config.h" | 5 #include "config.h" |
6 #include "core/css/parser/CSSParserImpl.h" | 6 #include "core/css/parser/CSSParserImpl.h" |
7 | 7 |
8 #include "core/css/CSSKeyframesRule.h" | 8 #include "core/css/CSSKeyframesRule.h" |
9 #include "core/css/CSSStyleSheet.h" | 9 #include "core/css/CSSStyleSheet.h" |
10 #include "core/css/StylePropertySet.h" | 10 #include "core/css/StylePropertySet.h" |
(...skipping 447 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
458 if (m_observerWrapper) { | 458 if (m_observerWrapper) { |
459 unsigned endOffset = m_observerWrapper->endOffset(prelude); | 459 unsigned endOffset = m_observerWrapper->endOffset(prelude); |
460 m_observerWrapper->observer().startRuleHeader(StyleRule::FontFace, m_obs
erverWrapper->startOffset(prelude)); | 460 m_observerWrapper->observer().startRuleHeader(StyleRule::FontFace, m_obs
erverWrapper->startOffset(prelude)); |
461 m_observerWrapper->observer().endRuleHeader(endOffset); | 461 m_observerWrapper->observer().endRuleHeader(endOffset); |
462 m_observerWrapper->observer().startRuleBody(endOffset); | 462 m_observerWrapper->observer().startRuleBody(endOffset); |
463 m_observerWrapper->observer().endRuleBody(endOffset, false); | 463 m_observerWrapper->observer().endRuleBody(endOffset, false); |
464 } | 464 } |
465 | 465 |
466 consumeDeclarationList(block, StyleRule::FontFace); | 466 consumeDeclarationList(block, StyleRule::FontFace); |
467 | 467 |
468 // FIXME: This logic should be in CSSPropertyParser | |
469 // FIXME: Shouldn't we fail if font-family or src aren't specified? | |
470 for (unsigned i = 0; i < m_parsedProperties.size(); ++i) { | |
471 CSSProperty& property = m_parsedProperties[i]; | |
472 if (property.id() == CSSPropertyFontFamily && (!property.value()->isValu
eList() || toCSSValueList(property.value())->length() != 1)) { | |
473 m_parsedProperties.clear(); | |
474 return nullptr; | |
475 } | |
476 } | |
477 | |
478 RefPtrWillBeRawPtr<StyleRuleFontFace> rule = StyleRuleFontFace::create(); | 468 RefPtrWillBeRawPtr<StyleRuleFontFace> rule = StyleRuleFontFace::create(); |
479 rule->setProperties(createStylePropertySet(m_parsedProperties, m_context.mod
e())); | 469 rule->setProperties(createStylePropertySet(m_parsedProperties, m_context.mod
e())); |
480 m_parsedProperties.clear(); | 470 m_parsedProperties.clear(); |
481 if (m_styleSheet) | 471 if (m_styleSheet) |
482 m_styleSheet->setHasFontFaceRule(true); | 472 m_styleSheet->setHasFontFaceRule(true); |
483 return rule.release(); | 473 return rule.release(); |
484 } | 474 } |
485 | 475 |
486 PassRefPtrWillBeRawPtr<StyleRuleKeyframes> CSSParserImpl::consumeKeyframesRule(b
ool webkitPrefixed, CSSParserTokenRange prelude, CSSParserTokenRange block) | 476 PassRefPtrWillBeRawPtr<StyleRuleKeyframes> CSSParserImpl::consumeKeyframesRule(b
ool webkitPrefixed, CSSParserTokenRange prelude, CSSParserTokenRange block) |
487 { | 477 { |
(...skipping 258 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
746 else | 736 else |
747 return nullptr; // Parser error, invalid value in keyframe selector | 737 return nullptr; // Parser error, invalid value in keyframe selector |
748 if (range.atEnd()) | 738 if (range.atEnd()) |
749 return result.release(); | 739 return result.release(); |
750 if (range.consume().type() != CommaToken) | 740 if (range.consume().type() != CommaToken) |
751 return nullptr; // Parser error | 741 return nullptr; // Parser error |
752 } | 742 } |
753 } | 743 } |
754 | 744 |
755 } // namespace blink | 745 } // namespace blink |
OLD | NEW |