Index: third_party/WebKit/Source/devtools/front_end/animation/AnimationModel.js |
diff --git a/third_party/WebKit/Source/devtools/front_end/animation/AnimationModel.js b/third_party/WebKit/Source/devtools/front_end/animation/AnimationModel.js |
index 252ea1fe99dd885921ab1dc9267cb6e870eed5e0..0fe690cc491bb2fdd854e42bb1af9b2c31d517b6 100644 |
--- a/third_party/WebKit/Source/devtools/front_end/animation/AnimationModel.js |
+++ b/third_party/WebKit/Source/devtools/front_end/animation/AnimationModel.js |
@@ -42,6 +42,9 @@ WebInspector.AnimationModel.prototype = { |
this._pendingAnimations.push(id); |
}, |
+ /** |
+ * @param {string} id |
+ */ |
_animationCanceled: function(id) |
{ |
this._pendingAnimations.remove(id); |
@@ -54,11 +57,16 @@ WebInspector.AnimationModel.prototype = { |
animationStarted: function(payload) |
{ |
var animation = WebInspector.AnimationModel.Animation.parsePayload(this.target(), payload); |
+ |
// Ignore Web Animations custom effects & groups. |
- if (animation.type() === "WebAnimation" && animation.source().keyframesRule().keyframes().length === 0) |
+ if (animation.type() === "WebAnimation" && animation.source().keyframesRule().keyframes().length === 0) { |
this._pendingAnimations.remove(animation.id()); |
- else |
+ } else { |
this._animationsById.set(animation.id(), animation); |
+ if (this._pendingAnimations.indexOf(animation.id()) === -1) |
+ this._pendingAnimations.push(animation.id()); |
+ } |
+ |
this._flushPendingAnimationsIfNeeded(); |
}, |
@@ -429,6 +437,9 @@ WebInspector.AnimationModel.AnimationEffect.prototype = { |
*/ |
iterations: function() |
{ |
+ // Animations with zero duration, zero delays and infinite iterations can't be shown. |
+ if (!this.delay() && !this.endDelay() && !this.duration()) |
+ return 0; |
return this._payload.iterations || Infinity; |
}, |