diff options
Diffstat (limited to 'chromium/third_party/blink/renderer/core/animation/worklet_animation_controller.cc')
-rw-r--r-- | chromium/third_party/blink/renderer/core/animation/worklet_animation_controller.cc | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/chromium/third_party/blink/renderer/core/animation/worklet_animation_controller.cc b/chromium/third_party/blink/renderer/core/animation/worklet_animation_controller.cc index 39553dd726c..15e94efa40c 100644 --- a/chromium/third_party/blink/renderer/core/animation/worklet_animation_controller.cc +++ b/chromium/third_party/blink/renderer/core/animation/worklet_animation_controller.cc @@ -4,6 +4,7 @@ #include "third_party/blink/renderer/core/animation/worklet_animation_controller.h" +#include "third_party/blink/renderer/core/animation/scroll_timeline.h" #include "third_party/blink/renderer/core/animation/worklet_animation_base.h" #include "third_party/blink/renderer/core/dom/document.h" #include "third_party/blink/renderer/core/frame/local_frame_view.h" @@ -68,6 +69,17 @@ void WorkletAnimationController::UpdateAnimationTimings( } } +void WorkletAnimationController::ScrollSourceCompositingStateChanged( + Node* node) { + DCHECK(ScrollTimeline::HasActiveScrollTimeline(node)); + for (const auto& animation : compositor_animations_) { + if (animation->GetTimeline()->IsScrollTimeline() && + ToScrollTimeline(animation->GetTimeline())->scrollSource() == node) { + InvalidateAnimation(*animation); + } + } +} + void WorkletAnimationController::Trace(blink::Visitor* visitor) { visitor->Trace(pending_animations_); visitor->Trace(compositor_animations_); |