OLD | NEW |
---|---|
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 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 #include "config.h" | 5 #include "config.h" |
6 | 6 |
7 #include "core/inspector/InspectorAnimationAgent.h" | 7 #include "core/inspector/InspectorAnimationAgent.h" |
8 | 8 |
9 #include "core/animation/Animation.h" | 9 #include "core/animation/Animation.h" |
10 #include "core/animation/AnimationEffect.h" | 10 #include "core/animation/AnimationEffect.h" |
(...skipping 16 matching lines...) Expand all Loading... | |
27 #include "core/inspector/InspectorCSSAgent.h" | 27 #include "core/inspector/InspectorCSSAgent.h" |
28 #include "core/inspector/InspectorDOMAgent.h" | 28 #include "core/inspector/InspectorDOMAgent.h" |
29 #include "core/inspector/InspectorState.h" | 29 #include "core/inspector/InspectorState.h" |
30 #include "core/inspector/InspectorStyleSheet.h" | 30 #include "core/inspector/InspectorStyleSheet.h" |
31 #include "platform/Decimal.h" | 31 #include "platform/Decimal.h" |
32 #include "platform/animation/TimingFunction.h" | 32 #include "platform/animation/TimingFunction.h" |
33 #include "wtf/text/Base64.h" | 33 #include "wtf/text/Base64.h" |
34 | 34 |
35 namespace AnimationAgentState { | 35 namespace AnimationAgentState { |
36 static const char animationAgentEnabled[] = "animationAgentEnabled"; | 36 static const char animationAgentEnabled[] = "animationAgentEnabled"; |
37 static const char animationAgentPlaybackRate[] = "animationAgentPlaybackRate"; | |
37 } | 38 } |
38 | 39 |
39 namespace blink { | 40 namespace blink { |
40 | 41 |
41 InspectorAnimationAgent::InspectorAnimationAgent(InspectedFrames* inspectedFrame s, InspectorDOMAgent* domAgent, InspectorCSSAgent* cssAgent, InjectedScriptManag er* injectedScriptManager) | 42 InspectorAnimationAgent::InspectorAnimationAgent(InspectedFrames* inspectedFrame s, InspectorDOMAgent* domAgent, InspectorCSSAgent* cssAgent, InjectedScriptManag er* injectedScriptManager) |
42 : InspectorBaseAgent<InspectorAnimationAgent, InspectorFrontend::Animation>( "Animation") | 43 : InspectorBaseAgent<InspectorAnimationAgent, InspectorFrontend::Animation>( "Animation") |
43 , m_inspectedFrames(inspectedFrames) | 44 , m_inspectedFrames(inspectedFrames) |
44 , m_domAgent(domAgent) | 45 , m_domAgent(domAgent) |
45 , m_cssAgent(cssAgent) | 46 , m_cssAgent(cssAgent) |
46 , m_injectedScriptManager(injectedScriptManager) | 47 , m_injectedScriptManager(injectedScriptManager) |
47 , m_isCloning(false) | 48 , m_isCloning(false) |
48 { | 49 { |
49 } | 50 } |
50 | 51 |
51 void InspectorAnimationAgent::restore() | 52 void InspectorAnimationAgent::restore() |
52 { | 53 { |
53 if (m_state->getBoolean(AnimationAgentState::animationAgentEnabled)) { | 54 if (m_state->getBoolean(AnimationAgentState::animationAgentEnabled)) { |
pfeldman
2015/11/27 03:53:30
You should restore the playback rate here, not in
| |
54 ErrorString error; | 55 ErrorString error; |
55 enable(&error); | 56 enable(&error); |
56 } | 57 } |
57 } | 58 } |
58 | 59 |
59 void InspectorAnimationAgent::enable(ErrorString*) | 60 void InspectorAnimationAgent::enable(ErrorString*) |
60 { | 61 { |
61 m_state->setBoolean(AnimationAgentState::animationAgentEnabled, true); | 62 m_state->setBoolean(AnimationAgentState::animationAgentEnabled, true); |
62 m_instrumentingAgents->setInspectorAnimationAgent(this); | 63 m_instrumentingAgents->setInspectorAnimationAgent(this); |
64 double playbackRate = m_state->getDouble(AnimationAgentState::animationAgent PlaybackRate); | |
pfeldman
2015/11/27 03:53:30
State should be clean on enable, this code belongs
samli
2015/11/27 04:10:55
Oh, didn't realise restore() is called during the
| |
65 if (playbackRate != 1 && playbackRate != 0) | |
pfeldman
2015/11/27 03:53:30
why don't you restore 1 and 0?
samli
2015/11/27 04:10:55
No need to restore 1, already 1. If its not in the
| |
66 setPlaybackRate(nullptr, playbackRate); | |
63 } | 67 } |
64 | 68 |
65 void InspectorAnimationAgent::disable(ErrorString*) | 69 void InspectorAnimationAgent::disable(ErrorString*) |
66 { | 70 { |
67 setPlaybackRate(nullptr, 1); | 71 for (LocalFrame* frame : *m_inspectedFrames) |
72 frame->document()->timeline().setPlaybackRate(1); | |
68 m_state->setBoolean(AnimationAgentState::animationAgentEnabled, false); | 73 m_state->setBoolean(AnimationAgentState::animationAgentEnabled, false); |
pfeldman
2015/11/27 03:53:30
You need to clear the rate here as well.
samli
2015/11/27 04:10:55
Done.
| |
69 m_instrumentingAgents->setInspectorAnimationAgent(nullptr); | 74 m_instrumentingAgents->setInspectorAnimationAgent(nullptr); |
70 m_idToAnimation.clear(); | 75 m_idToAnimation.clear(); |
71 m_idToAnimationType.clear(); | 76 m_idToAnimationType.clear(); |
72 m_idToAnimationClone.clear(); | 77 m_idToAnimationClone.clear(); |
73 } | 78 } |
74 | 79 |
80 void InspectorAnimationAgent::clearFrontend() | |
81 { | |
82 setPlaybackRate(nullptr, 1); | |
pfeldman
2015/11/27 03:53:30
Nothing should happen upon front-end disconnect -
samli
2015/11/27 04:10:55
Done.
| |
83 } | |
84 | |
75 void InspectorAnimationAgent::didCommitLoadForLocalFrame(LocalFrame* frame) | 85 void InspectorAnimationAgent::didCommitLoadForLocalFrame(LocalFrame* frame) |
76 { | 86 { |
77 if (frame == m_inspectedFrames->root()) { | 87 if (frame == m_inspectedFrames->root()) { |
78 m_idToAnimation.clear(); | 88 m_idToAnimation.clear(); |
79 m_idToAnimationType.clear(); | 89 m_idToAnimationType.clear(); |
80 m_idToAnimationClone.clear(); | 90 m_idToAnimationClone.clear(); |
81 } | 91 } |
92 double playbackRate = m_state->getDouble(AnimationAgentState::animationAgent PlaybackRate); | |
93 if (playbackRate != 1 && playbackRate != 0) | |
94 setPlaybackRate(nullptr, playbackRate); | |
82 } | 95 } |
83 | 96 |
84 static PassRefPtr<TypeBuilder::Animation::AnimationEffect> buildObjectForAnimati onEffect(KeyframeEffect* effect, bool isTransition) | 97 static PassRefPtr<TypeBuilder::Animation::AnimationEffect> buildObjectForAnimati onEffect(KeyframeEffect* effect, bool isTransition) |
85 { | 98 { |
86 ComputedTimingProperties computedTiming; | 99 ComputedTimingProperties computedTiming; |
87 effect->computedTiming(computedTiming); | 100 effect->computedTiming(computedTiming); |
88 double delay = computedTiming.delay(); | 101 double delay = computedTiming.delay(); |
89 double duration = computedTiming.duration().getAsUnrestrictedDouble(); | 102 double duration = computedTiming.duration().getAsUnrestrictedDouble(); |
90 String easing = effect->specifiedTiming().timingFunction->toString(); | 103 String easing = effect->specifiedTiming().timingFunction->toString(); |
91 | 104 |
(...skipping 98 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
190 | 203 |
191 void InspectorAnimationAgent::getPlaybackRate(ErrorString*, double* playbackRate ) | 204 void InspectorAnimationAgent::getPlaybackRate(ErrorString*, double* playbackRate ) |
192 { | 205 { |
193 *playbackRate = referenceTimeline().playbackRate(); | 206 *playbackRate = referenceTimeline().playbackRate(); |
194 } | 207 } |
195 | 208 |
196 void InspectorAnimationAgent::setPlaybackRate(ErrorString*, double playbackRate) | 209 void InspectorAnimationAgent::setPlaybackRate(ErrorString*, double playbackRate) |
197 { | 210 { |
198 for (LocalFrame* frame : *m_inspectedFrames) | 211 for (LocalFrame* frame : *m_inspectedFrames) |
199 frame->document()->timeline().setPlaybackRate(playbackRate); | 212 frame->document()->timeline().setPlaybackRate(playbackRate); |
213 m_state->setDouble(AnimationAgentState::animationAgentPlaybackRate, playback Rate); | |
200 } | 214 } |
201 | 215 |
202 void InspectorAnimationAgent::getCurrentTime(ErrorString* errorString, const Str ing& id, double* currentTime) | 216 void InspectorAnimationAgent::getCurrentTime(ErrorString* errorString, const Str ing& id, double* currentTime) |
203 { | 217 { |
204 Animation* animation = assertAnimation(errorString, id); | 218 Animation* animation = assertAnimation(errorString, id); |
205 if (!animation) | 219 if (!animation) |
206 return; | 220 return; |
207 if (m_idToAnimationClone.get(id)) | 221 if (m_idToAnimationClone.get(id)) |
208 animation = m_idToAnimationClone.get(id); | 222 animation = m_idToAnimationClone.get(id); |
209 | 223 |
(...skipping 274 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
484 visitor->trace(m_cssAgent); | 498 visitor->trace(m_cssAgent); |
485 visitor->trace(m_injectedScriptManager); | 499 visitor->trace(m_injectedScriptManager); |
486 visitor->trace(m_idToAnimation); | 500 visitor->trace(m_idToAnimation); |
487 visitor->trace(m_idToAnimationType); | 501 visitor->trace(m_idToAnimationType); |
488 visitor->trace(m_idToAnimationClone); | 502 visitor->trace(m_idToAnimationClone); |
489 #endif | 503 #endif |
490 InspectorBaseAgent::trace(visitor); | 504 InspectorBaseAgent::trace(visitor); |
491 } | 505 } |
492 | 506 |
493 } | 507 } |
OLD | NEW |