summaryrefslogtreecommitdiff
path: root/chromium/third_party/blink/renderer/core/animation/worklet_animation_controller.cc
diff options
context:
space:
mode:
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.cc12
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_);