Changeset 224242 in webkit
- Timestamp:
- Oct 31, 2017 1:28:18 PM (6 years ago)
- Location:
- trunk
- Files:
-
- 18 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/LayoutTests/ChangeLog
r224241 r224242 1 2017-10-31 Antoine Quint <graouts@apple.com> 2 3 [Web Animations] Support AnimationEffect parameter in Animation constructor and read-write timeline property 4 https://bugs.webkit.org/show_bug.cgi?id=179066 5 6 Reviewed by Dean Jackson. 7 8 Rebaseline and amend tests to show support for the AnimationEffect first parameter to the Animation 9 constructor and the default document timeline value for the AnimationTimeline second parameter. 10 11 * http/wpt/web-animations/interfaces/Animation/constructor-expected.txt: 12 * http/wpt/web-animations/interfaces/Animation/idlharness-expected.txt: 13 * http/wpt/web-animations/interfaces/Animation/startTime-expected.txt: 14 * http/wpt/web-animations/interfaces/KeyframeEffect/setTarget-expected.txt: 15 * http/wpt/web-animations/timing-model/animations/current-time-expected.txt: 16 * http/wpt/web-animations/timing-model/animations/reversing-an-animation-expected.txt: 17 * http/wpt/web-animations/timing-model/animations/set-the-animation-start-time-expected.txt: 18 * http/wpt/web-animations/timing-model/animations/set-the-timeline-of-an-animation-expected.txt: 19 * http/wpt/wk-web-animations/timing-model/animation-creation-basic-expected.txt: 20 * http/wpt/wk-web-animations/timing-model/animation-creation-basic.html: 21 * http/wpt/wk-web-animations/timing-model/animation-current-time.html: 22 * http/wpt/wk-web-animations/timing-model/animation-playback-rate.html: 23 * webanimations/animation-creation-addition.html: 24 1 25 2017-10-31 Ali Juma <ajuma@chromium.org> 2 26 -
trunk/LayoutTests/http/wpt/web-animations/interfaces/Animation/constructor-expected.txt
r224182 r224242 1 1 2 FAIL Animation can be constructed with null effect and null timeline assert_equals: Animation .playState should be initially 'idle' expected (string) "idle" but got (undefined) undefined3 FAIL Animation can be constructed with null effect and non-null timeline assert_equals: Animation timeline should be document.timeline expected object "[object DocumentTimeline]" but got null4 FAIL Animation can be constructed with null effect and no timeline parameter assert_equals: Animation timeline should be document.timeline expected object "[object DocumentTimeline]" but got null2 FAIL Animation can be constructed with null effect and null timeline assert_equals: Animation timeline should be null expected null but got object "[object DocumentTimeline]" 3 FAIL Animation can be constructed with null effect and non-null timeline assert_equals: Animation.playState should be initially 'idle' expected (string) "idle" but got (undefined) undefined 4 FAIL Animation can be constructed with null effect and no timeline parameter assert_equals: Animation.playState should be initially 'idle' expected (string) "idle" but got (undefined) undefined 5 5 FAIL Animation can be constructed with non-null effect and null timeline Can't find variable: KeyframeEffectReadOnly 6 6 FAIL Animation can be constructed with non-null effect and non-null timeline Can't find variable: KeyframeEffectReadOnly -
trunk/LayoutTests/http/wpt/web-animations/interfaces/Animation/idlharness-expected.txt
r224182 r224242 12 12 FAIL Animation interface: attribute id assert_true: The prototype object must have a property "id" expected true got false 13 13 PASS Animation interface: attribute effect 14 FAIL Animation interface: attribute timeline assert_equals: setter must be function for PutForwards, Replaceable, or non-readonly attributes expected "function" but got "undefined" 14 PASS Animation interface: attribute timeline 15 15 PASS Animation interface: attribute startTime 16 16 PASS Animation interface: attribute currentTime -
trunk/LayoutTests/http/wpt/web-animations/interfaces/Animation/startTime-expected.txt
r224182 r224242 1 1 2 FAIL startTime of a newly created (idle) animation is unresolved Argument 1 ('timeline') to the Animation constructor must be an instance of AnimationTimeline 3 FAIL startTime of a play-pending animation is unresolved Argument 1 ('timeline') to the Animation constructor must be an instance of AnimationTimeline4 FAIL startTime of a pause-pending animation is unresolved Argument 1 ('timeline') to the Animation constructor must be an instance of AnimationTimeline2 PASS startTime of a newly created (idle) animation is unresolved 3 FAIL startTime of a play-pending animation is unresolved animation.play is not a function. (In 'animation.play()', 'animation.play' is undefined) 4 FAIL startTime of a pause-pending animation is unresolved animation.pause is not a function. (In 'animation.pause()', 'animation.pause' is undefined) 5 5 FAIL startTime of a play-pending animation created using Element.animate shortcut is unresolved createDiv(t).animate is not a function. (In 'createDiv(t).animate(null)', 'createDiv(t).animate' is undefined) 6 6 FAIL startTime is resolved when running createDiv(t).animate is not a function. (In 'createDiv(t).animate(null, 100 * MS_PER_SEC)', 'createDiv(t).animate' is undefined) -
trunk/LayoutTests/http/wpt/web-animations/interfaces/KeyframeEffect/setTarget-expected.txt
r224182 r224242 1 1 2 2 FAIL Test setting target before constructing the associated animation Attempted to assign to readonly property. 3 FAIL Test setting target from null to a valid target Argument 1 ('timeline') to the Animation constructor must be an instance of AnimationTimeline3 FAIL Test setting target from null to a valid target anim.play is not a function. (In 'anim.play()', 'anim.play' is undefined) 4 4 FAIL Test setting target from a valid target to null div.animate is not a function. (In 'div.animate(gKeyFrames, 100 * MS_PER_SEC)', 'div.animate' is undefined) 5 5 FAIL Test setting target from a valid target to another target a.animate is not a function. (In 'a.animate(gKeyFrames, 100 * MS_PER_SEC)', 'a.animate' is undefined) -
trunk/LayoutTests/http/wpt/web-animations/timing-model/animations/current-time-expected.txt
r224182 r224242 1 1 2 FAIL The current time returns the hold time when set Argument 1 ('timeline') to the Animation constructor must be an instance of AnimationTimeline3 FAIL The current time is unresolved when there is no associated timeline (and no hold time is set) Argument 1 ('timeline') to the Animation constructor must be an instance of AnimationTimeline4 FAIL The current time is unresolved when the start time is unresolved (and no hold time is set) Argument 1 ('timeline') to the Animation constructor must be an instance of AnimationTimeline 5 FAIL The current time is calculated from the timeline time, start time and playback rate Argument 1 ('timeline') to the Animation constructor must be an instance of AnimationTimeline2 FAIL The current time returns the hold time when set animation.play is not a function. (In 'animation.play()', 'animation.play' is undefined) 3 FAIL The current time is unresolved when there is no associated timeline (and no hold time is set) undefined is not an object (evaluating 'animation.ready.then') 4 PASS The current time is unresolved when the start time is unresolved (and no hold time is set) 5 FAIL The current time is calculated from the timeline time, start time and playback rate assert_approx_equals: Animation has a unresolved start time expected a number but got a "object" 6 6 FAIL The current time does not progress if playback rate is 0 createDiv(t).animate is not a function. (In 'createDiv(t).animate(null, 100 * MS_PER_SEC)', 'createDiv(t).animate' is undefined) 7 7 -
trunk/LayoutTests/http/wpt/web-animations/timing-model/animations/reversing-an-animation-expected.txt
r224182 r224242 22 22 iterations: Infinity})', 'div.animate' is undefined) 23 23 FAIL Reversing when when playbackRate == 0 should preserve the current time and playback rate div.animate is not a function. (In 'div.animate({}, 100 * MS_PER_SEC)', 'div.animate' is undefined) 24 FAIL Reversing an animation without an active timeline throws an InvalidStateError Argument 1 ('timeline') to the Animation constructor must be an instance of AnimationTimeline24 FAIL Reversing an animation without an active timeline throws an InvalidStateError assert_throws: function "function () { animation.reverse(); }" threw object "TypeError: animation.reverse is not a function. (In 'animation.reverse()', 'animation.reverse' is undefined)" that is not a DOMException InvalidStateError: property "code" is equal to undefined, expected 11 25 25 -
trunk/LayoutTests/http/wpt/web-animations/timing-model/animations/set-the-animation-start-time-expected.txt
r224182 r224242 1 1 2 FAIL Setting the start time of an animation without an active timeline Argument 1 ('timeline') to the Animation constructor must be an instance of AnimationTimeline3 FAIL Setting an unresolved start time an animation without an active timeline does not clear the current time Argument 1 ('timeline') to the Animation constructor must be an instance of AnimationTimeline4 FAIL Setting the start time clears the hold time Argument 1 ('timeline') to the Animation constructor must be an instance of AnimationTimeline5 FAIL Setting an unresolved start time sets the hold time Argument 1 ('timeline') to the Animation constructor must be an instance of AnimationTimeline6 FAIL Setting the start time resolves a pending ready promise Argument 1 ('timeline') to the Animation constructor must be an instance of AnimationTimeline7 FAIL Setting the start time resolves a pending pause task Argument 1 ('timeline') to the Animation constructor must be an instance of AnimationTimeline8 FAIL Setting the start time updates the finished state Argument 1 ('timeline') to the Animation constructor must be an instance of AnimationTimeline2 FAIL Setting the start time of an animation without an active timeline assert_equals: Setting the current time succeeds expected (number) 1000 but got (object) null 3 FAIL Setting an unresolved start time an animation without an active timeline does not clear the current time assert_equals: Setting the current time succeeds expected (number) 1000 but got (object) null 4 FAIL Setting the start time clears the hold time assert_equals: The current time is calculated from the hold time expected (number) 1000 but got (object) null 5 FAIL Setting an unresolved start time sets the hold time assert_equals: expected (string) "running" but got (undefined) undefined 6 FAIL Setting the start time resolves a pending ready promise undefined is not an object (evaluating 'animation.ready.then') 7 FAIL Setting the start time resolves a pending pause task undefined is not an object (evaluating 'animation.ready.then') 8 FAIL Setting the start time updates the finished state assert_equals: Seeked to finished state using the startTime expected (string) "finished" but got (undefined) undefined 9 9 -
trunk/LayoutTests/http/wpt/web-animations/timing-model/animations/set-the-timeline-of-an-animation-expected.txt
r224182 r224242 1 1 2 FAIL After setting timeline on paused animation it is still paused Argument 1 ('timeline') to the Animation constructor must be an instance of AnimationTimeline3 FAIL After setting timeline on animation paused outside active interval it is still paused Argument 1 ('timeline') to the Animation constructor must be an instance of AnimationTimeline4 FAIL After setting timeline on an idle animation without a start time it is still idle Argument 1 ('timeline') to the Animation constructor must be an instance of AnimationTimeline5 FAIL After setting timeline on an idle animation with a start time it is running Argument 1 ('timeline') to the Animation constructor must be an instance of AnimationTimeline6 FAIL After setting timeline on an idle animation with a sufficiently ancient start time it is finished Argument 1 ('timeline') to the Animation constructor must be an instance of AnimationTimeline7 FAIL After setting timeline on a play-pending animation it is still pending Argument 1 ('timeline') to the Animation constructor must be an instance of AnimationTimeline8 FAIL After setting timeline on a play-pending animation it begins playing after pending Argument 1 ('timeline') to the Animation constructor must be an instance of AnimationTimeline9 FAIL After setting timeline on a pause-pending animation it is still pending Argument 1 ('timeline') to the Animation constructor must be an instance of AnimationTimeline10 FAIL After setting timeline on a pause-pending animation it becomes paused after pending Argument 1 ('timeline') to the Animation constructor must be an instance of AnimationTimeline11 FAIL After clearing timeline on paused animation it is still paused Argument 1 ('timeline') to the Animation constructor must be an instance of AnimationTimeline12 FAIL After clearing timeline on finished animation it is idle Argument 1 ('timeline') to the Animation constructor must be an instance of AnimationTimeline13 FAIL After clearing timeline on running animation it is idle Argument 1 ('timeline') to the Animation constructor must be an instance of AnimationTimeline14 FAIL After clearing timeline on idle animation it is still idle Argument 1 ('timeline') to the Animation constructor must be an instance of AnimationTimeline2 FAIL After setting timeline on paused animation it is still paused assert_equals: expected (string) "paused" but got (undefined) undefined 3 FAIL After setting timeline on animation paused outside active interval it is still paused assert_equals: expected (string) "paused" but got (undefined) undefined 4 FAIL After setting timeline on an idle animation without a start time it is still idle assert_equals: expected (string) "idle" but got (undefined) undefined 5 FAIL After setting timeline on an idle animation with a start time it is running assert_equals: expected (string) "idle" but got (undefined) undefined 6 FAIL After setting timeline on an idle animation with a sufficiently ancient start time it is finished assert_equals: expected (string) "idle" but got (undefined) undefined 7 FAIL After setting timeline on a play-pending animation it is still pending animation.play is not a function. (In 'animation.play()', 'animation.play' is undefined) 8 FAIL After setting timeline on a play-pending animation it begins playing after pending animation.play is not a function. (In 'animation.play()', 'animation.play' is undefined) 9 FAIL After setting timeline on a pause-pending animation it is still pending animation.pause is not a function. (In 'animation.pause()', 'animation.pause' is undefined) 10 FAIL After setting timeline on a pause-pending animation it becomes paused after pending animation.pause is not a function. (In 'animation.pause()', 'animation.pause' is undefined) 11 FAIL After clearing timeline on paused animation it is still paused assert_equals: expected (string) "paused" but got (undefined) undefined 12 FAIL After clearing timeline on finished animation it is idle assert_equals: expected (string) "finished" but got (undefined) undefined 13 FAIL After clearing timeline on running animation it is idle assert_equals: expected (string) "running" but got (undefined) undefined 14 FAIL After clearing timeline on idle animation it is still idle assert_equals: expected (string) "idle" but got (undefined) undefined 15 15 FAIL After clearing timeline on play-pending animation it is still pending createDiv(t).animate is not a function. (In 'createDiv(t).animate(null, 100 * MS_PER_SEC)', 'createDiv(t).animate' is undefined) 16 16 FAIL After clearing and re-setting timeline on play-pending animation it begins to play createDiv(t).animate is not a function. (In 'createDiv(t).animate(null, 100 * MS_PER_SEC)', 'createDiv(t).animate' is undefined) 17 FAIL After clearing timeline on a pause-pending animation it is still pending Argument 1 ('timeline') to the Animation constructor must be an instance of AnimationTimeline18 FAIL After clearing and re-setting timeline on a pause-pending animation it becomes paused Argument 1 ('timeline') to the Animation constructor must be an instance of AnimationTimeline19 FAIL After clearing and re-setting timeline on an animation in the middle of an aborted pause, it continues playing using the same start time Argument 1 ('timeline') to the Animation constructor must be an instance of AnimationTimeline17 FAIL After clearing timeline on a pause-pending animation it is still pending animation.pause is not a function. (In 'animation.pause()', 'animation.pause' is undefined) 18 FAIL After clearing and re-setting timeline on a pause-pending animation it becomes paused animation.pause is not a function. (In 'animation.pause()', 'animation.pause' is undefined) 19 FAIL After clearing and re-setting timeline on an animation in the middle of an aborted pause, it continues playing using the same start time animation.pause is not a function. (In 'animation.pause()', 'animation.pause' is undefined) 20 20 -
trunk/LayoutTests/http/wpt/wk-web-animations/timing-model/animation-creation-basic-expected.txt
r224188 r224242 1 1 2 2 PASS The Animation interface is defined. 3 PASS Creating Animation without arguments should have a null timeline.4 PASS Creating Animation with an undefined argument should have a null timeline.5 PASS Creating Animation with a null argument should have a null timeline.6 PASS Creating Animation with a timeline has atimeline.3 PASS Creating Animation without arguments should have a null effect and the document timeline. 4 PASS Creating Animation with an undefined argument should have a null effect and the document timeline. 5 PASS Creating Animation with a null argument should have a null effect and the document timeline. 6 PASS Creating Animation with an effect should only set the effect property and have the document timeline. 7 7 -
trunk/LayoutTests/http/wpt/wk-web-animations/timing-model/animation-creation-basic.html
r224188 r224242 15 15 test(t => { 16 16 const animation = new Animation; 17 assert_equals(animation.timeline, null); 18 }, "Creating Animation without arguments should have a null timeline."); 17 assert_equals(animation.effect, null); 18 assert_equals(animation.timeline, document.timeline); 19 }, "Creating Animation without arguments should have a null effect and the document timeline."); 19 20 20 21 test(t => { 21 22 const animation = new Animation(undefined); 22 assert_equals(animation.timeline, null); 23 }, "Creating Animation with an undefined argument should have a null timeline."); 23 assert_equals(animation.effect, null); 24 assert_equals(animation.timeline, document.timeline); 25 }, "Creating Animation with an undefined argument should have a null effect and the document timeline."); 24 26 25 27 test(t => { 26 28 const animation = new Animation(null); 27 assert_equals(animation.timeline, null); 28 }, "Creating Animation with a null argument should have a null timeline."); 29 assert_equals(animation.effect, null); 30 assert_equals(animation.timeline, document.timeline); 31 }, "Creating Animation with a null argument should have a null effect and the document timeline."); 29 32 30 33 test(t => { 31 const animation = new Animation(document.timeline); 34 const effect = new KeyframeEffect(document.body); 35 const animation = new Animation(effect); 36 assert_equals(animation.effect, effect); 32 37 assert_equals(animation.timeline, document.timeline); 33 }, "Creating Animation with a timeline has atimeline.");38 }, "Creating Animation with an effect should only set the effect property and have the document timeline."); 34 39 35 40 </script> -
trunk/LayoutTests/http/wpt/wk-web-animations/timing-model/animation-current-time.html
r224188 r224242 10 10 11 11 test(t => { 12 const animation = new Animation (document.timeline);12 const animation = new Animation; 13 13 assert_equals(animation.currentTime, null); 14 14 }, "An animation's currentTime is null when the timeline has no currentTime set."); 15 15 16 16 test(t => { 17 const animation = new Animation (document.timeline);17 const animation = new Animation; 18 18 animation.startTime = 2; 19 19 internals.setTimelineCurrentTime(document.timeline, 0); … … 26 26 27 27 test(t => { 28 const animation = new Animation (document.timeline);28 const animation = new Animation; 29 29 animation.startTime = 1; 30 30 internals.setTimelineCurrentTime(document.timeline, 3); … … 36 36 37 37 test(t => { 38 const animation = new Animation (document.timeline);38 const animation = new Animation; 39 39 assert_throws(new TypeError, () => animation.currentTime = null); 40 40 }, "Setting the current time to null should throw a TypeError."); -
trunk/LayoutTests/http/wpt/wk-web-animations/timing-model/animation-playback-rate.html
r224181 r224242 11 11 12 12 test(t => { 13 const animation = new Animation (document.timeline);13 const animation = new Animation; 14 14 15 15 assert_equals(animation.playbackRate, 1); … … 17 17 18 18 test(t => { 19 const animation = new Animation (document.timeline);19 const animation = new Animation; 20 20 animation.startTime = 1; 21 21 animation.playbackRate = 2; … … 28 28 29 29 test(t => { 30 const animation = new Animation (document.timeline);30 const animation = new Animation; 31 31 animation.startTime = 2; 32 32 animation.playbackRate = 2; … … 41 41 42 42 test(t => { 43 const animation = new Animation (document.timeline);43 const animation = new Animation; 44 44 animation.startTime = 2; 45 45 animation.playbackRate = 0.5; … … 54 54 55 55 test(t => { 56 const animation = new Animation (document.timeline);56 const animation = new Animation; 57 57 animation.currentTime = 1; 58 58 animation.playbackRate = -1; … … 65 65 66 66 test(t => { 67 const animation = new Animation (document.timeline);67 const animation = new Animation; 68 68 animation.playbackRate = 0; 69 69 animation.startTime = 0; -
trunk/LayoutTests/webanimations/animation-creation-addition.html
r223825 r224242 4 4 description("Constructing an Animation with a timeline should add the animation to the timeline."); 5 5 6 new Animation(document.timeline); 7 new Animation(); 8 new Animation(document.timeline); 6 new Animation(null, document.timeline); 7 new Animation(null, document.timeline); 9 8 debug(internals.timelineDescription(document.timeline)); 10 9 -
trunk/Source/WebCore/ChangeLog
r224241 r224242 1 2017-10-31 Antoine Quint <graouts@apple.com> 2 3 [Web Animations] Support AnimationEffect parameter in Animation constructor and read-write timeline property 4 https://bugs.webkit.org/show_bug.cgi?id=179066 5 6 Reviewed by Dean Jackson. 7 8 We update the Animation constructor signature and behavior to allow for an AnimationEffect as its first, 9 null by default, parameter and implement the spec behavior where an omitted AnimationTimeline parameter 10 should default to the document timeline. We also make the timeline property read-write. 11 12 Existing tests are rebaselined and amended for this new behavior. 13 14 * animation/WebAnimation.cpp: 15 (WebCore::WebAnimation::create): 16 (WebCore::WebAnimation::WebAnimation): 17 (WebCore::WebAnimation::setEffect): 18 (WebCore::WebAnimation::setTimeline): 19 * animation/WebAnimation.h: 20 * animation/WebAnimation.idl: 21 1 22 2017-10-31 Ali Juma <ajuma@chromium.org> 2 23 -
trunk/Source/WebCore/animation/WebAnimation.cpp
r224181 r224242 29 29 #include "AnimationEffect.h" 30 30 #include "AnimationTimeline.h" 31 #include "Document.h" 31 32 #include <wtf/text/WTFString.h> 32 33 33 34 namespace WebCore { 34 35 35 Ref<WebAnimation> WebAnimation::create( AnimationTimeline* timeline)36 Ref<WebAnimation> WebAnimation::create(Document& document, AnimationEffect* effect, AnimationTimeline* timeline) 36 37 { 37 auto result = adoptRef(*new WebAnimation( timeline));38 auto result = adoptRef(*new WebAnimation()); 38 39 39 if (timeline) 40 timeline->addAnimation(result.copyRef()); 40 result->setEffect(effect); 41 42 // FIXME: the spec mandates distinguishing between an omitted timeline parameter 43 // and an explicit null or undefined value (webkit.org/b/179065). 44 result->setTimeline(timeline ? timeline : &document.timeline()); 41 45 42 46 return result; 43 47 } 44 48 45 WebAnimation::WebAnimation(AnimationTimeline* timeline) 46 : m_timeline(timeline) 49 WebAnimation::WebAnimation() 47 50 { 48 51 } … … 56 59 void WebAnimation::setEffect(RefPtr<AnimationEffect>&& effect) 57 60 { 61 if (effect == m_effect) 62 return; 63 58 64 m_effect = WTFMove(effect); 59 65 } 60 66 67 void WebAnimation::setTimeline(RefPtr<AnimationTimeline>&& timeline) 68 { 69 if (timeline == m_timeline) 70 return; 71 72 // FIXME: If the animation start time of animation is resolved, make animation’s 73 // hold time unresolved (webkit.org/b/178932). 74 75 if (m_timeline) 76 m_timeline->removeAnimation(*this); 77 78 if (timeline) 79 timeline->addAnimation(*this); 80 81 m_timeline = WTFMove(timeline); 82 } 83 61 84 std::optional<double> WebAnimation::bindingsStartTime() const 62 85 { -
trunk/Source/WebCore/animation/WebAnimation.h
r224181 r224242 38 38 class AnimationEffect; 39 39 class AnimationTimeline; 40 class Document; 40 41 41 42 class WebAnimation final : public RefCounted<WebAnimation> { 42 43 public: 43 static Ref<WebAnimation> create( AnimationTimeline*);44 static Ref<WebAnimation> create(Document&, AnimationEffect*, AnimationTimeline*); 44 45 ~WebAnimation(); 45 46 … … 47 48 void setEffect(RefPtr<AnimationEffect>&&); 48 49 AnimationTimeline* timeline() const { return m_timeline.get(); } 50 void setTimeline(RefPtr<AnimationTimeline>&&); 49 51 50 52 std::optional<double> bindingsStartTime() const; … … 64 66 65 67 private: 66 WebAnimation( AnimationTimeline*);68 WebAnimation(); 67 69 68 70 RefPtr<AnimationEffect> m_effect; -
trunk/Source/WebCore/animation/WebAnimation.idl
r224181 r224242 28 28 InterfaceName=Animation, 29 29 ImplementationLacksVTable, 30 Constructor(optional AnimationTimeline? timeline) 30 ConstructorCallWith=Document, 31 Constructor(optional AnimationEffect? effect = null, optional AnimationTimeline? timeline) 31 32 ] interface WebAnimation { 32 33 attribute AnimationEffect? effect; 33 readonlyattribute AnimationTimeline? timeline;34 attribute AnimationTimeline? timeline; 34 35 [ImplementedAs=bindingsStartTime] attribute double? startTime; 35 36 [MayThrowException, ImplementedAs=bindingsCurrentTime] attribute double? currentTime;
Note: See TracChangeset
for help on using the changeset viewer.