• alexis@webkit.org's avatar
    Querying transition-timing-function value on the computed style does not... · 05500357
    alexis@webkit.org authored
    Querying transition-timing-function value on the computed style does not return keywords when it should.
    https://bugs.webkit.org/show_bug.cgi?id=105442
    
    Reviewed by Simon Fraser.
    
    Source/WebCore:
    
    http://www.w3.org/TR/css3-transitions/#transition-timing-function-property
    contains a set of predefined timing functions which under the hood are
    implemented using cubic-bezier but it's an implementation detail that
    should not be exposed. It seems to be more clear to return a CSS
    keyword rather than the cubic-bezier form when querying the value of
    the property on the computed style. In fact the spec even say that for
    example the initial value is "ease" and not cubic-bezier(0.25, 0.1,
    0.25, 1.0). We could also imagine that in the future these predefined
    values could contain other values not represented by a cubic-bezier
    form. This behavior also align with the "linear" keyword which return
    "linear" rather than cubic-bezier(0.0, 0.0, 1.0, 1.0).
    
    Test: transitions/transitions-parsing.html has been updated to cover
    the new behavior as well as making sure that an explicitly set value of
    cubic-bezier(0.25, 0.1, 0.25, 1.0) does not return "ease" but the
    cubic-bezier() form.
    
    * css/CSSComputedStyleDeclaration.cpp:
    (WebCore::createAnimationValue):
    (WebCore):
    (WebCore::getTimingFunctionValue):
    * css/CSSToStyleMap.cpp:
    (WebCore::CSSToStyleMap::mapAnimationTimingFunction):
    * platform/animation/TimingFunction.h:
    (WebCore::CubicBezierTimingFunction::create):
    (CubicBezierTimingFunction):
    (WebCore::CubicBezierTimingFunction::operator==):
    (WebCore::CubicBezierTimingFunction::timingFunctionPreset): Store the
    preset value of the timing function if it is one when creating it
    so we can use it later from the computed style.
    (WebCore::CubicBezierTimingFunction::CubicBezierTimingFunction):
    
    Source/WebKit2:
    
    Update the code to pass the animations from one process to another as
    the constructor of TimingFunction changed to take an extra parameter
    holding the type of the cubic-bezier form.
    
    * Shared/CoordinatedGraphics/CoordinatedGraphicsArgumentCoders.cpp:
    (CoreIPC::encodeTimingFunction):
    (CoreIPC::decodeTimingFunction):
    
    LayoutTests:
    
    Update the tests to match the correct behavior of returning a keyword
    rather than a cubic-bezier() form when using predefined values for the
    transition-timing-function property.
    
    * animations/animation-shorthand-name-order-expected.txt:
    * animations/animation-shorthand-name-order.html:
    * animations/animation-shorthand-removed.html:
    * animations/animation-shorthand.html:
    * animations/computed-style-expected.txt:
    * animations/computed-style.html:
    * fast/css/getComputedStyle/computed-style-expected.txt:
    * fast/css/getComputedStyle/computed-style-without-renderer-expected.txt:
    * svg/css/getComputedStyle-basic-expected.txt:
    * transitions/inherit-other-props-expected.txt:
    * transitions/inherit-other-props.html:
    * transitions/transitions-parsing-expected.txt:
    * transitions/transitions-parsing.html:
    
    
    git-svn-id: http://svn.webkit.org/repository/webkit/trunk@138728 268f45cc-cd09-0410-ab3c-d52691b4dbfc
    05500357