Ignore:
Timestamp:
Jan 12, 2018, 5:26:50 AM (7 years ago)
Author:
[email protected]
Message:

Add support for the frames() timing function
https://bugs.webkit.org/show_bug.cgi?id=181585
<rdar://problem/36463317>

Reviewed by Dean.

Source/WebCore:

Implement the frames() timing function as specified in the CSS Timing Functions Level 1
specification, specifically https://www.w3.org/TR/css-timing-1/#frames-timing-functions.
A frames timing function is a type of timing function that divides the input time into a
specified number of intervals of equal length.

Test: transitions/frames-timing-function.html

  • css/CSSComputedStyleDeclaration.cpp:

(WebCore::createTimingFunctionValue):

  • css/CSSTimingFunctionValue.cpp:

(WebCore::CSSFramesTimingFunctionValue::customCSSText const):
(WebCore::CSSFramesTimingFunctionValue::equals const):

  • css/CSSTimingFunctionValue.h:
  • css/CSSToStyleMap.cpp:

(WebCore::CSSToStyleMap::mapAnimationTimingFunction):

  • css/CSSValue.cpp:

(WebCore::CSSValue::equals const):
(WebCore::CSSValue::cssText const):
(WebCore::CSSValue::destroy):

  • css/CSSValue.h:

(WebCore::CSSValue::isFramesTimingFunctionValue const):

  • css/CSSValueKeywords.in:
  • css/parser/CSSPropertyParser.cpp:

(WebCore::consumeSteps):
(WebCore::consumeFrames):
(WebCore::consumeAnimationTimingFunction):

  • platform/animation/TimingFunction.cpp:

(WebCore::operator<<):
(WebCore::TimingFunction::transformTime const):

  • platform/animation/TimingFunction.h:

(WebCore::TimingFunction::isFramesTimingFunction const):

  • platform/graphics/ca/GraphicsLayerCA.cpp:

(WebCore::animationHasFramesTimingFunction):
(WebCore::GraphicsLayerCA::animationCanBeAccelerated const):

Source/WebKit:

Add the ability to endode and decode the frames() timing function.

  • Shared/WebCoreArgumentCoders.cpp:

(IPC::ArgumentCoder<FramesTimingFunction>::encode):
(IPC::ArgumentCoder<FramesTimingFunction>::decode):

  • Shared/WebCoreArgumentCoders.h:
  • WebProcess/WebPage/RemoteLayerTree/PlatformCAAnimationRemote.mm:

(WebKit::PlatformCAAnimationRemote::Properties::encode const):
(WebKit::PlatformCAAnimationRemote::Properties::decode):

LayoutTests:

Add a new test that checks that the frames() timing function applies as expected
and expand an existing test to check that the frames() timing function is parsed
correctly. We also mark progressions in imported WPT tests.

  • imported/w3c/web-platform-tests/css-timing-1/frames-timing-functions-output-expected.txt:
  • imported/w3c/web-platform-tests/css-timing-1/frames-timing-functions-syntax-expected.txt:
  • transitions/frames-timing-function-expected.txt: Added.
  • transitions/frames-timing-function.html: Added.
  • transitions/transitions-parsing-expected.txt:
  • transitions/transitions-parsing.html:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/css/CSSValue.cpp

    r224165 r226886  
    187187        case StepsTimingFunctionClass:
    188188            return compareCSSValues<CSSStepsTimingFunctionValue>(*this, other);
     189        case FramesTimingFunctionClass:
     190            return compareCSSValues<CSSFramesTimingFunctionValue>(*this, other);
    189191        case SpringTimingFunctionClass:
    190192            return compareCSSValues<CSSSpringTimingFunctionValue>(*this, other);
     
    287289    case StepsTimingFunctionClass:
    288290        return downcast<CSSStepsTimingFunctionValue>(*this).customCSSText();
     291    case FramesTimingFunctionClass:
     292        return downcast<CSSFramesTimingFunctionValue>(*this).customCSSText();
    289293    case SpringTimingFunctionClass:
    290294        return downcast<CSSSpringTimingFunctionValue>(*this).customCSSText();
     
    409413        delete downcast<CSSStepsTimingFunctionValue>(this);
    410414        return;
     415    case FramesTimingFunctionClass:
     416        delete downcast<CSSFramesTimingFunctionValue>(this);
     417        return;
    411418    case SpringTimingFunctionClass:
    412419        delete downcast<CSSSpringTimingFunctionValue>(this);
Note: See TracChangeset for help on using the changeset viewer.