Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(46)

Side by Side Diff: third_party/WebKit/Source/devtools/front_end/animation/AnimationModel.js

Issue 1433623002: Devtools Animations: Don't wait for empty transitions to start (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebase Created 5 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright (c) 2014 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 5
6 /** 6 /**
7 * @constructor 7 * @constructor
8 * @extends {WebInspector.SDKModel} 8 * @extends {WebInspector.SDKModel}
9 * @param {!WebInspector.Target} target 9 * @param {!WebInspector.Target} target
10 */ 10 */
11 WebInspector.AnimationModel = function(target) 11 WebInspector.AnimationModel = function(target)
12 { 12 {
13 WebInspector.SDKModel.call(this, WebInspector.AnimationModel, target); 13 WebInspector.SDKModel.call(this, WebInspector.AnimationModel, target);
14 this._agent = target.animationAgent(); 14 this._agent = target.animationAgent();
15 target.registerAnimationDispatcher(new WebInspector.AnimationDispatcher(this )); 15 target.registerAnimationDispatcher(new WebInspector.AnimationDispatcher(this ));
16 /** @type {!Map.<string, !WebInspector.AnimationModel.Animation>} */ 16 /** @type {!Map.<string, !WebInspector.AnimationModel.Animation>} */
17 this._animationsById = new Map(); 17 this._animationsById = new Map();
18 /** @type {!Map.<string, !WebInspector.AnimationModel.AnimationGroup>} */ 18 /** @type {!Map.<string, !WebInspector.AnimationModel.AnimationGroup>} */
19 this._animationGroups = new Map(); 19 this._animationGroups = new Map();
20 /** @type {!Array.<string>} */ 20 /** @type {!Array.<string>} */
21 this._pendingAnimations = []; 21 this._pendingAnimations = [];
22 target.resourceTreeModel.addEventListener(WebInspector.ResourceTreeModel.Eve ntTypes.MainFrameNavigated, this._mainFrameNavigated, this); 22 target.resourceTreeModel.addEventListener(WebInspector.ResourceTreeModel.Eve ntTypes.MainFrameNavigated, this._mainFrameNavigated, this);
23 } 23 }
24 24
25 WebInspector.AnimationModel.Events = { 25 WebInspector.AnimationModel.Events = {
26 AnimationGroupStarted: "AnimationGroupStarted", 26 AnimationGroupStarted: "AnimationGroupStarted"
27 AnimationCanceled: "AnimationCanceled"
28 } 27 }
29 28
30 WebInspector.AnimationModel.prototype = { 29 WebInspector.AnimationModel.prototype = {
31 _mainFrameNavigated: function() 30 _mainFrameNavigated: function()
32 { 31 {
33 this._animationsById.clear(); 32 this._animationsById.clear();
34 this._animationGroups.clear(); 33 this._animationGroups.clear();
35 this._pendingAnimations = []; 34 this._pendingAnimations = [];
36 }, 35 },
37 36
38 /** 37 /**
39 * @param {string} id 38 * @param {string} id
40 */ 39 */
41 animationCreated: function(id) 40 animationCreated: function(id)
42 { 41 {
43 this._pendingAnimations.push(id); 42 this._pendingAnimations.push(id);
44 }, 43 },
45 44
45 _animationCanceled: function(id)
46 {
47 this._pendingAnimations.remove(id);
48 this._flushPendingAnimationsIfNeeded();
49 },
50
46 /** 51 /**
47 * @param {!AnimationAgent.Animation} payload 52 * @param {!AnimationAgent.Animation} payload
48 */ 53 */
49 animationStarted: function(payload) 54 animationStarted: function(payload)
50 { 55 {
51 var animation = WebInspector.AnimationModel.Animation.parsePayload(this. target(), payload); 56 var animation = WebInspector.AnimationModel.Animation.parsePayload(this. target(), payload);
52 // Ignore Web Animations custom effects & groups. 57 // Ignore Web Animations custom effects & groups.
53 if (animation.type() === "WebAnimation" && animation.source().keyframesR ule().keyframes().length === 0) 58 if (animation.type() === "WebAnimation" && animation.source().keyframesR ule().keyframes().length === 0)
54 this._pendingAnimations.remove(animation.id()); 59 this._pendingAnimations.remove(animation.id());
55 else 60 else
56 this._animationsById.set(animation.id(), animation); 61 this._animationsById.set(animation.id(), animation);
62 this._flushPendingAnimationsIfNeeded();
63 },
57 64
65 _flushPendingAnimationsIfNeeded: function()
66 {
58 for (var id of this._pendingAnimations) { 67 for (var id of this._pendingAnimations) {
59 if (!this._animationsById.get(id)) 68 if (!this._animationsById.get(id))
60 return; 69 return;
61 } 70 }
62 71
63 while (this._pendingAnimations.length) 72 while (this._pendingAnimations.length)
64 this._matchExistingGroups(this._createGroupFromPendingAnimations()); 73 this._matchExistingGroups(this._createGroupFromPendingAnimations());
65 }, 74 },
66 75
67 /** 76 /**
(...skipping 681 matching lines...) Expand 10 before | Expand all | Expand 10 after
749 * @override 758 * @override
750 * @param {string} id 759 * @param {string} id
751 */ 760 */
752 animationCreated: function(id) 761 animationCreated: function(id)
753 { 762 {
754 this._animationModel.animationCreated(id); 763 this._animationModel.animationCreated(id);
755 }, 764 },
756 765
757 /** 766 /**
758 * @override 767 * @override
768 * @param {string} id
769 */
770 animationCanceled: function(id)
771 {
772 this._animationModel._animationCanceled(id);
773 },
774
775 /**
776 * @override
759 * @param {!AnimationAgent.Animation} payload 777 * @param {!AnimationAgent.Animation} payload
760 */ 778 */
761 animationStarted: function(payload) 779 animationStarted: function(payload)
762 { 780 {
763 this._animationModel.animationStarted(payload); 781 this._animationModel.animationStarted(payload);
764 } 782 }
765 } 783 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698