haikuwebkit/LayoutTests/transitions/steps-timing-function.html

46 lines
1.0 KiB
HTML
Raw Permalink Normal View History

Remove the legacy animation code https://bugs.webkit.org/show_bug.cgi?id=216608 Reviewed by Dean Jackson. Source/WebCore: We remove the legacy animation code found in Source/WebCore/page/animation/, save for CSSPropertyAnimation which is also used by the new Web Animations engine and now moved to Source/WebCore/animation/. Since we now have a single animation engine, the runtime flags to optionally enable the Web Animations engine are not needed anymore and removed as well. We also remove some testing utilities and some RenderLayerBacking methods specific to accelerated transitions which the new animation engine does not use. * CMakeLists.txt: * Headers.cmake: * Sources.txt: * WebCore.xcodeproj/project.pbxproj: * animation/Animatable.idl: * animation/AnimationEffect.idl: * animation/AnimationPlaybackEvent.idl: * animation/AnimationPlaybackEventInit.idl: * animation/AnimationTimeline.idl: * animation/CSSAnimation.idl: * animation/CSSPropertyAnimation.cpp: Renamed from Source/WebCore/page/animation/CSSPropertyAnimation.cpp. (WebCore::PropertyWrapperVisitedAffectedColor::PropertyWrapperVisitedAffectedColor): * animation/CSSPropertyAnimation.h: Renamed from Source/WebCore/page/animation/CSSPropertyAnimation.h. * animation/CSSTransition.idl: * animation/DocumentAnimations.idl: * animation/DocumentOrShadowRootAnimations.idl: * animation/DocumentTimeline.idl: * animation/KeyframeEffect.idl: * animation/WebAnimation.idl: * animation/WebAnimationTypes.h: * css/CSSComputedStyleDeclaration.cpp: (WebCore::computeRenderStyleForProperty): * dom/Document.cpp: (WebCore::Document::resolveStyle): (WebCore::Document::didBecomeCurrentDocumentInFrame): (WebCore::Document::willBeRemovedFromFrame): (WebCore::Document::implicitClose): (WebCore::Document::resume): * dom/Element.cpp: (WebCore::Element::removedFromAncestor): * dom/PseudoElement.cpp: (WebCore::PseudoElement::clearHostElement): * history/CachedFrame.cpp: (WebCore::CachedFrame::destroy): * page/Frame.cpp: (WebCore::Frame::Frame): (WebCore::Frame::clearTimers): (WebCore::Frame::resumeActiveDOMObjectsAndAnimations): * page/Frame.h: * page/FrameView.cpp: (WebCore::FrameView::didDestroyRenderTree): (WebCore::FrameView::updateLayoutAndStyleIfNeededRecursive): * page/FrameViewLayoutContext.cpp: (WebCore::FrameViewLayoutContext::layout): * page/Page.cpp: (WebCore::Page::handleLowModePowerChange): (WebCore::Page::setIsVisibleInternal): (WebCore::Page::hiddenPageCSSAnimationSuspensionStateChanged): * page/RuntimeEnabledFeatures.h: (WebCore::RuntimeEnabledFeatures::setWebAnimationsEnabled): Deleted. (WebCore::RuntimeEnabledFeatures::webAnimationsEnabled const): Deleted. (WebCore::RuntimeEnabledFeatures::setWebAnimationsCSSIntegrationEnabled): Deleted. (WebCore::RuntimeEnabledFeatures::webAnimationsCSSIntegrationEnabled const): Deleted. * page/animation/AnimationBase.cpp: Removed. * page/animation/AnimationBase.h: Removed. * page/animation/CSSAnimationController.cpp: Removed. * page/animation/CSSAnimationController.h: Removed. * page/animation/CSSAnimationControllerPrivate.h: Removed. * page/animation/CompositeAnimation.cpp: Removed. * page/animation/CompositeAnimation.h: Removed. * page/animation/ImplicitAnimation.cpp: Removed. * page/animation/ImplicitAnimation.h: Removed. * page/animation/KeyframeAnimation.cpp: Removed. * page/animation/KeyframeAnimation.h: Removed. * platform/graphics/GraphicsLayer.h: * platform/graphics/ca/GraphicsLayerCA.cpp: (WebCore::isKeyframe): (WebCore::GraphicsLayerCA::createTransformAnimationsFromKeyframes): * rendering/RenderElement.cpp: (WebCore::RenderElement::animatedStyle): * rendering/RenderElement.h: (WebCore::RenderElement::startTransition): Deleted. (WebCore::RenderElement::transitionPaused): Deleted. (WebCore::RenderElement::transitionFinished): Deleted. * rendering/RenderLayer.cpp: (WebCore::RenderLayer::currentTransform const): (WebCore::RenderLayer::calculateClipRects const): * rendering/RenderLayerBacking.cpp: (WebCore::RenderLayerBacking::updateGeometry): (WebCore::RenderLayerBacking::notifyAnimationStarted): (WebCore::RenderLayerBacking::startTransition): Deleted. (WebCore::RenderLayerBacking::transitionPaused): Deleted. (WebCore::RenderLayerBacking::transitionFinished): Deleted. * rendering/RenderLayerBacking.h: * rendering/RenderLayerCompositor.cpp: (WebCore::RenderLayerCompositor::flushPendingLayerChanges): (WebCore::RenderLayerCompositor::updateCompositingLayers): (WebCore::RenderLayerCompositor::requiresCompositingForAnimation const): (WebCore::RenderLayerCompositor::isRunningTransformAnimation const): * rendering/RenderLayerModelObject.cpp: (WebCore::RenderLayerModelObject::startTransition): Deleted. (WebCore::RenderLayerModelObject::transitionPaused): Deleted. (WebCore::RenderLayerModelObject::transitionFinished): Deleted. * rendering/RenderLayerModelObject.h: * rendering/RenderObject.h: (WebCore::RenderObject::legacyAnimation const): Deleted. * rendering/updating/RenderTreeUpdater.cpp: (WebCore::RenderTreeUpdater::tearDownRenderers): * style/StyleAdjuster.cpp: * style/StyleTreeResolver.cpp: (WebCore::Style::TreeResolver::createAnimatedElementUpdate): * testing/InternalSettings.cpp: (WebCore::InternalSettings::webAnimationsCSSIntegrationEnabled): Deleted. * testing/InternalSettings.h: * testing/InternalSettings.idl: * testing/Internals.cpp: (WebCore::Internals::numberOfActiveAnimations const): (WebCore::Internals::animationsAreSuspended const): (WebCore::Internals::animationsInterval const): (WebCore::Internals::suspendAnimations const): (WebCore::Internals::resumeAnimations const): (WebCore::Internals::acceleratedAnimationsForElement): (WebCore::Internals::numberOfAnimationTimelineInvalidations const): (WebCore::Internals::pauseAnimationAtTimeOnElement): Deleted. (WebCore::Internals::pauseAnimationAtTimeOnPseudoElement): Deleted. (WebCore::Internals::pauseTransitionAtTimeOnElement): Deleted. (WebCore::Internals::pauseTransitionAtTimeOnPseudoElement): Deleted. * testing/Internals.h: * testing/Internals.idl: Source/WebKit: Since we now have a single animation engine, the runtime flags to optionally enable the Web Animations engine are not needed anymore and are now removed. * Shared/WebPreferencesExperimental.yaml: * UIProcess/API/C/WKPreferences.cpp: (WKPreferencesSetWebAnimationsEnabled): Deleted. (WKPreferencesGetWebAnimationsEnabled): Deleted. (WKPreferencesSetWebAnimationsCSSIntegrationEnabled): Deleted. (WKPreferencesGetWebAnimationsCSSIntegrationEnabled): Deleted. * UIProcess/API/C/WKPreferencesRefPrivate.h: * UIProcess/API/Cocoa/WKPreferences.mm: (-[WKPreferences _setWebAnimationsCSSIntegrationEnabled:]): Deleted. (-[WKPreferences _webAnimationsCSSIntegrationEnabled]): Deleted. * UIProcess/API/Cocoa/WKPreferencesPrivate.h: * WebProcess/InjectedBundle/InjectedBundle.cpp: (WebKit::InjectedBundle::overrideBoolPreferenceForTestRunner): (WebKit::InjectedBundle::setWebAnimationsEnabled): Deleted. (WebKit::InjectedBundle::setWebAnimationsCSSIntegrationEnabled): Deleted. * WebProcess/InjectedBundle/InjectedBundle.h: Source/WebKitLegacy/mac: Since we now have a single animation engine, the runtime flags to optionally enable the Web Animations engine are not needed anymore and are now removed. * WebView/WebPreferenceKeysPrivate.h: * WebView/WebPreferences.mm: (+[WebPreferences initialize]): (-[WebPreferences webAnimationsEnabled]): Deleted. (-[WebPreferences setWebAnimationsEnabled:]): Deleted. (-[WebPreferences webAnimationsCSSIntegrationEnabled]): Deleted. (-[WebPreferences setWebAnimationsCSSIntegrationEnabled:]): Deleted. * WebView/WebPreferencesPrivate.h: * WebView/WebView.mm: (-[WebView _preferencesChanged:]): Source/WebKitLegacy/win: Since we now have a single animation engine, the runtime flags to optionally enable the Web Animations engine are not needed anymore and are now removed. * Interfaces/IWebFramePrivate.idl: * Interfaces/IWebPreferencesPrivate.idl: * WebFrame.cpp: (WebFrame::resumeAnimations): Deleted. (WebFrame::suspendAnimations): Deleted. (WebFrame::pauseAnimation): Deleted. (WebFrame::pauseTransition): Deleted. (WebFrame::numberOfActiveAnimations): Deleted. * WebFrame.h: * WebPreferenceKeysPrivate.h: * WebPreferences.cpp: (WebPreferences::initializeDefaultSettings): (WebPreferences::webAnimationsCSSIntegrationEnabled): Deleted. (WebPreferences::setWebAnimationsCSSIntegrationEnabled): Deleted. (WebPreferences::setWebAnimationsEnabled): Deleted. (WebPreferences::webAnimationsEnabled): Deleted. * WebPreferences.h: * WebView.cpp: (WebView::notifyPreferencesChanged): Tools: Since we now have a single animation engine, the runtime flags to optionally enable the Web Animations engine are not needed anymore and are now removed. * DumpRenderTree/TestOptions.cpp: (TestOptions::TestOptions): (TestOptions::webViewIsCompatibleWithOptions const): * DumpRenderTree/TestOptions.h: * DumpRenderTree/mac/DumpRenderTree.mm: (enableExperimentalFeatures): (setWebPreferencesForTestOptions): * DumpRenderTree/win/DumpRenderTree.cpp: (enableExperimentalFeatures): (setWebPreferencesForTestOptions): LayoutTests: Remove any use of now-removed testing methods and some runtime flags from layout tests. * animations/legacy-encoding-timing-function.html: * animations/resources/animation-test-helpers.js: (pauseAnimationAtTimeOnElement): * http/tests/contentextensions/css-display-none-keyframe.html: * imported/blink/transitions/resources/opacity-transform-transitions-inside-iframe-inner.html: Removed. * transitions/background-position-transitions.html: * transitions/background-transitions.html: * transitions/blendmode-transitions.html: * transitions/border-radius-transition.html: * transitions/clip-path-path-transitions.html: * transitions/clip-path-transitions.html: * transitions/clip-transition.html: * transitions/color-transition-all.html: * transitions/color-transition-premultiplied.html: * transitions/color-transition-rounding.html: * transitions/cross-fade-background-image.html: * transitions/cross-fade-border-image.html: * transitions/cubic-bezier-overflow-color.html: * transitions/cubic-bezier-overflow-length.html: * transitions/cubic-bezier-overflow-shadow.html: * transitions/cubic-bezier-overflow-svg-length.html: * transitions/cubic-bezier-overflow-transform.html: * transitions/default-timing-function.html: * transitions/delay.html: * transitions/flex-transitions.html: * transitions/font-family-during-transition.html: * transitions/frames-timing-function.html: * transitions/interrupted-all-transition.html: * transitions/longhand-vs-shorthand-initial.html: * transitions/mask-transitions.html: * transitions/min-max-width-height-transitions.html: * transitions/mismatched-shadow-styles.html: * transitions/mismatched-shadow-transitions.html: * transitions/mixed-type.html: * transitions/move-after-transition.html: * transitions/multiple-background-size-transitions.html: * transitions/multiple-background-transitions.html: * transitions/multiple-mask-transitions.html: * transitions/multiple-shadow-transitions.html: * transitions/negative-delay.html: * transitions/opacity-transition-zindex.html: * transitions/resources/transition-test-helpers.js: * transitions/shape-outside-transitions.html: * transitions/shorthand-border-transitions.html: * transitions/shorthand-transitions.html: * transitions/steps-timing-function.html: * transitions/svg-layout-transition.html: * transitions/svg-text-shadow-transition.html: * transitions/svg-transitions.html: * transitions/text-indent-transition.html: * transitions/transform-op-list-match.html: * transitions/transform-op-list-no-match.html: * transitions/transition-end-event-rendering.html: * transitions/transition-hit-test-transform.html: * transitions/transition-hit-test.html: * transitions/transition-in-delay-phase.html: * transitions/transition-on-element-with-content.html: * transitions/transition-shorthand-delay.html: * transitions/transition-timing-function.html: * transitions/transition-to-from-auto.html: * transitions/transition-to-from-undefined.html: * transitions/visited-link-color.html: * transitions/zero-duration-in-list.html: * transitions/zero-duration-with-non-zero-delay-start.html: * webanimations/accelerated-animation-interruption-display-none.html: * webanimations/accelerated-animation-removal-upon-transition-completion.html: * webanimations/accelerated-animation-suspension.html: * webanimations/accelerated-transition-by-removing-property.html: * webanimations/accessing-current-time-after-clearing-css-animation-effect.html: * webanimations/accessing-current-time-after-finished-css-animation-target-removal.html: * webanimations/css-animation-effect-target-change-and-animation-removal-crash.html: * webanimations/css-animation-effect-target-change-and-get-keyframes-crash.html: * webanimations/css-animations.html: * webanimations/css-transition-in-flight-reversal-accelerated.html: * webanimations/empty-keyframes-crash.html: * webanimations/partly-accelerated-transition-by-removing-property.html: * webanimations/setting-css-animation-none-after-clearing-effect.html: * webanimations/setting-css-animation-timing-property-via-style-after-clearing-effect.html: Canonical link: https://commits.webkit.org/229462@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@267188 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2020-09-17 12:39:28 +00:00
<!DOCTYPE html>
2010-09-08 Dean Jackson <dino@apple.com> Reviewed by Simon Fraser. Implement steps() timing function for animations https://bugs.webkit.org/show_bug.cgi?id=44541 Tests: animations/timing-functions.html transitions/steps-timing-function.html * css/CSSComputedStyleDeclaration.cpp: (WebCore::getTimingFunctionValue): - when creating computed style we now test what type of timing function it being used * css/CSSParser.cpp: (WebCore::CSSParser::parseCubicBezierTimingFunctionValue): - rename this method from parseTimingFunctionValue (WebCore::CSSParser::parseAnimationTimingFunction): - support parsing the steps() function * css/CSSParser.h: - method rename * css/CSSStyleSelector.cpp: (WebCore::CSSStyleSelector::mapAnimationTimingFunction): - handle 'step-start' and 'step-end' identifiers. Also now use ::create when constructing objects * css/CSSTimingFunctionValue.cpp: (WebCore::CSSLinearTimingFunctionValue::cssText): (WebCore::CSSCubicBezierTimingFunctionValue::cssText): (WebCore::CSSStepsTimingFunctionValue::cssText): - new text output for computed style. We now produce the text 'linear' when appropriate. * css/CSSTimingFunctionValue.h: (WebCore::CSSTimingFunctionValue::isLinearTimingFunctionValue): (WebCore::CSSTimingFunctionValue::isCubicBezierTimingFunctionValue): (WebCore::CSSTimingFunctionValue::isStepsTimingFunctionValue): (WebCore::CSSTimingFunctionValue::CSSTimingFunctionValue): (WebCore::CSSTimingFunctionValue::isTimingFunctionValue): (WebCore::CSSLinearTimingFunctionValue::create): (WebCore::CSSLinearTimingFunctionValue::isLinearTimingFunctionValue): (WebCore::CSSLinearTimingFunctionValue::CSSLinearTimingFunctionValue): (WebCore::CSSCubicBezierTimingFunctionValue::create): (WebCore::CSSCubicBezierTimingFunctionValue::isCubicBezierTimingFunctionValue): (WebCore::CSSCubicBezierTimingFunctionValue::CSSCubicBezierTimingFunctionValue): (WebCore::CSSStepsTimingFunctionValue::create): (WebCore::CSSStepsTimingFunctionValue::numberOfSteps): (WebCore::CSSStepsTimingFunctionValue::stepAtStart): (WebCore::CSSStepsTimingFunctionValue::isStepsTimingFunctionValue): (WebCore::CSSStepsTimingFunctionValue::CSSStepsTimingFunctionValue): - CSSTimingFunction is now a pure virtual ref-counted base class, with subclasses for each of the three supported timing functions. * css/CSSValueKeywords.in: - new keywords step-start and step-end * page/animation/AnimationBase.cpp: (WebCore::solveStepsFunction): - produces the output value from a stepping function (WebCore::AnimationBase::progress): - now has to switch based on timing function type * page/animation/KeyframeAnimation.cpp: (WebCore::KeyframeAnimation::fetchIntervalEndpointsForProperty): - use ref-counted access * platform/animation/Animation.cpp: (WebCore::Animation::animationsMatch): - change timing function comparison for operator== * platform/animation/Animation.h: (WebCore::Animation::timingFunction): (WebCore::Animation::setTimingFunction): (WebCore::Animation::initialAnimationTimingFunction): - move to ref-counted timing function class * platform/animation/TimingFunction.h: (WebCore::TimingFunction::~TimingFunction): (WebCore::TimingFunction::isLinearTimingFunction): (WebCore::TimingFunction::isCubicBezierTimingFunction): (WebCore::TimingFunction::isStepsTimingFunction): (WebCore::TimingFunction::TimingFunction): (WebCore::LinearTimingFunction::create): (WebCore::LinearTimingFunction::~LinearTimingFunction): (WebCore::LinearTimingFunction::operator==): (WebCore::LinearTimingFunction::LinearTimingFunction): (WebCore::CubicBezierTimingFunction::create): (WebCore::CubicBezierTimingFunction::~CubicBezierTimingFunction): (WebCore::CubicBezierTimingFunction::operator==): (WebCore::CubicBezierTimingFunction::CubicBezierTimingFunction): (WebCore::StepsTimingFunction::create): (WebCore::StepsTimingFunction::~StepsTimingFunction): (WebCore::StepsTimingFunction::operator==): (WebCore::StepsTimingFunction::numberOfSteps): (WebCore::StepsTimingFunction::stepAtStart): (WebCore::StepsTimingFunction::StepsTimingFunction): - TimingFunction is now a ref-counted pure virtual base class, with three subclasses representing the types of timing functions that are supported. * platform/graphics/GraphicsLayer.h: (WebCore::AnimationValue::AnimationValue): (WebCore::FloatAnimationValue::FloatAnimationValue): (WebCore::TransformAnimationValue::TransformAnimationValue): - use PassRefPtr in function parameters * platform/graphics/qt/GraphicsLayerQt.cpp: (WebCore::solveStepsFunction): (WebCore::applyTimingFunction): (WebCore::AnimationQt::AnimationQt): (WebCore::AnimationQt::updateCurrentTime): - implement the timing function switch for QT * platform/graphics/mac/GraphicsLayerCA.mm: (WebCore::getCAMediaTimingFunction): - update for new timing function interface (WebCore::animationHasStepsTimingFunction): - new method to make sure animations with steps() functions never try to execute in Core Animation (WebCore::GraphicsLayerCA::addAnimation): - test for steps() timing function (WebCore::GraphicsLayerCA::timingFunctionForAnimationValue): * rendering/style/RenderStyleConstants.h: - remove old RenderStyle enum for timing function types Canonical link: https://commits.webkit.org/57777@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@67032 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2010-09-08 23:06:19 +00:00
<html>
2010-09-08 Dean Jackson <dino@apple.com> Reviewed by Simon Fraser. Implement steps() timing function for animations https://bugs.webkit.org/show_bug.cgi?id=44541 Tests: animations/timing-functions.html transitions/steps-timing-function.html * css/CSSComputedStyleDeclaration.cpp: (WebCore::getTimingFunctionValue): - when creating computed style we now test what type of timing function it being used * css/CSSParser.cpp: (WebCore::CSSParser::parseCubicBezierTimingFunctionValue): - rename this method from parseTimingFunctionValue (WebCore::CSSParser::parseAnimationTimingFunction): - support parsing the steps() function * css/CSSParser.h: - method rename * css/CSSStyleSelector.cpp: (WebCore::CSSStyleSelector::mapAnimationTimingFunction): - handle 'step-start' and 'step-end' identifiers. Also now use ::create when constructing objects * css/CSSTimingFunctionValue.cpp: (WebCore::CSSLinearTimingFunctionValue::cssText): (WebCore::CSSCubicBezierTimingFunctionValue::cssText): (WebCore::CSSStepsTimingFunctionValue::cssText): - new text output for computed style. We now produce the text 'linear' when appropriate. * css/CSSTimingFunctionValue.h: (WebCore::CSSTimingFunctionValue::isLinearTimingFunctionValue): (WebCore::CSSTimingFunctionValue::isCubicBezierTimingFunctionValue): (WebCore::CSSTimingFunctionValue::isStepsTimingFunctionValue): (WebCore::CSSTimingFunctionValue::CSSTimingFunctionValue): (WebCore::CSSTimingFunctionValue::isTimingFunctionValue): (WebCore::CSSLinearTimingFunctionValue::create): (WebCore::CSSLinearTimingFunctionValue::isLinearTimingFunctionValue): (WebCore::CSSLinearTimingFunctionValue::CSSLinearTimingFunctionValue): (WebCore::CSSCubicBezierTimingFunctionValue::create): (WebCore::CSSCubicBezierTimingFunctionValue::isCubicBezierTimingFunctionValue): (WebCore::CSSCubicBezierTimingFunctionValue::CSSCubicBezierTimingFunctionValue): (WebCore::CSSStepsTimingFunctionValue::create): (WebCore::CSSStepsTimingFunctionValue::numberOfSteps): (WebCore::CSSStepsTimingFunctionValue::stepAtStart): (WebCore::CSSStepsTimingFunctionValue::isStepsTimingFunctionValue): (WebCore::CSSStepsTimingFunctionValue::CSSStepsTimingFunctionValue): - CSSTimingFunction is now a pure virtual ref-counted base class, with subclasses for each of the three supported timing functions. * css/CSSValueKeywords.in: - new keywords step-start and step-end * page/animation/AnimationBase.cpp: (WebCore::solveStepsFunction): - produces the output value from a stepping function (WebCore::AnimationBase::progress): - now has to switch based on timing function type * page/animation/KeyframeAnimation.cpp: (WebCore::KeyframeAnimation::fetchIntervalEndpointsForProperty): - use ref-counted access * platform/animation/Animation.cpp: (WebCore::Animation::animationsMatch): - change timing function comparison for operator== * platform/animation/Animation.h: (WebCore::Animation::timingFunction): (WebCore::Animation::setTimingFunction): (WebCore::Animation::initialAnimationTimingFunction): - move to ref-counted timing function class * platform/animation/TimingFunction.h: (WebCore::TimingFunction::~TimingFunction): (WebCore::TimingFunction::isLinearTimingFunction): (WebCore::TimingFunction::isCubicBezierTimingFunction): (WebCore::TimingFunction::isStepsTimingFunction): (WebCore::TimingFunction::TimingFunction): (WebCore::LinearTimingFunction::create): (WebCore::LinearTimingFunction::~LinearTimingFunction): (WebCore::LinearTimingFunction::operator==): (WebCore::LinearTimingFunction::LinearTimingFunction): (WebCore::CubicBezierTimingFunction::create): (WebCore::CubicBezierTimingFunction::~CubicBezierTimingFunction): (WebCore::CubicBezierTimingFunction::operator==): (WebCore::CubicBezierTimingFunction::CubicBezierTimingFunction): (WebCore::StepsTimingFunction::create): (WebCore::StepsTimingFunction::~StepsTimingFunction): (WebCore::StepsTimingFunction::operator==): (WebCore::StepsTimingFunction::numberOfSteps): (WebCore::StepsTimingFunction::stepAtStart): (WebCore::StepsTimingFunction::StepsTimingFunction): - TimingFunction is now a ref-counted pure virtual base class, with three subclasses representing the types of timing functions that are supported. * platform/graphics/GraphicsLayer.h: (WebCore::AnimationValue::AnimationValue): (WebCore::FloatAnimationValue::FloatAnimationValue): (WebCore::TransformAnimationValue::TransformAnimationValue): - use PassRefPtr in function parameters * platform/graphics/qt/GraphicsLayerQt.cpp: (WebCore::solveStepsFunction): (WebCore::applyTimingFunction): (WebCore::AnimationQt::AnimationQt): (WebCore::AnimationQt::updateCurrentTime): - implement the timing function switch for QT * platform/graphics/mac/GraphicsLayerCA.mm: (WebCore::getCAMediaTimingFunction): - update for new timing function interface (WebCore::animationHasStepsTimingFunction): - new method to make sure animations with steps() functions never try to execute in Core Animation (WebCore::GraphicsLayerCA::addAnimation): - test for steps() timing function (WebCore::GraphicsLayerCA::timingFunctionForAnimationValue): * rendering/style/RenderStyleConstants.h: - remove old RenderStyle enum for timing function types Canonical link: https://commits.webkit.org/57777@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@67032 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2010-09-08 23:06:19 +00:00
<head>
<style>
2010-09-08 Dean Jackson <dino@apple.com> Reviewed by Simon Fraser. Implement steps() timing function for animations https://bugs.webkit.org/show_bug.cgi?id=44541 Tests: animations/timing-functions.html transitions/steps-timing-function.html * css/CSSComputedStyleDeclaration.cpp: (WebCore::getTimingFunctionValue): - when creating computed style we now test what type of timing function it being used * css/CSSParser.cpp: (WebCore::CSSParser::parseCubicBezierTimingFunctionValue): - rename this method from parseTimingFunctionValue (WebCore::CSSParser::parseAnimationTimingFunction): - support parsing the steps() function * css/CSSParser.h: - method rename * css/CSSStyleSelector.cpp: (WebCore::CSSStyleSelector::mapAnimationTimingFunction): - handle 'step-start' and 'step-end' identifiers. Also now use ::create when constructing objects * css/CSSTimingFunctionValue.cpp: (WebCore::CSSLinearTimingFunctionValue::cssText): (WebCore::CSSCubicBezierTimingFunctionValue::cssText): (WebCore::CSSStepsTimingFunctionValue::cssText): - new text output for computed style. We now produce the text 'linear' when appropriate. * css/CSSTimingFunctionValue.h: (WebCore::CSSTimingFunctionValue::isLinearTimingFunctionValue): (WebCore::CSSTimingFunctionValue::isCubicBezierTimingFunctionValue): (WebCore::CSSTimingFunctionValue::isStepsTimingFunctionValue): (WebCore::CSSTimingFunctionValue::CSSTimingFunctionValue): (WebCore::CSSTimingFunctionValue::isTimingFunctionValue): (WebCore::CSSLinearTimingFunctionValue::create): (WebCore::CSSLinearTimingFunctionValue::isLinearTimingFunctionValue): (WebCore::CSSLinearTimingFunctionValue::CSSLinearTimingFunctionValue): (WebCore::CSSCubicBezierTimingFunctionValue::create): (WebCore::CSSCubicBezierTimingFunctionValue::isCubicBezierTimingFunctionValue): (WebCore::CSSCubicBezierTimingFunctionValue::CSSCubicBezierTimingFunctionValue): (WebCore::CSSStepsTimingFunctionValue::create): (WebCore::CSSStepsTimingFunctionValue::numberOfSteps): (WebCore::CSSStepsTimingFunctionValue::stepAtStart): (WebCore::CSSStepsTimingFunctionValue::isStepsTimingFunctionValue): (WebCore::CSSStepsTimingFunctionValue::CSSStepsTimingFunctionValue): - CSSTimingFunction is now a pure virtual ref-counted base class, with subclasses for each of the three supported timing functions. * css/CSSValueKeywords.in: - new keywords step-start and step-end * page/animation/AnimationBase.cpp: (WebCore::solveStepsFunction): - produces the output value from a stepping function (WebCore::AnimationBase::progress): - now has to switch based on timing function type * page/animation/KeyframeAnimation.cpp: (WebCore::KeyframeAnimation::fetchIntervalEndpointsForProperty): - use ref-counted access * platform/animation/Animation.cpp: (WebCore::Animation::animationsMatch): - change timing function comparison for operator== * platform/animation/Animation.h: (WebCore::Animation::timingFunction): (WebCore::Animation::setTimingFunction): (WebCore::Animation::initialAnimationTimingFunction): - move to ref-counted timing function class * platform/animation/TimingFunction.h: (WebCore::TimingFunction::~TimingFunction): (WebCore::TimingFunction::isLinearTimingFunction): (WebCore::TimingFunction::isCubicBezierTimingFunction): (WebCore::TimingFunction::isStepsTimingFunction): (WebCore::TimingFunction::TimingFunction): (WebCore::LinearTimingFunction::create): (WebCore::LinearTimingFunction::~LinearTimingFunction): (WebCore::LinearTimingFunction::operator==): (WebCore::LinearTimingFunction::LinearTimingFunction): (WebCore::CubicBezierTimingFunction::create): (WebCore::CubicBezierTimingFunction::~CubicBezierTimingFunction): (WebCore::CubicBezierTimingFunction::operator==): (WebCore::CubicBezierTimingFunction::CubicBezierTimingFunction): (WebCore::StepsTimingFunction::create): (WebCore::StepsTimingFunction::~StepsTimingFunction): (WebCore::StepsTimingFunction::operator==): (WebCore::StepsTimingFunction::numberOfSteps): (WebCore::StepsTimingFunction::stepAtStart): (WebCore::StepsTimingFunction::StepsTimingFunction): - TimingFunction is now a ref-counted pure virtual base class, with three subclasses representing the types of timing functions that are supported. * platform/graphics/GraphicsLayer.h: (WebCore::AnimationValue::AnimationValue): (WebCore::FloatAnimationValue::FloatAnimationValue): (WebCore::TransformAnimationValue::TransformAnimationValue): - use PassRefPtr in function parameters * platform/graphics/qt/GraphicsLayerQt.cpp: (WebCore::solveStepsFunction): (WebCore::applyTimingFunction): (WebCore::AnimationQt::AnimationQt): (WebCore::AnimationQt::updateCurrentTime): - implement the timing function switch for QT * platform/graphics/mac/GraphicsLayerCA.mm: (WebCore::getCAMediaTimingFunction): - update for new timing function interface (WebCore::animationHasStepsTimingFunction): - new method to make sure animations with steps() functions never try to execute in Core Animation (WebCore::GraphicsLayerCA::addAnimation): - test for steps() timing function (WebCore::GraphicsLayerCA::timingFunctionForAnimationValue): * rendering/style/RenderStyleConstants.h: - remove old RenderStyle enum for timing function types Canonical link: https://commits.webkit.org/57777@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@67032 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2010-09-08 23:06:19 +00:00
#box {
height: 100px;
width: 100px;
background-color: blue;
-webkit-transform: translateX(0px);
-webkit-transition-duration: 1s;
-webkit-transition-timing-function: steps(3, end);
-webkit-transition-property: -webkit-transform;
}
</style>
<script src="resources/transition-test-helpers.js"></script>
<script type="text/javascript">
2010-09-08 Dean Jackson <dino@apple.com> Reviewed by Simon Fraser. Implement steps() timing function for animations https://bugs.webkit.org/show_bug.cgi?id=44541 Tests: animations/timing-functions.html transitions/steps-timing-function.html * css/CSSComputedStyleDeclaration.cpp: (WebCore::getTimingFunctionValue): - when creating computed style we now test what type of timing function it being used * css/CSSParser.cpp: (WebCore::CSSParser::parseCubicBezierTimingFunctionValue): - rename this method from parseTimingFunctionValue (WebCore::CSSParser::parseAnimationTimingFunction): - support parsing the steps() function * css/CSSParser.h: - method rename * css/CSSStyleSelector.cpp: (WebCore::CSSStyleSelector::mapAnimationTimingFunction): - handle 'step-start' and 'step-end' identifiers. Also now use ::create when constructing objects * css/CSSTimingFunctionValue.cpp: (WebCore::CSSLinearTimingFunctionValue::cssText): (WebCore::CSSCubicBezierTimingFunctionValue::cssText): (WebCore::CSSStepsTimingFunctionValue::cssText): - new text output for computed style. We now produce the text 'linear' when appropriate. * css/CSSTimingFunctionValue.h: (WebCore::CSSTimingFunctionValue::isLinearTimingFunctionValue): (WebCore::CSSTimingFunctionValue::isCubicBezierTimingFunctionValue): (WebCore::CSSTimingFunctionValue::isStepsTimingFunctionValue): (WebCore::CSSTimingFunctionValue::CSSTimingFunctionValue): (WebCore::CSSTimingFunctionValue::isTimingFunctionValue): (WebCore::CSSLinearTimingFunctionValue::create): (WebCore::CSSLinearTimingFunctionValue::isLinearTimingFunctionValue): (WebCore::CSSLinearTimingFunctionValue::CSSLinearTimingFunctionValue): (WebCore::CSSCubicBezierTimingFunctionValue::create): (WebCore::CSSCubicBezierTimingFunctionValue::isCubicBezierTimingFunctionValue): (WebCore::CSSCubicBezierTimingFunctionValue::CSSCubicBezierTimingFunctionValue): (WebCore::CSSStepsTimingFunctionValue::create): (WebCore::CSSStepsTimingFunctionValue::numberOfSteps): (WebCore::CSSStepsTimingFunctionValue::stepAtStart): (WebCore::CSSStepsTimingFunctionValue::isStepsTimingFunctionValue): (WebCore::CSSStepsTimingFunctionValue::CSSStepsTimingFunctionValue): - CSSTimingFunction is now a pure virtual ref-counted base class, with subclasses for each of the three supported timing functions. * css/CSSValueKeywords.in: - new keywords step-start and step-end * page/animation/AnimationBase.cpp: (WebCore::solveStepsFunction): - produces the output value from a stepping function (WebCore::AnimationBase::progress): - now has to switch based on timing function type * page/animation/KeyframeAnimation.cpp: (WebCore::KeyframeAnimation::fetchIntervalEndpointsForProperty): - use ref-counted access * platform/animation/Animation.cpp: (WebCore::Animation::animationsMatch): - change timing function comparison for operator== * platform/animation/Animation.h: (WebCore::Animation::timingFunction): (WebCore::Animation::setTimingFunction): (WebCore::Animation::initialAnimationTimingFunction): - move to ref-counted timing function class * platform/animation/TimingFunction.h: (WebCore::TimingFunction::~TimingFunction): (WebCore::TimingFunction::isLinearTimingFunction): (WebCore::TimingFunction::isCubicBezierTimingFunction): (WebCore::TimingFunction::isStepsTimingFunction): (WebCore::TimingFunction::TimingFunction): (WebCore::LinearTimingFunction::create): (WebCore::LinearTimingFunction::~LinearTimingFunction): (WebCore::LinearTimingFunction::operator==): (WebCore::LinearTimingFunction::LinearTimingFunction): (WebCore::CubicBezierTimingFunction::create): (WebCore::CubicBezierTimingFunction::~CubicBezierTimingFunction): (WebCore::CubicBezierTimingFunction::operator==): (WebCore::CubicBezierTimingFunction::CubicBezierTimingFunction): (WebCore::StepsTimingFunction::create): (WebCore::StepsTimingFunction::~StepsTimingFunction): (WebCore::StepsTimingFunction::operator==): (WebCore::StepsTimingFunction::numberOfSteps): (WebCore::StepsTimingFunction::stepAtStart): (WebCore::StepsTimingFunction::StepsTimingFunction): - TimingFunction is now a ref-counted pure virtual base class, with three subclasses representing the types of timing functions that are supported. * platform/graphics/GraphicsLayer.h: (WebCore::AnimationValue::AnimationValue): (WebCore::FloatAnimationValue::FloatAnimationValue): (WebCore::TransformAnimationValue::TransformAnimationValue): - use PassRefPtr in function parameters * platform/graphics/qt/GraphicsLayerQt.cpp: (WebCore::solveStepsFunction): (WebCore::applyTimingFunction): (WebCore::AnimationQt::AnimationQt): (WebCore::AnimationQt::updateCurrentTime): - implement the timing function switch for QT * platform/graphics/mac/GraphicsLayerCA.mm: (WebCore::getCAMediaTimingFunction): - update for new timing function interface (WebCore::animationHasStepsTimingFunction): - new method to make sure animations with steps() functions never try to execute in Core Animation (WebCore::GraphicsLayerCA::addAnimation): - test for steps() timing function (WebCore::GraphicsLayerCA::timingFunctionForAnimationValue): * rendering/style/RenderStyleConstants.h: - remove old RenderStyle enum for timing function types Canonical link: https://commits.webkit.org/57777@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@67032 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2010-09-08 23:06:19 +00:00
const expectedValues = [
// [time, element-id, property, expected-value, tolerance]
[0.25, "box", "-webkit-transform.4", 0, 5],
[0.5, "box", "-webkit-transform.4", 66, 5],
[0.75, "box", "-webkit-transform.4", 133, 5],
];
function setupTest()
{
var box = document.getElementById('box');
box.style.webkitTransform = 'translateX(200px)';
}
runTransitionTest(expectedValues, setupTest, usePauseAPI);
2010-09-08 Dean Jackson <dino@apple.com> Reviewed by Simon Fraser. Implement steps() timing function for animations https://bugs.webkit.org/show_bug.cgi?id=44541 Tests: animations/timing-functions.html transitions/steps-timing-function.html * css/CSSComputedStyleDeclaration.cpp: (WebCore::getTimingFunctionValue): - when creating computed style we now test what type of timing function it being used * css/CSSParser.cpp: (WebCore::CSSParser::parseCubicBezierTimingFunctionValue): - rename this method from parseTimingFunctionValue (WebCore::CSSParser::parseAnimationTimingFunction): - support parsing the steps() function * css/CSSParser.h: - method rename * css/CSSStyleSelector.cpp: (WebCore::CSSStyleSelector::mapAnimationTimingFunction): - handle 'step-start' and 'step-end' identifiers. Also now use ::create when constructing objects * css/CSSTimingFunctionValue.cpp: (WebCore::CSSLinearTimingFunctionValue::cssText): (WebCore::CSSCubicBezierTimingFunctionValue::cssText): (WebCore::CSSStepsTimingFunctionValue::cssText): - new text output for computed style. We now produce the text 'linear' when appropriate. * css/CSSTimingFunctionValue.h: (WebCore::CSSTimingFunctionValue::isLinearTimingFunctionValue): (WebCore::CSSTimingFunctionValue::isCubicBezierTimingFunctionValue): (WebCore::CSSTimingFunctionValue::isStepsTimingFunctionValue): (WebCore::CSSTimingFunctionValue::CSSTimingFunctionValue): (WebCore::CSSTimingFunctionValue::isTimingFunctionValue): (WebCore::CSSLinearTimingFunctionValue::create): (WebCore::CSSLinearTimingFunctionValue::isLinearTimingFunctionValue): (WebCore::CSSLinearTimingFunctionValue::CSSLinearTimingFunctionValue): (WebCore::CSSCubicBezierTimingFunctionValue::create): (WebCore::CSSCubicBezierTimingFunctionValue::isCubicBezierTimingFunctionValue): (WebCore::CSSCubicBezierTimingFunctionValue::CSSCubicBezierTimingFunctionValue): (WebCore::CSSStepsTimingFunctionValue::create): (WebCore::CSSStepsTimingFunctionValue::numberOfSteps): (WebCore::CSSStepsTimingFunctionValue::stepAtStart): (WebCore::CSSStepsTimingFunctionValue::isStepsTimingFunctionValue): (WebCore::CSSStepsTimingFunctionValue::CSSStepsTimingFunctionValue): - CSSTimingFunction is now a pure virtual ref-counted base class, with subclasses for each of the three supported timing functions. * css/CSSValueKeywords.in: - new keywords step-start and step-end * page/animation/AnimationBase.cpp: (WebCore::solveStepsFunction): - produces the output value from a stepping function (WebCore::AnimationBase::progress): - now has to switch based on timing function type * page/animation/KeyframeAnimation.cpp: (WebCore::KeyframeAnimation::fetchIntervalEndpointsForProperty): - use ref-counted access * platform/animation/Animation.cpp: (WebCore::Animation::animationsMatch): - change timing function comparison for operator== * platform/animation/Animation.h: (WebCore::Animation::timingFunction): (WebCore::Animation::setTimingFunction): (WebCore::Animation::initialAnimationTimingFunction): - move to ref-counted timing function class * platform/animation/TimingFunction.h: (WebCore::TimingFunction::~TimingFunction): (WebCore::TimingFunction::isLinearTimingFunction): (WebCore::TimingFunction::isCubicBezierTimingFunction): (WebCore::TimingFunction::isStepsTimingFunction): (WebCore::TimingFunction::TimingFunction): (WebCore::LinearTimingFunction::create): (WebCore::LinearTimingFunction::~LinearTimingFunction): (WebCore::LinearTimingFunction::operator==): (WebCore::LinearTimingFunction::LinearTimingFunction): (WebCore::CubicBezierTimingFunction::create): (WebCore::CubicBezierTimingFunction::~CubicBezierTimingFunction): (WebCore::CubicBezierTimingFunction::operator==): (WebCore::CubicBezierTimingFunction::CubicBezierTimingFunction): (WebCore::StepsTimingFunction::create): (WebCore::StepsTimingFunction::~StepsTimingFunction): (WebCore::StepsTimingFunction::operator==): (WebCore::StepsTimingFunction::numberOfSteps): (WebCore::StepsTimingFunction::stepAtStart): (WebCore::StepsTimingFunction::StepsTimingFunction): - TimingFunction is now a ref-counted pure virtual base class, with three subclasses representing the types of timing functions that are supported. * platform/graphics/GraphicsLayer.h: (WebCore::AnimationValue::AnimationValue): (WebCore::FloatAnimationValue::FloatAnimationValue): (WebCore::TransformAnimationValue::TransformAnimationValue): - use PassRefPtr in function parameters * platform/graphics/qt/GraphicsLayerQt.cpp: (WebCore::solveStepsFunction): (WebCore::applyTimingFunction): (WebCore::AnimationQt::AnimationQt): (WebCore::AnimationQt::updateCurrentTime): - implement the timing function switch for QT * platform/graphics/mac/GraphicsLayerCA.mm: (WebCore::getCAMediaTimingFunction): - update for new timing function interface (WebCore::animationHasStepsTimingFunction): - new method to make sure animations with steps() functions never try to execute in Core Animation (WebCore::GraphicsLayerCA::addAnimation): - test for steps() timing function (WebCore::GraphicsLayerCA::timingFunctionForAnimationValue): * rendering/style/RenderStyleConstants.h: - remove old RenderStyle enum for timing function types Canonical link: https://commits.webkit.org/57777@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@67032 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2010-09-08 23:06:19 +00:00
</script>
</head>
<body>
<p>
The box should move horizontally 200px over 1s, in 3 equal increments.
</p>
<div id="box">
</div>
<div id="result">
</div>
</body>
</html>