mirror of
				https://github.com/RGBCube/serenity
				synced 2025-10-31 19:42:43 +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
	
	 Matthew Olsson
						Matthew Olsson