Chromium Code Reviews| 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 |