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 | 468 RefPtrWillBeRawPtr<StyleRuleFontFace> rule = StyleRuleFontFace::create(); |
469 // FIXME: Shouldn't we fail if font-family or src aren't specified? | 469 if (!rule->setProperties(createStylePropertySet(m_parsedProperties, m_contex
t.mode()))) { |
470 for (unsigned i = 0; i < m_parsedProperties.size(); ++i) { | 470 m_parsedProperties.clear(); |
471 CSSProperty& property = m_parsedProperties[i]; | 471 return nullptr; |
472 if (property.id() == CSSPropertyFontFamily && (!property.value()->isValu
eList() || toCSSValueList(property.value())->length() != 1)) { | |
473 m_parsedProperties.clear(); | |
474 return nullptr; | |
475 } | |
476 } | 472 } |
477 | |
478 RefPtrWillBeRawPtr<StyleRuleFontFace> rule = StyleRuleFontFace::create(); | |
479 rule->setProperties(createStylePropertySet(m_parsedProperties, m_context.mod
e())); | |
480 m_parsedProperties.clear(); | 473 m_parsedProperties.clear(); |
481 if (m_styleSheet) | 474 if (m_styleSheet) |
482 m_styleSheet->setHasFontFaceRule(true); | 475 m_styleSheet->setHasFontFaceRule(true); |
483 return rule.release(); | 476 return rule.release(); |
484 } | 477 } |
485 | 478 |
486 PassRefPtrWillBeRawPtr<StyleRuleKeyframes> CSSParserImpl::consumeKeyframesRule(b
ool webkitPrefixed, CSSParserTokenRange prelude, CSSParserTokenRange block) | 479 PassRefPtrWillBeRawPtr<StyleRuleKeyframes> CSSParserImpl::consumeKeyframesRule(b
ool webkitPrefixed, CSSParserTokenRange prelude, CSSParserTokenRange block) |
487 { | 480 { |
488 prelude.consumeWhitespace(); | 481 prelude.consumeWhitespace(); |
489 const CSSParserToken& nameToken = prelude.consumeIncludingWhitespace(); | 482 const CSSParserToken& nameToken = prelude.consumeIncludingWhitespace(); |
(...skipping 256 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
746 else | 739 else |
747 return nullptr; // Parser error, invalid value in keyframe selector | 740 return nullptr; // Parser error, invalid value in keyframe selector |
748 if (range.atEnd()) | 741 if (range.atEnd()) |
749 return result.release(); | 742 return result.release(); |
750 if (range.consume().type() != CommaToken) | 743 if (range.consume().type() != CommaToken) |
751 return nullptr; // Parser error | 744 return nullptr; // Parser error |
752 } | 745 } |
753 } | 746 } |
754 | 747 |
755 } // namespace blink | 748 } // namespace blink |
OLD | NEW |