InspectorAnimationAgent does not detect cancel after start |
||||||||||||
Issue descriptionIn https://codereview.chromium.org/1422713012 , the behavior of InspectorAnimationAgent was changed to try and report all animation state changes. However the CL had an accidental (I believe) side-effect of ignoring 'cancel' events for any animation that has already been started. This behavior then caused inspector-protocol/animation/animation-empty-transition-cancel.html to break when https://codereview.chromium.org/2647533002/ (unsubmitted) caused the lifecycle to change such that compositing was cleaned (and the animation starts for a split-second) before the animation was cancelled. However you can also reproduce it by simply requesting an animation frame in the same test which also lets compositing run.
,
Jan 27 2017
,
Jan 30 2017
,
Jan 30 2017
,
Jan 30 2017
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/e04864cab7755bdc01abf0431cfd825d488b309c commit e04864cab7755bdc01abf0431cfd825d488b309c Author: smcgruer <smcgruer@chromium.org> Date: Mon Jan 30 21:38:42 2017 Detect/report animations that are cancelled after they start. Previously, we were early-exiting from |animationPlayStateChange| if an animation was contained in |m_idToAnimation|. However, this means that we miss cancel events for animations that have already been started, since the 'start' event causes them to be placed in |m_idToAnimation|. BUG= 686091 Review-Url: https://codereview.chromium.org/2656273003 Cr-Commit-Position: refs/heads/master@{#447074} [add] https://crrev.com/e04864cab7755bdc01abf0431cfd825d488b309c/third_party/WebKit/LayoutTests/inspector-protocol/animation/animation-start-cancel-expected.txt [add] https://crrev.com/e04864cab7755bdc01abf0431cfd825d488b309c/third_party/WebKit/LayoutTests/inspector-protocol/animation/animation-start-cancel.html [modify] https://crrev.com/e04864cab7755bdc01abf0431cfd825d488b309c/third_party/WebKit/Source/core/inspector/InspectorAnimationAgent.cpp
,
Jan 30 2017
,
Jan 31 2017
Marking release block stable because blocked issue 672457 is also release block stable, so we'll have to merge this one too.
,
Jan 31 2017
,
Jan 31 2017
Is this applicable to All OSes or any specific OS?
,
Jan 31 2017
All; apologies for forgetting to mark the checkbox :)
,
Jan 31 2017
Your change meets the bar and is auto-approved for M57. Please go ahead and merge the CL to branch 2987 manually. Please contact milestone owner if you have questions. Owners: amineer@(clank), cmasso@(bling), ketakid@(cros), govind@(desktop) For more details visit https://www.chromium.org/issue-tracking/autotriage - Your friendly Sheriffbot
,
Feb 1 2017
,
Feb 1 2017
Please merge your change to M57 branch 2987 ASAP (latest before 5:00 PM PT today, Wednesday) so we can pick it up for M57 Beta promotion release this week. Thank you.
,
Feb 1 2017
Per comment #12, this is already merged to M57.
,
Feb 2 2017
smcgruer@ Could you please let us know is there any manual repro steps available to verify this issue from Chrome-TE end. Thanks!
,
Feb 2 2017
brajkumar@ I'm not sure if there are any manual steps to verify this, it was discovered via a layout test issue. suzyh@ Do you know if there should be anything Chrome-TE could test? I'm actually surprised to find that if I load up http://output.jsbin.com/gecagud in canary and do animation tracing, the trace still shows that the animation took 10s whilst the actual visual is as expected (near instant cancellation). But perhaps that isn't directly linked to the InspectorAnimationAgent code that was fixed here.
,
Feb 2 2017
+samli for more DevTools-experienced input smcgruer: Could we just create a layout-test-style page that logs to console instead of using InspectorTest, and use that to manually verify? I'm not sure what the procedures are for Chrome-TE and what kind of test we need to provide.
,
Feb 3 2017
I suspect the example in #16 is WAI. The timeline just shows the declarative properties of the animation, showing procedural changes to the animation (in this case cancelling) in its timeline seems like it would be out of scope for the tool to me.
Alternate example to illustrate:
var animation = target.animate({opacity: [0, 1]}, 10000);
setTimeout(() => animation.cancel(), 1000);
The animation would play for 1s but the timeline would capture it as having 10s duration.
,
Feb 3 2017
Yep, Alan is correct. Visually representing an animation's actual state is extremely complex. - the same timeline for an animation is reused for multiple runs of the same animation - imagine representing a something which pauses, then stops, then pauses... - its designed to simulate a composer's view. Think of something like a video editor. Playback is different to definition.
,
Feb 3 2017
Alrighty, in that case then there's really nothing for Chrome-TE to verify here. The verification was the layout test itself. Thanks for the input all. |
||||||||||||
►
Sign in to add a comment |
||||||||||||
Comment 1 by smcgruer@chromium.org
, Jan 27 2017