Index: polymer_0.5.0/bower_components/web-animations-js/src/timeline.js |
diff --git a/polymer_0.5.0/bower_components/web-animations-js/src/timeline.js b/polymer_0.5.0/bower_components/web-animations-js/src/timeline.js |
new file mode 100644 |
index 0000000000000000000000000000000000000000..e9ed3cac399f9b60bb59a82b494c86494ef889c2 |
--- /dev/null |
+++ b/polymer_0.5.0/bower_components/web-animations-js/src/timeline.js |
@@ -0,0 +1,77 @@ |
+// 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.AnimationTimeline = function() { |
+ this._players = []; |
+ this.currentTime = undefined; |
+ }; |
+ |
+ scope.AnimationTimeline.prototype = { |
+ // FIXME: This needs to return the wrapped players in maxifill |
+ // TODO: Does this need to be sorted? |
+ // TODO: Do we need to consider needsRetick? |
+ getAnimationPlayers: function() { |
+ this._discardPlayers(); |
+ return this._players.slice(); |
+ }, |
+ _discardPlayers: function() { |
+ this._players = this._players.filter(function(player) { |
+ return player.playState != 'finished' && player.playState != 'idle'; |
+ }); |
+ }, |
+ play: function(source) { |
+ var player = new scope.Player(source); |
+ this._players.push(player); |
+ scope.restartMaxifillTick(); |
+ player.play(); |
+ return player; |
+ }, |
+ }; |
+ |
+ var ticking = false; |
+ |
+ scope.restartMaxifillTick = function() { |
+ if (!ticking) { |
+ ticking = true; |
+ requestAnimationFrame(maxifillTick); |
+ } |
+ }; |
+ |
+ function maxifillTick(t) { |
+ var timeline = window.document.timeline; |
+ timeline.currentTime = t; |
+ timeline._discardPlayers(); |
+ if (timeline._players.length == 0) |
+ ticking = false; |
+ else |
+ requestAnimationFrame(maxifillTick); |
+ } |
+ |
+ var timeline = new scope.AnimationTimeline(); |
+ scope.timeline = timeline; |
+ |
+ try { |
+ Object.defineProperty(window.document, 'timeline', { |
+ configurable: true, |
+ get: function() { return timeline; } |
+ }); |
+ } catch (e) { } |
+ try { |
+ window.document.timeline = timeline; |
+ } catch (e) { } |
+ |
+})(webAnimationsShared, webAnimationsMaxifill, webAnimationsTesting); |