OLD | NEW |
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.AnimationPlayer>} */ |
| 17 this._animationsMap = new Map(); |
16 } | 18 } |
17 | 19 |
18 WebInspector.AnimationModel.Events = { | 20 WebInspector.AnimationModel.Events = { |
19 AnimationPlayerCreated: "AnimationPlayerCreated", | 21 AnimationPlayerCreated: "AnimationPlayerCreated", |
20 AnimationPlayerCanceled: "AnimationPlayerCanceled" | 22 AnimationPlayerCanceled: "AnimationPlayerCanceled" |
21 } | 23 } |
22 | 24 |
23 WebInspector.AnimationModel.prototype = { | 25 WebInspector.AnimationModel.prototype = { |
24 /** | 26 /** |
25 * @param {!DOMAgent.NodeId} nodeId | 27 * @param {!DOMAgent.NodeId} nodeId |
(...skipping 19 matching lines...) Expand all Loading... |
45 this._agent.getAnimationPlayersForNode(nodeId, showSubtreeAnimations, re
sultCallback.bind(this)); | 47 this._agent.getAnimationPlayersForNode(nodeId, showSubtreeAnimations, re
sultCallback.bind(this)); |
46 }, | 48 }, |
47 | 49 |
48 /** | 50 /** |
49 * @param {!AnimationAgent.AnimationPlayer} payload | 51 * @param {!AnimationAgent.AnimationPlayer} payload |
50 * @param {boolean} resetTimeline | 52 * @param {boolean} resetTimeline |
51 */ | 53 */ |
52 animationPlayerCreated: function(payload, resetTimeline) | 54 animationPlayerCreated: function(payload, resetTimeline) |
53 { | 55 { |
54 var player = WebInspector.AnimationModel.AnimationPlayer.parsePayload(th
is.target(), payload); | 56 var player = WebInspector.AnimationModel.AnimationPlayer.parsePayload(th
is.target(), payload); |
| 57 if (resetTimeline) |
| 58 this._animationsMap.clear(); |
| 59 this._animationsMap.set(player.id(), player); |
55 this.dispatchEventToListeners(WebInspector.AnimationModel.Events.Animati
onPlayerCreated, { "player": player, "resetTimeline": resetTimeline }); | 60 this.dispatchEventToListeners(WebInspector.AnimationModel.Events.Animati
onPlayerCreated, { "player": player, "resetTimeline": resetTimeline }); |
56 }, | 61 }, |
57 | 62 |
58 /** | 63 /** |
59 * @param {string} playerId | 64 * @param {string} playerId |
60 */ | 65 */ |
61 animationPlayerCanceled: function(playerId) | 66 animationPlayerCanceled: function(playerId) |
62 { | 67 { |
63 this.dispatchEventToListeners(WebInspector.AnimationModel.Events.Animati
onPlayerCanceled, { "playerId": playerId }); | 68 this.dispatchEventToListeners(WebInspector.AnimationModel.Events.Animati
onPlayerCanceled, { "playerId": playerId }); |
64 }, | 69 }, |
65 | 70 |
| 71 /** |
| 72 * @param {function(?Array.<!AnimationAgent.AnimationStartTime>)} userCallba
ck |
| 73 * @param {?Protocol.Error} error |
| 74 * @param {!Array.<!AnimationAgent.AnimationStartTime>} startTimes |
| 75 */ |
| 76 _updateStartTimes: function(userCallback, error, startTimes) |
| 77 { |
| 78 if (error) { |
| 79 userCallback(null); |
| 80 return; |
| 81 } |
| 82 for (var player of startTimes) { |
| 83 var animation = this._animationsMap.get(player.id); |
| 84 console.assert(animation); |
| 85 animation._updateStartTime(player.startTime); |
| 86 } |
| 87 userCallback(startTimes); |
| 88 }, |
| 89 |
| 90 /** |
| 91 * @param {number} playbackRate |
| 92 * @param {function(?Array.<!AnimationAgent.AnimationStartTime>)} userCallba
ck |
| 93 */ |
| 94 setPlaybackRate: function(playbackRate, userCallback) |
| 95 { |
| 96 this._agent.setPlaybackRate(playbackRate, this._updateStartTimes.bind(th
is, userCallback)); |
| 97 }, |
| 98 |
| 99 /** |
| 100 * @param {number} time |
| 101 * @param {function(?Array.<!AnimationAgent.AnimationStartTime>)} userCallba
ck |
| 102 */ |
| 103 seekTimelineTo: function(time, userCallback) |
| 104 { |
| 105 this._agent.seekTimelineTo(time, this._updateStartTimes.bind(this, userC
allback)); |
| 106 }, |
| 107 |
| 108 /** |
| 109 * @param {number} timeDelta |
| 110 */ |
| 111 seekTimelineBy: function(timeDelta) |
| 112 { |
| 113 this._agent.seekTimelineBy(timeDelta); |
| 114 }, |
| 115 |
66 ensureEnabled: function() | 116 ensureEnabled: function() |
67 { | 117 { |
68 if (this._enabled) | 118 if (this._enabled) |
69 return; | 119 return; |
70 this._agent.enable(); | 120 this._agent.enable(); |
71 this._enabled = true; | 121 this._enabled = true; |
72 }, | 122 }, |
73 | 123 |
74 __proto__: WebInspector.SDKModel.prototype | 124 __proto__: WebInspector.SDKModel.prototype |
75 } | 125 } |
(...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
152 playbackRate: function() | 202 playbackRate: function() |
153 { | 203 { |
154 return this._payload.playbackRate; | 204 return this._payload.playbackRate; |
155 }, | 205 }, |
156 | 206 |
157 /** | 207 /** |
158 * @return {number} | 208 * @return {number} |
159 */ | 209 */ |
160 startTime: function() | 210 startTime: function() |
161 { | 211 { |
162 return this._payload.startTime; | 212 return this._startTime === undefined ? this._payload.startTime : this._s
tartTime; |
163 }, | 213 }, |
164 | 214 |
165 /** | 215 /** |
| 216 * @param {number} startTime |
| 217 */ |
| 218 _updateStartTime: function(startTime) |
| 219 { |
| 220 this._startTime = startTime; |
| 221 }, |
| 222 |
| 223 /** |
166 * @return {number} | 224 * @return {number} |
167 */ | 225 */ |
168 endTime: function() | 226 endTime: function() |
169 { | 227 { |
170 if (!this.source().iterations) | 228 if (!this.source().iterations) |
171 return Infinity; | 229 return Infinity; |
172 return this.startTime() + this.source().delay() + this.source().duration
() * this.source().iterations() + this.source().endDelay(); | 230 return this.startTime() + this.source().delay() + this.source().duration
() * this.source().iterations() + this.source().endDelay(); |
173 }, | 231 }, |
174 | 232 |
175 /** | 233 /** |
(...skipping 300 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
476 | 534 |
477 /** | 535 /** |
478 * @override | 536 * @override |
479 * @param {string} playerId | 537 * @param {string} playerId |
480 */ | 538 */ |
481 animationPlayerCanceled: function(playerId) | 539 animationPlayerCanceled: function(playerId) |
482 { | 540 { |
483 this._animationModel.animationPlayerCanceled(playerId); | 541 this._animationModel.animationPlayerCanceled(playerId); |
484 } | 542 } |
485 } | 543 } |
OLD | NEW |