| Index: Source/core/css/CSSParser.cpp
|
| diff --git a/Source/core/css/CSSParser.cpp b/Source/core/css/CSSParser.cpp
|
| index d5986b7312f64ce49759eb68bd6df02d68bff85b..a0b34e4a77db9a64d17bf905aeeddb73f84c311d 100644
|
| --- a/Source/core/css/CSSParser.cpp
|
| +++ b/Source/core/css/CSSParser.cpp
|
| @@ -11021,8 +11021,15 @@ StyleRuleKeyframes* CSSParser::createKeyframesRule(const String& name, PassOwnPt
|
| OwnPtr<Vector<RefPtr<StyleKeyframe> > > keyframes = popKeyframes;
|
| m_allowImportRules = m_allowNamespaceDeclarations = false;
|
| RefPtr<StyleRuleKeyframes> rule = StyleRuleKeyframes::create();
|
| - for (size_t i = 0; i < keyframes->size(); ++i)
|
| - rule->parserAppendKeyframe(keyframes->at(i));
|
| + for (size_t i = 0; i < keyframes->size(); ++i) {
|
| + RefPtr<StyleKeyframe> keyframe = keyframes->at(i);
|
| + if (keyframe->isValid()) {
|
| + rule->parserAppendKeyframe(keyframe);
|
| + continue;
|
| + }
|
| + return 0;
|
| + }
|
| +
|
| rule->setName(name);
|
| StyleRuleKeyframes* rulePtr = rule.get();
|
| m_parsedRules.append(rule.release());
|
| @@ -11276,18 +11283,20 @@ void CSSParser::deleteFontFaceOnlyValues()
|
|
|
| StyleKeyframe* CSSParser::createKeyframe(CSSParserValueList* keys)
|
| {
|
| - // Create a key string from the passed keys
|
| - StringBuilder keyString;
|
| - for (unsigned i = 0; i < keys->size(); ++i) {
|
| - float key = static_cast<float>(keys->valueAt(i)->fValue);
|
| - if (i != 0)
|
| - keyString.append(',');
|
| - keyString.append(String::number(key));
|
| - keyString.append('%');
|
| + Vector<float> keyframeKeys;
|
| + unsigned keyCount = keys->size();
|
| + for (unsigned i = 0; i < keyCount; ++i) {
|
| + CSSParserValue* value = keys->valueAt(i);
|
| + if (value && value->unit == CSSPrimitiveValue::CSS_NUMBER) {
|
| + keyframeKeys.append(static_cast<float>(value->fValue / 100));
|
| + continue;
|
| + }
|
| + keyframeKeys.clear();
|
| + break;
|
| }
|
|
|
| RefPtr<StyleKeyframe> keyframe = StyleKeyframe::create();
|
| - keyframe->setKeyText(keyString.toString());
|
| + keyframe->setKeys(keyframeKeys);
|
| keyframe->setProperties(createStylePropertySet());
|
|
|
| clearProperties();
|
|
|