summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorymalik <ymalik@chromium.org>2016-01-15 13:59:46 -0800
committerCommit bot <commit-bot@chromium.org>2016-01-15 22:00:49 +0000
commit73f33b9bb4e534d75915757b7bf746349f817663 (patch)
tree28602bb5f32ece645f54a28f137fac47d6a497c5
parentd007f1bdbe1799a45c0e706aab7129f192a413e6 (diff)
downloadchromium_src-73f33b9bb4e534d75915757b7bf746349f817663.zip
chromium_src-73f33b9bb4e534d75915757b7bf746349f817663.tar.gz
chromium_src-73f33b9bb4e534d75915757b7bf746349f817663.tar.bz2
Plumb NotifyAnimationAborted from the compositor to blink animation delegate.
This is needed to clear the blink scroll animator state when an animation started on the MT is cancelled by the compositor. TESTED=forced MT animation to abort from the compositor and verified that the delegate override on the blink side is called. BUG=576438 CQ_INCLUDE_TRYBOTS=tryserver.blink:linux_blink_rel Review URL: https://codereview.chromium.org/1587073011 Cr-Commit-Position: refs/heads/master@{#369856}
-rw-r--r--cc/animation/animation_delegate.h4
-rw-r--r--cc/animation/animation_host.cc3
-rw-r--r--cc/animation/animation_player.cc9
-rw-r--r--cc/animation/animation_player.h3
-rw-r--r--cc/animation/element_animations.cc11
-rw-r--r--cc/animation/element_animations.h3
-rw-r--r--cc/animation/layer_animation_controller.cc3
-rw-r--r--cc/animation/layer_animation_controller_unittest.cc17
-rw-r--r--cc/blink/web_compositor_animation_player_unittest.cc1
-rw-r--r--cc/blink/web_to_cc_animation_delegate_adapter.cc8
-rw-r--r--cc/blink/web_to_cc_animation_delegate_adapter.h3
-rw-r--r--cc/layers/layer_impl.h3
-rw-r--r--cc/test/animation_timelines_test_common.h3
-rw-r--r--cc/test/test_hooks.h3
-rw-r--r--third_party/WebKit/Source/core/animation/Animation.h1
-rw-r--r--third_party/WebKit/Source/platform/graphics/GraphicsLayer.cpp6
-rw-r--r--third_party/WebKit/Source/platform/graphics/GraphicsLayer.h1
-rw-r--r--third_party/WebKit/Source/platform/scroll/ProgrammaticScrollAnimator.h1
-rw-r--r--third_party/WebKit/Source/platform/scroll/ScrollAnimator.cpp7
-rw-r--r--third_party/WebKit/Source/platform/scroll/ScrollAnimator.h1
-rw-r--r--third_party/WebKit/Source/platform/scroll/ScrollAnimatorBase.h1
-rw-r--r--third_party/WebKit/Source/platform/scroll/ScrollAnimatorCompositorCoordinator.cpp8
-rw-r--r--third_party/WebKit/Source/platform/scroll/ScrollAnimatorCompositorCoordinator.h2
-rw-r--r--third_party/WebKit/Source/platform/scroll/ScrollableArea.cpp9
-rw-r--r--third_party/WebKit/Source/platform/scroll/ScrollableArea.h1
-rw-r--r--third_party/WebKit/Source/web/LinkHighlightImpl.h1
-rw-r--r--third_party/WebKit/public/platform/WebCompositorAnimationDelegate.h1
27 files changed, 113 insertions, 1 deletions
diff --git a/cc/animation/animation_delegate.h b/cc/animation/animation_delegate.h
index 8c736b5..6064c7e 100644
--- a/cc/animation/animation_delegate.h
+++ b/cc/animation/animation_delegate.h
@@ -20,6 +20,10 @@ class CC_EXPORT AnimationDelegate {
Animation::TargetProperty target_property,
int group) = 0;
+ virtual void NotifyAnimationAborted(base::TimeTicks monotonic_time,
+ Animation::TargetProperty target_property,
+ int group) = 0;
+
protected:
virtual ~AnimationDelegate() {}
};
diff --git a/cc/animation/animation_host.cc b/cc/animation/animation_host.cc
index 59ce274..1df11d0 100644
--- a/cc/animation/animation_host.cc
+++ b/cc/animation/animation_host.cc
@@ -114,6 +114,9 @@ class AnimationHost::ScrollOffsetAnimations : public AnimationDelegate {
DCHECK(animation_host_->mutator_host_client());
animation_host_->mutator_host_client()->ScrollOffsetAnimationFinished();
}
+ void NotifyAnimationAborted(base::TimeTicks monotonic_time,
+ Animation::TargetProperty target_property,
+ int group) override {}
private:
void ReattachScrollOffsetPlayerIfNeeded(int layer_id) {
diff --git a/cc/animation/animation_player.cc b/cc/animation/animation_player.cc
index dd7cb1f..52fa9a8 100644
--- a/cc/animation/animation_player.cc
+++ b/cc/animation/animation_player.cc
@@ -203,6 +203,15 @@ void AnimationPlayer::NotifyAnimationFinished(
target_property, group);
}
+void AnimationPlayer::NotifyAnimationAborted(
+ base::TimeTicks monotonic_time,
+ Animation::TargetProperty target_property,
+ int group) {
+ if (layer_animation_delegate_)
+ layer_animation_delegate_->NotifyAnimationAborted(monotonic_time,
+ target_property, group);
+}
+
void AnimationPlayer::SetNeedsCommit() {
DCHECK(animation_host_);
animation_host_->SetNeedsCommit();
diff --git a/cc/animation/animation_player.h b/cc/animation/animation_player.h
index 396d977..4902ec4 100644
--- a/cc/animation/animation_player.h
+++ b/cc/animation/animation_player.h
@@ -80,6 +80,9 @@ class CC_EXPORT AnimationPlayer : public base::RefCounted<AnimationPlayer>,
void NotifyAnimationFinished(base::TimeTicks monotonic_time,
Animation::TargetProperty target_property,
int group);
+ void NotifyAnimationAborted(base::TimeTicks monotonic_time,
+ Animation::TargetProperty target_property,
+ int group);
private:
friend class base::RefCounted<AnimationPlayer>;
diff --git a/cc/animation/element_animations.cc b/cc/animation/element_animations.cc
index 1264718..cd3a736 100644
--- a/cc/animation/element_animations.cc
+++ b/cc/animation/element_animations.cc
@@ -259,6 +259,17 @@ void ElementAnimations::NotifyAnimationFinished(
}
}
+void ElementAnimations::NotifyAnimationAborted(
+ base::TimeTicks monotonic_time,
+ Animation::TargetProperty target_property,
+ int group) {
+ for (PlayersListNode* node = players_list_->head();
+ node != players_list_->end(); node = node->next()) {
+ AnimationPlayer* player = node->value();
+ player->NotifyAnimationAborted(monotonic_time, target_property, group);
+ }
+}
+
gfx::ScrollOffset ElementAnimations::ScrollOffsetForAnimation() const {
DCHECK(layer_animation_controller_);
if (animation_host()) {
diff --git a/cc/animation/element_animations.h b/cc/animation/element_animations.h
index de76291..7a9cd93 100644
--- a/cc/animation/element_animations.h
+++ b/cc/animation/element_animations.h
@@ -100,6 +100,9 @@ class CC_EXPORT ElementAnimations : public AnimationDelegate,
void NotifyAnimationFinished(base::TimeTicks monotonic_time,
Animation::TargetProperty target_property,
int group) override;
+ void NotifyAnimationAborted(base::TimeTicks monotonic_time,
+ Animation::TargetProperty target_property,
+ int group) override;
// LayerAnimationValueProvider implementation.
gfx::ScrollOffset ScrollOffsetForAnimation() const override;
diff --git a/cc/animation/layer_animation_controller.cc b/cc/animation/layer_animation_controller.cc
index e4e4513..8d77951 100644
--- a/cc/animation/layer_animation_controller.cc
+++ b/cc/animation/layer_animation_controller.cc
@@ -461,6 +461,9 @@ void LayerAnimationController::NotifyAnimationAborted(
animations_[i]->target_property() == event.target_property) {
animations_[i]->SetRunState(Animation::ABORTED, event.monotonic_time);
animations_[i]->set_received_finished_event(true);
+ if (layer_animation_delegate_)
+ layer_animation_delegate_->NotifyAnimationAborted(
+ event.monotonic_time, event.target_property, event.group_id);
if (event.target_property == Animation::TRANSFORM)
aborted_transform_animation = true;
}
diff --git a/cc/animation/layer_animation_controller_unittest.cc b/cc/animation/layer_animation_controller_unittest.cc
index 850123c..2f5f37e 100644
--- a/cc/animation/layer_animation_controller_unittest.cc
+++ b/cc/animation/layer_animation_controller_unittest.cc
@@ -1018,7 +1018,10 @@ TEST(LayerAnimationControllerTest, ScrollOffsetRemovalClearsScrollDelta) {
class FakeAnimationDelegate : public AnimationDelegate {
public:
FakeAnimationDelegate()
- : started_(false), finished_(false), start_time_(base::TimeTicks()) {}
+ : started_(false),
+ finished_(false),
+ aborted_(false),
+ start_time_(base::TimeTicks()) {}
void NotifyAnimationStarted(TimeTicks monotonic_time,
Animation::TargetProperty target_property,
@@ -1033,15 +1036,24 @@ class FakeAnimationDelegate : public AnimationDelegate {
finished_ = true;
}
+ void NotifyAnimationAborted(TimeTicks monotonic_time,
+ Animation::TargetProperty target_property,
+ int group) override {
+ aborted_ = true;
+ }
+
bool started() { return started_; }
bool finished() { return finished_; }
+ bool aborted() { return aborted_; }
+
TimeTicks start_time() { return start_time_; }
private:
bool started_;
bool finished_;
+ bool aborted_;
TimeTicks start_time_;
};
@@ -1843,6 +1855,8 @@ TEST(LayerAnimationControllerTest, ImplThreadAbortedAnimationGetsDeleted) {
scoped_refptr<LayerAnimationController> controller(
LayerAnimationController::Create(0));
controller->AddValueObserver(&dummy);
+ FakeAnimationDelegate delegate;
+ controller->set_layer_animation_delegate(&delegate);
int animation_id =
AddOpacityTransitionToController(controller.get(), 1.0, 0.f, 1.f, false);
@@ -1869,6 +1883,7 @@ TEST(LayerAnimationControllerTest, ImplThreadAbortedAnimationGetsDeleted) {
controller->NotifyAnimationAborted(events.events_[0]);
EXPECT_EQ(Animation::ABORTED,
controller->GetAnimation(Animation::OPACITY)->run_state());
+ EXPECT_TRUE(delegate.aborted());
controller->Animate(kInitialTickTime + TimeDelta::FromMilliseconds(500));
controller->UpdateState(true, nullptr);
diff --git a/cc/blink/web_compositor_animation_player_unittest.cc b/cc/blink/web_compositor_animation_player_unittest.cc
index 8a3b154..ec355b1 100644
--- a/cc/blink/web_compositor_animation_player_unittest.cc
+++ b/cc/blink/web_compositor_animation_player_unittest.cc
@@ -25,6 +25,7 @@ class MockWebCompositorAnimationDelegate
MOCK_METHOD2(notifyAnimationStarted, void(double, int));
MOCK_METHOD2(notifyAnimationFinished, void(double, int));
+ MOCK_METHOD2(notifyAnimationAborted, void(double, int));
};
// Test that when the animation delegate is null, the animation player
diff --git a/cc/blink/web_to_cc_animation_delegate_adapter.cc b/cc/blink/web_to_cc_animation_delegate_adapter.cc
index fcec11f..3bdf0d4 100644
--- a/cc/blink/web_to_cc_animation_delegate_adapter.cc
+++ b/cc/blink/web_to_cc_animation_delegate_adapter.cc
@@ -40,4 +40,12 @@ void WebToCCAnimationDelegateAdapter::NotifyAnimationFinished(
#endif
}
+void WebToCCAnimationDelegateAdapter::NotifyAnimationAborted(
+ base::TimeTicks monotonic_time,
+ cc::Animation::TargetProperty target_property,
+ int group) {
+ delegate_->notifyAnimationAborted(
+ (monotonic_time - base::TimeTicks()).InSecondsF(), group);
+}
+
} // namespace cc_blink
diff --git a/cc/blink/web_to_cc_animation_delegate_adapter.h b/cc/blink/web_to_cc_animation_delegate_adapter.h
index 72e79e6..343afa5 100644
--- a/cc/blink/web_to_cc_animation_delegate_adapter.h
+++ b/cc/blink/web_to_cc_animation_delegate_adapter.h
@@ -27,6 +27,9 @@ class WebToCCAnimationDelegateAdapter : public cc::AnimationDelegate {
void NotifyAnimationFinished(base::TimeTicks monotonic_time,
cc::Animation::TargetProperty target_property,
int group) override;
+ void NotifyAnimationAborted(base::TimeTicks monotonic_time,
+ cc::Animation::TargetProperty target_property,
+ int group) override;
blink::WebCompositorAnimationDelegate* delegate_;
diff --git a/cc/layers/layer_impl.h b/cc/layers/layer_impl.h
index 990a384..4dca350 100644
--- a/cc/layers/layer_impl.h
+++ b/cc/layers/layer_impl.h
@@ -125,6 +125,9 @@ class CC_EXPORT LayerImpl : public LayerAnimationValueObserver,
void NotifyAnimationFinished(base::TimeTicks monotonic_time,
Animation::TargetProperty target_property,
int group) override;
+ void NotifyAnimationAborted(base::TimeTicks monotonic_time,
+ Animation::TargetProperty target_property,
+ int group) override{};
// Tree structure.
LayerImpl* parent() { return parent_; }
diff --git a/cc/test/animation_timelines_test_common.h b/cc/test/animation_timelines_test_common.h
index 518929d6..1733ca8 100644
--- a/cc/test/animation_timelines_test_common.h
+++ b/cc/test/animation_timelines_test_common.h
@@ -151,6 +151,9 @@ class TestAnimationDelegate : public AnimationDelegate {
void NotifyAnimationFinished(base::TimeTicks monotonic_time,
Animation::TargetProperty target_property,
int group) override;
+ void NotifyAnimationAborted(base::TimeTicks monotonic_time,
+ Animation::TargetProperty target_property,
+ int group) override {}
bool started_;
bool finished_;
};
diff --git a/cc/test/test_hooks.h b/cc/test/test_hooks.h
index fd45cbc..8caec7f 100644
--- a/cc/test/test_hooks.h
+++ b/cc/test/test_hooks.h
@@ -130,6 +130,9 @@ class TestHooks : public AnimationDelegate {
void NotifyAnimationFinished(base::TimeTicks monotonic_time,
Animation::TargetProperty target_property,
int group) override {}
+ void NotifyAnimationAborted(base::TimeTicks monotonic_time,
+ Animation::TargetProperty target_property,
+ int group) override {}
virtual void RequestNewOutputSurface() = 0;
};
diff --git a/third_party/WebKit/Source/core/animation/Animation.h b/third_party/WebKit/Source/core/animation/Animation.h
index 402df1a..0d88db1 100644
--- a/third_party/WebKit/Source/core/animation/Animation.h
+++ b/third_party/WebKit/Source/core/animation/Animation.h
@@ -208,6 +208,7 @@ private:
// WebCompositorAnimationDelegate implementation.
void notifyAnimationStarted(double monotonicTime, int group) override;
void notifyAnimationFinished(double monotonicTime, int group) override { }
+ void notifyAnimationAborted(double monotonicTime, int group) override { }
double startClipInternal() const { return m_startClip; }
double endClipInternal() const { return m_endClip; }
diff --git a/third_party/WebKit/Source/platform/graphics/GraphicsLayer.cpp b/third_party/WebKit/Source/platform/graphics/GraphicsLayer.cpp
index 1f51612..c9a9515 100644
--- a/third_party/WebKit/Source/platform/graphics/GraphicsLayer.cpp
+++ b/third_party/WebKit/Source/platform/graphics/GraphicsLayer.cpp
@@ -1213,6 +1213,12 @@ void GraphicsLayer::notifyAnimationFinished(double, int group)
m_scrollableArea->notifyCompositorAnimationFinished(group);
}
+void GraphicsLayer::notifyAnimationAborted(double, int group)
+{
+ if (m_scrollableArea)
+ m_scrollableArea->notifyCompositorAnimationAborted(group);
+}
+
void GraphicsLayer::didScroll()
{
if (m_scrollableArea) {
diff --git a/third_party/WebKit/Source/platform/graphics/GraphicsLayer.h b/third_party/WebKit/Source/platform/graphics/GraphicsLayer.h
index be04751..b30629e 100644
--- a/third_party/WebKit/Source/platform/graphics/GraphicsLayer.h
+++ b/third_party/WebKit/Source/platform/graphics/GraphicsLayer.h
@@ -245,6 +245,7 @@ public:
// WebCompositorAnimationDelegate implementation.
void notifyAnimationStarted(double monotonicTime, int group) override;
void notifyAnimationFinished(double monotonicTime, int group) override;
+ void notifyAnimationAborted(double monotonicTime, int group) override;
// WebLayerScrollClient implementation.
void didScroll() override;
diff --git a/third_party/WebKit/Source/platform/scroll/ProgrammaticScrollAnimator.h b/third_party/WebKit/Source/platform/scroll/ProgrammaticScrollAnimator.h
index fa05677..e936b3c 100644
--- a/third_party/WebKit/Source/platform/scroll/ProgrammaticScrollAnimator.h
+++ b/third_party/WebKit/Source/platform/scroll/ProgrammaticScrollAnimator.h
@@ -39,6 +39,7 @@ public:
void tickAnimation(double monotonicTime) override;
void updateCompositorAnimations() override;
void notifyCompositorAnimationFinished(int groupId) override;
+ void notifyCompositorAnimationAborted(int groupId) override { };
void layerForCompositedScrollingDidChange(WebCompositorAnimationTimeline*) override;
DECLARE_TRACE();
diff --git a/third_party/WebKit/Source/platform/scroll/ScrollAnimator.cpp b/third_party/WebKit/Source/platform/scroll/ScrollAnimator.cpp
index 6841836..df95d27 100644
--- a/third_party/WebKit/Source/platform/scroll/ScrollAnimator.cpp
+++ b/third_party/WebKit/Source/platform/scroll/ScrollAnimator.cpp
@@ -269,6 +269,13 @@ void ScrollAnimator::updateCompositorAnimations()
}
}
+void ScrollAnimator::notifyCompositorAnimationAborted(int groupId)
+{
+ // An animation aborted by the compositor is treated as a finished
+ // animation.
+ ScrollAnimatorCompositorCoordinator::compositorAnimationFinished(groupId);
+}
+
void ScrollAnimator::notifyCompositorAnimationFinished(int groupId)
{
ScrollAnimatorCompositorCoordinator::compositorAnimationFinished(groupId);
diff --git a/third_party/WebKit/Source/platform/scroll/ScrollAnimator.h b/third_party/WebKit/Source/platform/scroll/ScrollAnimator.h
index e8ac2ae..88465ca 100644
--- a/third_party/WebKit/Source/platform/scroll/ScrollAnimator.h
+++ b/third_party/WebKit/Source/platform/scroll/ScrollAnimator.h
@@ -60,6 +60,7 @@ public:
void resetAnimationState() override;
void updateCompositorAnimations() override;
void notifyCompositorAnimationFinished(int groupId) override;
+ void notifyCompositorAnimationAborted(int groupId) override;
void layerForCompositedScrollingDidChange(WebCompositorAnimationTimeline*) override;
DECLARE_VIRTUAL_TRACE();
diff --git a/third_party/WebKit/Source/platform/scroll/ScrollAnimatorBase.h b/third_party/WebKit/Source/platform/scroll/ScrollAnimatorBase.h
index 5926f86..bdbf1bb 100644
--- a/third_party/WebKit/Source/platform/scroll/ScrollAnimatorBase.h
+++ b/third_party/WebKit/Source/platform/scroll/ScrollAnimatorBase.h
@@ -83,6 +83,7 @@ public:
void cancelAnimation() override { }
void updateCompositorAnimations() override { };
void notifyCompositorAnimationFinished(int groupId) override { };
+ void notifyCompositorAnimationAborted(int groupId) override { };
void layerForCompositedScrollingDidChange(WebCompositorAnimationTimeline*) override { };
virtual void contentAreaWillPaint() const { }
diff --git a/third_party/WebKit/Source/platform/scroll/ScrollAnimatorCompositorCoordinator.cpp b/third_party/WebKit/Source/platform/scroll/ScrollAnimatorCompositorCoordinator.cpp
index 4f0528f..142b27e 100644
--- a/third_party/WebKit/Source/platform/scroll/ScrollAnimatorCompositorCoordinator.cpp
+++ b/third_party/WebKit/Source/platform/scroll/ScrollAnimatorCompositorCoordinator.cpp
@@ -182,6 +182,14 @@ void ScrollAnimatorCompositorCoordinator::notifyAnimationFinished(
notifyCompositorAnimationFinished(group);
}
+void ScrollAnimatorCompositorCoordinator::notifyAnimationAborted(
+ double monotonicTime, int group)
+{
+ // An animation aborted by the compositor is treated as a finished
+ // animation.
+ notifyCompositorAnimationFinished(group);
+}
+
WebCompositorAnimationPlayer* ScrollAnimatorCompositorCoordinator::compositorPlayer() const
{
return m_compositorPlayer.get();
diff --git a/third_party/WebKit/Source/platform/scroll/ScrollAnimatorCompositorCoordinator.h b/third_party/WebKit/Source/platform/scroll/ScrollAnimatorCompositorCoordinator.h
index e0d41a8..f5f8823 100644
--- a/third_party/WebKit/Source/platform/scroll/ScrollAnimatorCompositorCoordinator.h
+++ b/third_party/WebKit/Source/platform/scroll/ScrollAnimatorCompositorCoordinator.h
@@ -34,6 +34,7 @@ public:
virtual void tickAnimation(double monotonicTime) = 0;
virtual void updateCompositorAnimations() = 0;
virtual void notifyCompositorAnimationFinished(int groupId) = 0;
+ virtual void notifyCompositorAnimationAborted(int groupId) = 0;
virtual void layerForCompositedScrollingDidChange(WebCompositorAnimationTimeline*) = 0;
DEFINE_INLINE_VIRTUAL_TRACE() { }
@@ -51,6 +52,7 @@ protected:
// WebCompositorAnimationDelegate implementation.
void notifyAnimationStarted(double monotonicTime, int group) override;
void notifyAnimationFinished(double monotonicTime, int group) override;
+ void notifyAnimationAborted(double monotonicTime, int group) override;
// WebCompositorAnimationPlayerClient implementation.
WebCompositorAnimationPlayer* compositorPlayer() const override;
diff --git a/third_party/WebKit/Source/platform/scroll/ScrollableArea.cpp b/third_party/WebKit/Source/platform/scroll/ScrollableArea.cpp
index 365aa95..1b86c47 100644
--- a/third_party/WebKit/Source/platform/scroll/ScrollableArea.cpp
+++ b/third_party/WebKit/Source/platform/scroll/ScrollableArea.cpp
@@ -501,6 +501,15 @@ void ScrollableArea::notifyCompositorAnimationFinished(int groupId)
scrollAnimator->notifyCompositorAnimationFinished(groupId);
}
+void ScrollableArea::notifyCompositorAnimationAborted(int groupId)
+{
+ if (ProgrammaticScrollAnimator* programmaticScrollAnimator = existingProgrammaticScrollAnimator())
+ programmaticScrollAnimator->notifyCompositorAnimationAborted(groupId);
+
+ if (ScrollAnimatorBase* scrollAnimator = existingScrollAnimator())
+ scrollAnimator->notifyCompositorAnimationAborted(groupId);
+}
+
void ScrollableArea::cancelScrollAnimation()
{
if (ScrollAnimatorBase* scrollAnimator = existingScrollAnimator())
diff --git a/third_party/WebKit/Source/platform/scroll/ScrollableArea.h b/third_party/WebKit/Source/platform/scroll/ScrollableArea.h
index 50d99bf..70403aa 100644
--- a/third_party/WebKit/Source/platform/scroll/ScrollableArea.h
+++ b/third_party/WebKit/Source/platform/scroll/ScrollableArea.h
@@ -219,6 +219,7 @@ public:
virtual void deregisterForAnimation() { }
void notifyCompositorAnimationFinished(int groupId);
+ void notifyCompositorAnimationAborted(int groupId);
virtual bool usesCompositedScrolling() const { return false; }
diff --git a/third_party/WebKit/Source/web/LinkHighlightImpl.h b/third_party/WebKit/Source/web/LinkHighlightImpl.h
index 62fdee2..d42d8bcf 100644
--- a/third_party/WebKit/Source/web/LinkHighlightImpl.h
+++ b/third_party/WebKit/Source/web/LinkHighlightImpl.h
@@ -66,6 +66,7 @@ public:
// WebCompositorAnimationDelegate implementation.
void notifyAnimationStarted(double monotonicTime, int group) override;
void notifyAnimationFinished(double monotonicTime, int group) override;
+ void notifyAnimationAborted(double monotonicTime, int group) override { }
// LinkHighlight implementation.
void invalidate() override;
diff --git a/third_party/WebKit/public/platform/WebCompositorAnimationDelegate.h b/third_party/WebKit/public/platform/WebCompositorAnimationDelegate.h
index 5bf043a..456524d 100644
--- a/third_party/WebKit/public/platform/WebCompositorAnimationDelegate.h
+++ b/third_party/WebKit/public/platform/WebCompositorAnimationDelegate.h
@@ -18,6 +18,7 @@ public:
virtual void notifyAnimationStarted(double monotonicTime, int group) = 0;
virtual void notifyAnimationFinished(double monotonicTime, int group) = 0;
+ virtual void notifyAnimationAborted(double monotonicTime, int group) = 0;
};
} // namespace blink