Commit 54bd8709 authored by timloh@chromium.org's avatar timloh@chromium.org

Simplify animation/transition parsing slightly

This patch simplifies parsing CSS animations and transitions slightly by
making us only return CSSValueLists from the parser, including when we
only have a single value in the list. This was probably done differently
in the past (with single values not being wrapped in a CSSValueList) as
premature optimisation, which adds needless complexity to the code. Note
this changes the foo.style.getPropertyCSSValue output slightly.

I've also made BisonCSSParser::parseAnimationTimingFunctionValue return
a single (non-valuelist-wrapped) CSSValue which isn't initial or inherit
to better match the intention of the callers.

R=alancutter,dstockwell

Review URL: https://codereview.chromium.org/293113007

git-svn-id: svn://svn.chromium.org/blink/trunk@175153 bbb929c8-8fbe-4397-9dbb-9b2b20218538
parent 97015197
...@@ -3,35 +3,35 @@ Testing whether CSSPrimitiveValue.getFloatValue() converts units correctly. ...@@ -3,35 +3,35 @@ Testing whether CSSPrimitiveValue.getFloatValue() converts units correctly.
On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE". On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
PASS getFloatValue('font-size', CSSPrimitiveValue.CSS_PT) is 10 PASS getFloatValue(0, 'font-size', CSSPrimitiveValue.CSS_PT) is 10
PASS getFloatValue('font-size', CSSPrimitiveValue.CSS_MM) is 3.527778 PASS getFloatValue(0, 'font-size', CSSPrimitiveValue.CSS_MM) is 3.527778
PASS getFloatValue('font-size', CSSPrimitiveValue.CSS_CM) is 0.352778 PASS getFloatValue(0, 'font-size', CSSPrimitiveValue.CSS_CM) is 0.352778
PASS getFloatValue('font-size', CSSPrimitiveValue.CSS_IN) is 0.138889 PASS getFloatValue(0, 'font-size', CSSPrimitiveValue.CSS_IN) is 0.138889
PASS getFloatValue('font-size', CSSPrimitiveValue.CSS_PC) is 0.833333 PASS getFloatValue(0, 'font-size', CSSPrimitiveValue.CSS_PC) is 0.833333
PASS getFloatValue('font-size', CSSPrimitiveValue.CSS_PX) is 13.333333 PASS getFloatValue(0, 'font-size', CSSPrimitiveValue.CSS_PX) is 13.333333
PASS getFloatValue('font-size', CSSPrimitiveValue.CSS_NUMBER) is 13.333333 PASS getFloatValue(0, 'font-size', CSSPrimitiveValue.CSS_NUMBER) is 13.333333
PASS getFirstFloatValueInList('-webkit-transform', CSSPrimitiveValue.CSS_DEG) is 90 PASS getFloatValue(2, '-webkit-transform', CSSPrimitiveValue.CSS_DEG) is 90
PASS getFirstFloatValueInList('-webkit-transform', CSSPrimitiveValue.CSS_RAD) is 1.570796 PASS getFloatValue(2, '-webkit-transform', CSSPrimitiveValue.CSS_RAD) is 1.570796
PASS getFirstFloatValueInList('-webkit-transform', CSSPrimitiveValue.CSS_GRAD) is 100 PASS getFloatValue(2, '-webkit-transform', CSSPrimitiveValue.CSS_GRAD) is 100
PASS getFirstFloatValueInList('-webkit-transform', CSSPrimitiveValue.CSS_NUMBER) is 90 PASS getFloatValue(2, '-webkit-transform', CSSPrimitiveValue.CSS_NUMBER) is 90
PASS getFloatValue('-webkit-animation-delay', CSSPrimitiveValue.CSS_MS) is 200 PASS getFloatValue(1, '-webkit-animation-delay', CSSPrimitiveValue.CSS_MS) is 200
PASS getFloatValue('-webkit-animation-delay', CSSPrimitiveValue.CSS_S) is 0.2 PASS getFloatValue(1, '-webkit-animation-delay', CSSPrimitiveValue.CSS_S) is 0.2
PASS getFloatValue('-webkit-animation-delay', CSSPrimitiveValue.CSS_NUMBER) is 200 PASS getFloatValue(1, '-webkit-animation-delay', CSSPrimitiveValue.CSS_NUMBER) is 200
PASS getFloatValue('font-size', CSSPrimitiveValue.CSS_PERCENTAGE) threw exception InvalidAccessError: Failed to execute 'getFloatValue' on 'CSSPrimitiveValue': Failed to obtain a double value.. PASS getFloatValue(0, 'font-size', CSSPrimitiveValue.CSS_PERCENTAGE) threw exception InvalidAccessError: Failed to execute 'getFloatValue' on 'CSSPrimitiveValue': Failed to obtain a double value..
PASS getFloatValue('font-size', CSSPrimitiveValue.CSS_MS) threw exception InvalidAccessError: Failed to execute 'getFloatValue' on 'CSSPrimitiveValue': Failed to obtain a double value.. PASS getFloatValue(0, 'font-size', CSSPrimitiveValue.CSS_MS) threw exception InvalidAccessError: Failed to execute 'getFloatValue' on 'CSSPrimitiveValue': Failed to obtain a double value..
PASS getFloatValue('font-size', CSSPrimitiveValue.CSS_HZ) threw exception InvalidAccessError: Failed to execute 'getFloatValue' on 'CSSPrimitiveValue': Failed to obtain a double value.. PASS getFloatValue(0, 'font-size', CSSPrimitiveValue.CSS_HZ) threw exception InvalidAccessError: Failed to execute 'getFloatValue' on 'CSSPrimitiveValue': Failed to obtain a double value..
PASS getFloatValue('font-size', CSSPrimitiveValue.CSS_DEG) threw exception InvalidAccessError: Failed to execute 'getFloatValue' on 'CSSPrimitiveValue': Failed to obtain a double value.. PASS getFloatValue(0, 'font-size', CSSPrimitiveValue.CSS_DEG) threw exception InvalidAccessError: Failed to execute 'getFloatValue' on 'CSSPrimitiveValue': Failed to obtain a double value..
PASS getFloatValue('font-size', CSSPrimitiveValue.CSS_RGBCOLOR) threw exception InvalidAccessError: Failed to execute 'getFloatValue' on 'CSSPrimitiveValue': Failed to obtain a double value.. PASS getFloatValue(0, 'font-size', CSSPrimitiveValue.CSS_RGBCOLOR) threw exception InvalidAccessError: Failed to execute 'getFloatValue' on 'CSSPrimitiveValue': Failed to obtain a double value..
PASS getFirstFloatValueInList('-webkit-transform', CSSPrimitiveValue.CSS_PERCENTAGE) threw exception InvalidAccessError: Failed to execute 'getFloatValue' on 'CSSPrimitiveValue': Failed to obtain a double value.. PASS getFloatValue(2, '-webkit-transform', CSSPrimitiveValue.CSS_PERCENTAGE) threw exception InvalidAccessError: Failed to execute 'getFloatValue' on 'CSSPrimitiveValue': Failed to obtain a double value..
PASS getFirstFloatValueInList('-webkit-transform', CSSPrimitiveValue.CSS_PX) threw exception InvalidAccessError: Failed to execute 'getFloatValue' on 'CSSPrimitiveValue': Failed to obtain a double value.. PASS getFloatValue(2, '-webkit-transform', CSSPrimitiveValue.CSS_PX) threw exception InvalidAccessError: Failed to execute 'getFloatValue' on 'CSSPrimitiveValue': Failed to obtain a double value..
PASS getFirstFloatValueInList('-webkit-transform', CSSPrimitiveValue.CSS_MS) threw exception InvalidAccessError: Failed to execute 'getFloatValue' on 'CSSPrimitiveValue': Failed to obtain a double value.. PASS getFloatValue(2, '-webkit-transform', CSSPrimitiveValue.CSS_MS) threw exception InvalidAccessError: Failed to execute 'getFloatValue' on 'CSSPrimitiveValue': Failed to obtain a double value..
PASS getFirstFloatValueInList('-webkit-transform', CSSPrimitiveValue.CSS_HZ) threw exception InvalidAccessError: Failed to execute 'getFloatValue' on 'CSSPrimitiveValue': Failed to obtain a double value.. PASS getFloatValue(2, '-webkit-transform', CSSPrimitiveValue.CSS_HZ) threw exception InvalidAccessError: Failed to execute 'getFloatValue' on 'CSSPrimitiveValue': Failed to obtain a double value..
PASS getFirstFloatValueInList('-webkit-transform', CSSPrimitiveValue.CSS_RGBCOLOR) threw exception InvalidAccessError: Failed to execute 'getFloatValue' on 'CSSPrimitiveValue': Failed to obtain a double value.. PASS getFloatValue(2, '-webkit-transform', CSSPrimitiveValue.CSS_RGBCOLOR) threw exception InvalidAccessError: Failed to execute 'getFloatValue' on 'CSSPrimitiveValue': Failed to obtain a double value..
PASS getFloatValue('-webkit-animation-delay', CSSPrimitiveValue.CSS_PERCENTAGE) threw exception InvalidAccessError: Failed to execute 'getFloatValue' on 'CSSPrimitiveValue': Failed to obtain a double value.. PASS getFloatValue(1, '-webkit-animation-delay', CSSPrimitiveValue.CSS_PERCENTAGE) threw exception InvalidAccessError: Failed to execute 'getFloatValue' on 'CSSPrimitiveValue': Failed to obtain a double value..
PASS getFloatValue('-webkit-animation-delay', CSSPrimitiveValue.CSS_PX) threw exception InvalidAccessError: Failed to execute 'getFloatValue' on 'CSSPrimitiveValue': Failed to obtain a double value.. PASS getFloatValue(1, '-webkit-animation-delay', CSSPrimitiveValue.CSS_PX) threw exception InvalidAccessError: Failed to execute 'getFloatValue' on 'CSSPrimitiveValue': Failed to obtain a double value..
PASS getFloatValue('-webkit-animation-delay', CSSPrimitiveValue.CSS_DEG) threw exception InvalidAccessError: Failed to execute 'getFloatValue' on 'CSSPrimitiveValue': Failed to obtain a double value.. PASS getFloatValue(1, '-webkit-animation-delay', CSSPrimitiveValue.CSS_DEG) threw exception InvalidAccessError: Failed to execute 'getFloatValue' on 'CSSPrimitiveValue': Failed to obtain a double value..
PASS getFloatValue('-webkit-animation-delay', CSSPrimitiveValue.CSS_HZ) threw exception InvalidAccessError: Failed to execute 'getFloatValue' on 'CSSPrimitiveValue': Failed to obtain a double value.. PASS getFloatValue(1, '-webkit-animation-delay', CSSPrimitiveValue.CSS_HZ) threw exception InvalidAccessError: Failed to execute 'getFloatValue' on 'CSSPrimitiveValue': Failed to obtain a double value..
PASS getFloatValue('-webkit-animation-delay', CSSPrimitiveValue.CSS_RGBCOLOR) threw exception InvalidAccessError: Failed to execute 'getFloatValue' on 'CSSPrimitiveValue': Failed to obtain a double value.. PASS getFloatValue(1, '-webkit-animation-delay', CSSPrimitiveValue.CSS_RGBCOLOR) threw exception InvalidAccessError: Failed to execute 'getFloatValue' on 'CSSPrimitiveValue': Failed to obtain a double value..
PASS successfullyParsed is true PASS successfullyParsed is true
TEST COMPLETE TEST COMPLETE
......
...@@ -11,49 +11,45 @@ if (window.testRunner) ...@@ -11,49 +11,45 @@ if (window.testRunner)
description("Testing whether CSSPrimitiveValue.getFloatValue() converts units correctly."); description("Testing whether CSSPrimitiveValue.getFloatValue() converts units correctly.");
function getFloatValue(propertyName, unit) function getFloatValue(nestLevel, propertyName, unit)
{ {
var result = document.getElementById("test-div").style.getPropertyCSSValue(propertyName).getFloatValue(unit); var value = document.getElementById("test-div").style.getPropertyCSSValue(propertyName);
return Number(result.toFixed(6)); while (nestLevel--)
value = value[0];
return Number(value.getFloatValue(unit).toFixed(6));
} }
function getFirstFloatValueInList(propertyName, unit) shouldBe("getFloatValue(0, 'font-size', CSSPrimitiveValue.CSS_PT)", "10");
{ shouldBe("getFloatValue(0, 'font-size', CSSPrimitiveValue.CSS_MM)", "3.527778");
var result = document.getElementById("test-div").style.getPropertyCSSValue(propertyName)[0][0].getFloatValue(unit); shouldBe("getFloatValue(0, 'font-size', CSSPrimitiveValue.CSS_CM)", "0.352778");
return Number(result.toFixed(6)); shouldBe("getFloatValue(0, 'font-size', CSSPrimitiveValue.CSS_IN)", "0.138889");
} shouldBe("getFloatValue(0, 'font-size', CSSPrimitiveValue.CSS_PC)", "0.833333");
shouldBe("getFloatValue(0, 'font-size', CSSPrimitiveValue.CSS_PX)", "13.333333");
shouldBe("getFloatValue('font-size', CSSPrimitiveValue.CSS_PT)", "10"); shouldBe("getFloatValue(0, 'font-size', CSSPrimitiveValue.CSS_NUMBER)", "13.333333");
shouldBe("getFloatValue('font-size', CSSPrimitiveValue.CSS_MM)", "3.527778"); shouldBe("getFloatValue(2, '-webkit-transform', CSSPrimitiveValue.CSS_DEG)", "90");
shouldBe("getFloatValue('font-size', CSSPrimitiveValue.CSS_CM)", "0.352778"); shouldBe("getFloatValue(2, '-webkit-transform', CSSPrimitiveValue.CSS_RAD)", "1.570796");
shouldBe("getFloatValue('font-size', CSSPrimitiveValue.CSS_IN)", "0.138889"); shouldBe("getFloatValue(2, '-webkit-transform', CSSPrimitiveValue.CSS_GRAD)", "100");
shouldBe("getFloatValue('font-size', CSSPrimitiveValue.CSS_PC)", "0.833333"); shouldBe("getFloatValue(2, '-webkit-transform', CSSPrimitiveValue.CSS_NUMBER)", "90");
shouldBe("getFloatValue('font-size', CSSPrimitiveValue.CSS_PX)", "13.333333"); shouldBe("getFloatValue(1, '-webkit-animation-delay', CSSPrimitiveValue.CSS_MS)", "200");
shouldBe("getFloatValue('font-size', CSSPrimitiveValue.CSS_NUMBER)", "13.333333"); shouldBe("getFloatValue(1, '-webkit-animation-delay', CSSPrimitiveValue.CSS_S)", "0.2");
shouldBe("getFirstFloatValueInList('-webkit-transform', CSSPrimitiveValue.CSS_DEG)", "90"); shouldBe("getFloatValue(1, '-webkit-animation-delay', CSSPrimitiveValue.CSS_NUMBER)", "200");
shouldBe("getFirstFloatValueInList('-webkit-transform', CSSPrimitiveValue.CSS_RAD)", "1.570796");
shouldBe("getFirstFloatValueInList('-webkit-transform', CSSPrimitiveValue.CSS_GRAD)", "100");
shouldBe("getFirstFloatValueInList('-webkit-transform', CSSPrimitiveValue.CSS_NUMBER)", "90");
shouldBe("getFloatValue('-webkit-animation-delay', CSSPrimitiveValue.CSS_MS)", "200");
shouldBe("getFloatValue('-webkit-animation-delay', CSSPrimitiveValue.CSS_S)", "0.2");
shouldBe("getFloatValue('-webkit-animation-delay', CSSPrimitiveValue.CSS_NUMBER)", "200");
shouldThrow("getFloatValue('font-size', CSSPrimitiveValue.CSS_PERCENTAGE)"); shouldThrow("getFloatValue(0, 'font-size', CSSPrimitiveValue.CSS_PERCENTAGE)");
shouldThrow("getFloatValue('font-size', CSSPrimitiveValue.CSS_MS)"); shouldThrow("getFloatValue(0, 'font-size', CSSPrimitiveValue.CSS_MS)");
shouldThrow("getFloatValue('font-size', CSSPrimitiveValue.CSS_HZ)"); shouldThrow("getFloatValue(0, 'font-size', CSSPrimitiveValue.CSS_HZ)");
shouldThrow("getFloatValue('font-size', CSSPrimitiveValue.CSS_DEG)"); shouldThrow("getFloatValue(0, 'font-size', CSSPrimitiveValue.CSS_DEG)");
shouldThrow("getFloatValue('font-size', CSSPrimitiveValue.CSS_RGBCOLOR)"); shouldThrow("getFloatValue(0, 'font-size', CSSPrimitiveValue.CSS_RGBCOLOR)");
shouldThrow("getFirstFloatValueInList('-webkit-transform', CSSPrimitiveValue.CSS_PERCENTAGE)"); shouldThrow("getFloatValue(2, '-webkit-transform', CSSPrimitiveValue.CSS_PERCENTAGE)");
shouldThrow("getFirstFloatValueInList('-webkit-transform', CSSPrimitiveValue.CSS_PX)"); shouldThrow("getFloatValue(2, '-webkit-transform', CSSPrimitiveValue.CSS_PX)");
shouldThrow("getFirstFloatValueInList('-webkit-transform', CSSPrimitiveValue.CSS_MS)"); shouldThrow("getFloatValue(2, '-webkit-transform', CSSPrimitiveValue.CSS_MS)");
shouldThrow("getFirstFloatValueInList('-webkit-transform', CSSPrimitiveValue.CSS_HZ)"); shouldThrow("getFloatValue(2, '-webkit-transform', CSSPrimitiveValue.CSS_HZ)");
shouldThrow("getFirstFloatValueInList('-webkit-transform', CSSPrimitiveValue.CSS_RGBCOLOR)"); shouldThrow("getFloatValue(2, '-webkit-transform', CSSPrimitiveValue.CSS_RGBCOLOR)");
shouldThrow("getFloatValue('-webkit-animation-delay', CSSPrimitiveValue.CSS_PERCENTAGE)"); shouldThrow("getFloatValue(1, '-webkit-animation-delay', CSSPrimitiveValue.CSS_PERCENTAGE)");
shouldThrow("getFloatValue('-webkit-animation-delay', CSSPrimitiveValue.CSS_PX)"); shouldThrow("getFloatValue(1, '-webkit-animation-delay', CSSPrimitiveValue.CSS_PX)");
shouldThrow("getFloatValue('-webkit-animation-delay', CSSPrimitiveValue.CSS_DEG)"); shouldThrow("getFloatValue(1, '-webkit-animation-delay', CSSPrimitiveValue.CSS_DEG)");
shouldThrow("getFloatValue('-webkit-animation-delay', CSSPrimitiveValue.CSS_HZ)"); shouldThrow("getFloatValue(1, '-webkit-animation-delay', CSSPrimitiveValue.CSS_HZ)");
shouldThrow("getFloatValue('-webkit-animation-delay', CSSPrimitiveValue.CSS_RGBCOLOR)"); shouldThrow("getFloatValue(1, '-webkit-animation-delay', CSSPrimitiveValue.CSS_RGBCOLOR)");
</script> </script>
</body> </body>
...@@ -99,12 +99,8 @@ namespace WebCore { ...@@ -99,12 +99,8 @@ namespace WebCore {
{ {
CSS{{animation}}Data& data = state.style()->access{{animation}}s(); CSS{{animation}}Data& data = state.style()->access{{animation}}s();
data.{{vector}}.clear(); data.{{vector}}.clear();
if (value->isValueList()) { for (CSSValueListIterator i = value; i.hasMore(); i.advance())
for (CSSValueListIterator i = value; i.hasMore(); i.advance()) data.{{vector}}.append(state.styleMap().mapAnimation{{attribute}}(i.value()));
data.{{vector}}.append(state.styleMap().mapAnimation{{attribute}}(i.value()));
} else {
data.{{vector}}.append(state.styleMap().mapAnimation{{attribute}}(value));
}
} }
{% endmacro %} {% endmacro %}
{{apply_animation('CSSPropertyWebkitAnimationDelay', 'Delay', 'Animation')}} {{apply_animation('CSSPropertyWebkitAnimationDelay', 'Delay', 'Animation')}}
......
...@@ -99,8 +99,7 @@ PassRefPtrWillBeRawPtr<AnimationEffect> EffectInput::convert(Element* element, c ...@@ -99,8 +99,7 @@ PassRefPtrWillBeRawPtr<AnimationEffect> EffectInput::convert(Element* element, c
String timingFunctionString; String timingFunctionString;
if (keyframeDictionaryVector[i].get("easing", timingFunctionString)) { if (keyframeDictionaryVector[i].get("easing", timingFunctionString)) {
RefPtrWillBeRawPtr<CSSValue> timingFunctionValue = BisonCSSParser::parseAnimationTimingFunctionValue(timingFunctionString); if (RefPtrWillBeRawPtr<CSSValue> timingFunctionValue = BisonCSSParser::parseAnimationTimingFunctionValue(timingFunctionString))
if (timingFunctionValue)
keyframe->setEasing(CSSToStyleMap::mapAnimationTimingFunction(timingFunctionValue.get(), true)); keyframe->setEasing(CSSToStyleMap::mapAnimationTimingFunction(timingFunctionValue.get(), true));
} }
......
...@@ -89,9 +89,7 @@ void TimingInput::setPlaybackDirection(Timing& timing, const String& direction) ...@@ -89,9 +89,7 @@ void TimingInput::setPlaybackDirection(Timing& timing, const String& direction)
void TimingInput::setTimingFunction(Timing& timing, const String& timingFunctionString) void TimingInput::setTimingFunction(Timing& timing, const String& timingFunctionString)
{ {
RefPtrWillBeRawPtr<CSSValue> timingFunctionValue = BisonCSSParser::parseAnimationTimingFunctionValue(timingFunctionString); if (RefPtrWillBeRawPtr<CSSValue> timingFunctionValue = BisonCSSParser::parseAnimationTimingFunctionValue(timingFunctionString))
if (timingFunctionValue && !timingFunctionValue->isInitialValue())
timing.timingFunction = CSSToStyleMap::mapAnimationTimingFunction(timingFunctionValue.get(), true); timing.timingFunction = CSSToStyleMap::mapAnimationTimingFunction(timingFunctionValue.get(), true);
else else
timing.timingFunction = Timing::defaults().timingFunction; timing.timingFunction = Timing::defaults().timingFunction;
......
...@@ -117,10 +117,8 @@ static void resolveKeyframes(StyleResolver* resolver, Element* element, const El ...@@ -117,10 +117,8 @@ static void resolveKeyframes(StyleResolver* resolver, Element* element, const El
timingFunction = parentStyle->animations()->timingFunctionList()[0]; timingFunction = parentStyle->animations()->timingFunctionList()[0];
else if (value->isInheritedValue() || value->isInitialValue()) else if (value->isInheritedValue() || value->isInitialValue())
timingFunction = CSSTimingData::initialTimingFunction(); timingFunction = CSSTimingData::initialTimingFunction();
else if (value->isValueList())
timingFunction = CSSToStyleMap::mapAnimationTimingFunction(toCSSValueList(value)->item(0));
else else
timingFunction = CSSToStyleMap::mapAnimationTimingFunction(value); timingFunction = CSSToStyleMap::mapAnimationTimingFunction(toCSSValueList(value)->item(0));
keyframe->setEasing(timingFunction.release()); keyframe->setEasing(timingFunction.release());
} else if (CSSAnimations::isAnimatableProperty(property)) { } else if (CSSAnimations::isAnimatableProperty(property)) {
keyframe->setPropertyValue(property, CSSAnimatableValueFactory::create(property, *keyframeStyle).get()); keyframe->setPropertyValue(property, CSSAnimatableValueFactory::create(property, *keyframeStyle).get());
......
...@@ -921,7 +921,13 @@ PassRefPtrWillBeRawPtr<CSSValue> BisonCSSParser::parseAnimationTimingFunctionVal ...@@ -921,7 +921,13 @@ PassRefPtrWillBeRawPtr<CSSValue> BisonCSSParser::parseAnimationTimingFunctionVal
if (!parseValue(style.get(), CSSPropertyTransitionTimingFunction, string, false, HTMLStandardMode, 0)) if (!parseValue(style.get(), CSSPropertyTransitionTimingFunction, string, false, HTMLStandardMode, 0))
return nullptr; return nullptr;
return style->getPropertyCSSValue(CSSPropertyTransitionTimingFunction); RefPtrWillBeRawPtr<CSSValue> value = style->getPropertyCSSValue(CSSPropertyTransitionTimingFunction);
if (!value || value->isInitialValue() || value->isInheritedValue())
return nullptr;
CSSValueList* valueList = toCSSValueList(value.get());
if (valueList->length() > 1)
return nullptr;
return valueList->item(0);
} }
bool BisonCSSParser::parseValue(MutableStylePropertySet* declaration, CSSPropertyID propertyID, const String& string, bool important, const Document& document) bool BisonCSSParser::parseValue(MutableStylePropertySet* declaration, CSSPropertyID propertyID, const String& string, bool important, const Document& document)
......
...@@ -42,7 +42,6 @@ ...@@ -42,7 +42,6 @@
namespace WebCore { namespace WebCore {
// FIXME: Many of these may not be used. // FIXME: Many of these may not be used.
class AnimationParseContext;
class CSSArrayFunctionValue; class CSSArrayFunctionValue;
class CSSBorderImageSliceValue; class CSSBorderImageSliceValue;
class CSSPrimitiveValue; class CSSPrimitiveValue;
...@@ -136,12 +135,13 @@ private: ...@@ -136,12 +135,13 @@ private:
PassRefPtrWillBeRawPtr<CSSValue> parseAnimationIterationCount(); PassRefPtrWillBeRawPtr<CSSValue> parseAnimationIterationCount();
PassRefPtrWillBeRawPtr<CSSValue> parseAnimationName(); PassRefPtrWillBeRawPtr<CSSValue> parseAnimationName();
PassRefPtrWillBeRawPtr<CSSValue> parseAnimationPlayState(); PassRefPtrWillBeRawPtr<CSSValue> parseAnimationPlayState();
PassRefPtrWillBeRawPtr<CSSValue> parseAnimationProperty(AnimationParseContext&); PassRefPtrWillBeRawPtr<CSSValue> parseAnimationProperty();
PassRefPtrWillBeRawPtr<CSSValue> parseAnimationTimingFunction(); PassRefPtrWillBeRawPtr<CSSValue> parseAnimationTimingFunction();
bool parseWebkitTransformOriginShorthand(RefPtrWillBeRawPtr<CSSValue>&, RefPtrWillBeRawPtr<CSSValue>&, RefPtrWillBeRawPtr<CSSValue>&); bool parseWebkitTransformOriginShorthand(RefPtrWillBeRawPtr<CSSValue>&, RefPtrWillBeRawPtr<CSSValue>&, RefPtrWillBeRawPtr<CSSValue>&);
bool parseCubicBezierTimingFunctionValue(CSSParserValueList*& args, double& result); bool parseCubicBezierTimingFunctionValue(CSSParserValueList*& args, double& result);
bool parseAnimationProperty(CSSPropertyID, RefPtrWillBeRawPtr<CSSValue>&, AnimationParseContext&); PassRefPtrWillBeRawPtr<CSSValue> parseAnimationProperty(CSSPropertyID);
PassRefPtrWillBeRawPtr<CSSValueList> parseAnimationPropertyList(CSSPropertyID);
bool parseTransitionShorthand(CSSPropertyID, bool important); bool parseTransitionShorthand(CSSPropertyID, bool important);
bool parseAnimationShorthand(CSSPropertyID, bool important); bool parseAnimationShorthand(CSSPropertyID, bool important);
......
...@@ -391,8 +391,7 @@ PassRefPtr<TimingFunction> CSSToStyleMap::mapAnimationTimingFunction(CSSValue* v ...@@ -391,8 +391,7 @@ PassRefPtr<TimingFunction> CSSToStyleMap::mapAnimationTimingFunction(CSSValue* v
// FIXME: We should probably only call into this function with a valid // FIXME: We should probably only call into this function with a valid
// single timing function value which isn't initial or inherit. We can // single timing function value which isn't initial or inherit. We can
// currently get into here with initial since the parser expands unset // currently get into here with initial since the parser expands unset
// properties in shorthands to initial and we can get into here with a // properties in shorthands to initial.
// value list via the EffectInput/TimingInput code paths.
if (value->isPrimitiveValue()) { if (value->isPrimitiveValue()) {
CSSPrimitiveValue* primitiveValue = toCSSPrimitiveValue(value); CSSPrimitiveValue* primitiveValue = toCSSPrimitiveValue(value);
...@@ -426,7 +425,7 @@ PassRefPtr<TimingFunction> CSSToStyleMap::mapAnimationTimingFunction(CSSValue* v ...@@ -426,7 +425,7 @@ PassRefPtr<TimingFunction> CSSToStyleMap::mapAnimationTimingFunction(CSSValue* v
return CubicBezierTimingFunction::create(cubicTimingFunction->x1(), cubicTimingFunction->y1(), cubicTimingFunction->x2(), cubicTimingFunction->y2()); return CubicBezierTimingFunction::create(cubicTimingFunction->x1(), cubicTimingFunction->y1(), cubicTimingFunction->x2(), cubicTimingFunction->y2());
} }
if (!value->isStepsTimingFunctionValue()) if (value->isInitialValue())
return CSSTimingData::initialTimingFunction(); return CSSTimingData::initialTimingFunction();
CSSStepsTimingFunctionValue* stepsTimingFunction = toCSSStepsTimingFunctionValue(value); CSSStepsTimingFunctionValue* stepsTimingFunction = toCSSStepsTimingFunctionValue(value);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment