mirror of
https://github.com/RGBCube/serenity
synced 2025-07-25 19:07:35 +00:00
LibWeb: Implement Animation::set_effect()
This commit is contained in:
parent
68e916490b
commit
2358f64d00
2 changed files with 38 additions and 2 deletions
|
@ -44,8 +44,38 @@ WebIDL::ExceptionOr<JS::NonnullGCPtr<Animation>> Animation::construct_impl(JS::R
|
|||
// https://www.w3.org/TR/web-animations-1/#animation-set-the-associated-effect-of-an-animation
|
||||
void Animation::set_effect(JS::GCPtr<AnimationEffect> new_effect)
|
||||
{
|
||||
// FIXME: Implement
|
||||
(void)new_effect;
|
||||
// Setting this attribute updates the object’s associated effect using the procedure to set the associated effect of
|
||||
// an animation.
|
||||
|
||||
// 1. Let old effect be the current associated effect of animation, if any.
|
||||
auto old_effect = m_effect;
|
||||
|
||||
// 2. If new effect is the same object as old effect, abort this procedure.
|
||||
if (new_effect == old_effect)
|
||||
return;
|
||||
|
||||
// FIXME: 3. If animation has a pending pause task, reschedule that task to run as soon as animation is ready.
|
||||
|
||||
// FIXME: 4. If animation has a pending play task, reschedule that task to run as soon as animation is ready to play
|
||||
// new effect.
|
||||
|
||||
// 5. If new effect is not null and if new effect is the associated effect of another animation, previous animation,
|
||||
// run the procedure to set the associated effect of an animation (this procedure) on previous animation passing
|
||||
// null as new effect.
|
||||
if (new_effect && new_effect->associated_animation() != this) {
|
||||
if (auto animation = new_effect->associated_animation())
|
||||
animation->set_effect({});
|
||||
}
|
||||
|
||||
// 6. Let the associated effect of animation be new effect.
|
||||
if (new_effect)
|
||||
new_effect->set_associated_animation(this);
|
||||
if (m_effect)
|
||||
m_effect->set_associated_animation({});
|
||||
m_effect = new_effect;
|
||||
|
||||
// FIXME: 7. Run the procedure to update an animation’s finished state for animation with the did seek flag set to
|
||||
// false, and the synchronously notify flag set to false.
|
||||
}
|
||||
|
||||
// https://www.w3.org/TR/web-animations-1/#animation-set-the-timeline-of-an-animation
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue