// Copyright 2014 Google Inc. All rights reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. (function(shared, scope, testing) { scope.Animation = function(target, effectInput, timingInput) { var animationNode = scope.AnimationNode(shared.normalizeTimingInput(timingInput)); var effect = scope.convertEffectInput(effectInput); var timeFraction; var animation = function() { WEB_ANIMATIONS_TESTING && console.assert(typeof timeFraction !== 'undefined'); effect(target, timeFraction); }; // Returns whether the animation is in effect or not after the timing update. animation._update = function(localTime) { timeFraction = animationNode(localTime); return timeFraction !== null; }; animation._clear = function() { effect(target, null); }; animation._hasSameTarget = function(otherTarget) { return target === otherTarget; }; animation._isCurrent = animationNode._isCurrent; animation._totalDuration = animationNode._totalDuration; return animation; }; scope.NullAnimation = function(clear) { var nullAnimation = function() { if (clear) { clear(); clear = null; } }; nullAnimation._update = function() { return null; }; nullAnimation._totalDuration = 0; nullAnimation._isCurrent = function() { return false; }; nullAnimation._hasSameTarget = function() { return false; }; return nullAnimation; }; if (WEB_ANIMATIONS_TESTING) { testing.webAnimations1Animation = scope.Animation; } })(webAnimationsShared, webAnimations1, webAnimationsTesting);