summaryrefslogtreecommitdiffstats
path: root/third_party/WebKit/Source
diff options
context:
space:
mode:
authorjohnme@chromium.org <johnme@chromium.org>2015-07-31 10:16:58 +0000
committerjohnme@chromium.org <johnme@chromium.org>2015-07-31 10:16:58 +0000
commit707edc954c4a7d1bc01ff936faeb4c5b9271ff80 (patch)
tree6e202c25703d01da96d0d44ecd211a7201711562 /third_party/WebKit/Source
parent3fbc41c90be0c660992451bd3a6cf167d82d26d8 (diff)
downloadchromium_src-707edc954c4a7d1bc01ff936faeb4c5b9271ff80.zip
chromium_src-707edc954c4a7d1bc01ff936faeb4c5b9271ff80.tar.gz
chromium_src-707edc954c4a7d1bc01ff936faeb4c5b9271ff80.tar.bz2
Revert of Animations: Port ProgrammaticScrollAnimator to use compositor timelines (patchset #7 id:120001 of https://codereview.chromium.org/1133513002/)
Reason for revert: Since this landed, 8 out of 9 runs of virtual/threaded_animation_timelines/fast/scroll-behavior/overflow-scroll-root-frame-animates.html have timed out on WebKit Linux MSAN: http://test-results.appspot.com/dashboards/flakiness_dashboard.html#tests=virtual%2Fthreaded_animation_timelines%2Ffast%2Fscroll-behavior%2Foverflow-scroll-root-frame-animates.html There has also been a timeout on WebKit Win Oilpan (dbg): http://build.chromium.org/p/chromium.webkit/builders/WebKit%20Win%20Oilpan%20(dbg)/builds/1889 Original issue's description: > Animations: Port ProgrammaticScrollAnimator to use compositor timelines > > Use AnimationPlayer to add animations if new system enabled. > > Previous episode: https://codereview.chromium.org/1119763003/ > What we want to achieve: https://codereview.chromium.org/1131833002 > > BUG=394777 > R=ajuma@chromium.org > > Committed: https://src.chromium.org/viewvc/blink?view=rev&revision=199766 TBR=ajuma@chromium.org,vollick@chromium.org,loyso@chromium.org NOPRESUBMIT=true NOTREECHECKS=true NOTRY=true BUG=394777 Review URL: https://codereview.chromium.org/1254963011 git-svn-id: svn://svn.chromium.org/blink/trunk@199815 bbb929c8-8fbe-4397-9dbb-9b2b20218538
Diffstat (limited to 'third_party/WebKit/Source')
-rw-r--r--third_party/WebKit/Source/core/page/scrolling/ScrollingCoordinator.cpp17
-rw-r--r--third_party/WebKit/Source/core/page/scrolling/ScrollingCoordinator.h3
-rw-r--r--third_party/WebKit/Source/platform/scroll/ProgrammaticScrollAnimator.cpp83
-rw-r--r--third_party/WebKit/Source/platform/scroll/ProgrammaticScrollAnimator.h18
-rw-r--r--third_party/WebKit/Source/platform/scroll/ScrollableArea.cpp4
-rw-r--r--third_party/WebKit/Source/platform/scroll/ScrollableArea.h3
6 files changed, 11 insertions, 117 deletions
diff --git a/third_party/WebKit/Source/core/page/scrolling/ScrollingCoordinator.cpp b/third_party/WebKit/Source/core/page/scrolling/ScrollingCoordinator.cpp
index a334e43..21d9228 100644
--- a/third_party/WebKit/Source/core/page/scrolling/ScrollingCoordinator.cpp
+++ b/third_party/WebKit/Source/core/page/scrolling/ScrollingCoordinator.cpp
@@ -56,7 +56,6 @@
#include "platform/scroll/ScrollAnimator.h"
#include "platform/scroll/ScrollbarTheme.h"
#include "public/platform/Platform.h"
-#include "public/platform/WebCompositorAnimationTimeline.h"
#include "public/platform/WebCompositorSupport.h"
#include "public/platform/WebLayerPositionConstraint.h"
#include "public/platform/WebScrollbarLayer.h"
@@ -94,13 +93,6 @@ ScrollingCoordinator::ScrollingCoordinator(Page* page)
, m_wasFrameScrollable(false)
, m_lastMainThreadScrollingReasons(0)
{
- if (RuntimeEnabledFeatures::compositorAnimationTimelinesEnabled()) {
- ASSERT(m_page);
- ASSERT(m_page->mainFrame()->isLocalFrame());
- ASSERT(Platform::current()->compositorSupport());
- m_programmaticScrollAnimatorTimeline = adoptPtr(Platform::current()->compositorSupport()->createAnimationTimeline());
- m_page->chromeClient().attachCompositorAnimationTimeline(m_programmaticScrollAnimatorTimeline.get(), toLocalFrame(m_page->mainFrame()));
- }
}
ScrollingCoordinator::~ScrollingCoordinator()
@@ -443,7 +435,7 @@ bool ScrollingCoordinator::scrollableAreaScrollLayerDidChange(ScrollableArea* sc
if (m_page->settings().rootLayerScrolls() && isForRootLayer(scrollableArea))
m_page->chromeClient().registerViewportLayers();
- scrollableArea->layerForScrollingDidChange(m_programmaticScrollAnimatorTimeline.get());
+ scrollableArea->layerForScrollingDidChange();
return !!webLayer;
}
@@ -731,13 +723,6 @@ void ScrollingCoordinator::setShouldUpdateScrollLayerPositionOnMainThread(MainTh
void ScrollingCoordinator::willBeDestroyed()
{
ASSERT(m_page);
-
- if (m_programmaticScrollAnimatorTimeline) {
- ASSERT(m_page->mainFrame()->isLocalFrame());
- m_page->chromeClient().detachCompositorAnimationTimeline(m_programmaticScrollAnimatorTimeline.get(), toLocalFrame(m_page->mainFrame()));
- m_programmaticScrollAnimatorTimeline.clear();
- }
-
m_page = nullptr;
for (const auto& scrollbar : m_horizontalScrollbars)
GraphicsLayer::unregisterContentsLayer(scrollbar.value->layer());
diff --git a/third_party/WebKit/Source/core/page/scrolling/ScrollingCoordinator.h b/third_party/WebKit/Source/core/page/scrolling/ScrollingCoordinator.h
index 7838814..8631c2d 100644
--- a/third_party/WebKit/Source/core/page/scrolling/ScrollingCoordinator.h
+++ b/third_party/WebKit/Source/core/page/scrolling/ScrollingCoordinator.h
@@ -48,7 +48,6 @@ class GraphicsLayer;
class Page;
class Region;
class ScrollableArea;
-class WebCompositorAnimationTimeline;
class CORE_EXPORT ScrollingCoordinator final : public NoBaseWillBeGarbageCollectedFinalized<ScrollingCoordinator> {
WTF_MAKE_NONCOPYABLE(ScrollingCoordinator);
@@ -152,8 +151,6 @@ private:
bool frameViewIsDirty() const;
- OwnPtr<WebCompositorAnimationTimeline> m_programmaticScrollAnimatorTimeline;
-
using ScrollbarMap = WillBeHeapHashMap<RawPtrWillBeMember<ScrollableArea>, OwnPtr<WebScrollbarLayer>>;
ScrollbarMap m_horizontalScrollbars;
ScrollbarMap m_verticalScrollbars;
diff --git a/third_party/WebKit/Source/platform/scroll/ProgrammaticScrollAnimator.cpp b/third_party/WebKit/Source/platform/scroll/ProgrammaticScrollAnimator.cpp
index 6a12886..1de1c2a 100644
--- a/third_party/WebKit/Source/platform/scroll/ProgrammaticScrollAnimator.cpp
+++ b/third_party/WebKit/Source/platform/scroll/ProgrammaticScrollAnimator.cpp
@@ -5,14 +5,11 @@
#include "config.h"
#include "platform/scroll/ProgrammaticScrollAnimator.h"
-#include "platform/RuntimeEnabledFeatures.h"
#include "platform/geometry/IntPoint.h"
#include "platform/graphics/GraphicsLayer.h"
#include "platform/scroll/ScrollableArea.h"
#include "public/platform/Platform.h"
#include "public/platform/WebCompositorAnimation.h"
-#include "public/platform/WebCompositorAnimationPlayer.h"
-#include "public/platform/WebCompositorAnimationTimeline.h"
#include "public/platform/WebCompositorSupport.h"
#include "public/platform/WebScrollOffsetAnimationCurve.h"
@@ -24,27 +21,16 @@ PassOwnPtr<ProgrammaticScrollAnimator> ProgrammaticScrollAnimator::create(Scroll
}
ProgrammaticScrollAnimator::ProgrammaticScrollAnimator(ScrollableArea* scrollableArea)
- : m_compositorAnimationAttachedToLayerId(0)
- , m_scrollableArea(scrollableArea)
+ : m_scrollableArea(scrollableArea)
, m_startTime(0.0)
, m_runState(RunState::Idle)
, m_compositorAnimationId(0)
, m_compositorAnimationGroupId(0)
{
- if (RuntimeEnabledFeatures::compositorAnimationTimelinesEnabled()) {
- ASSERT(Platform::current()->compositorSupport());
- m_compositorPlayer = adoptPtr(Platform::current()->compositorSupport()->createAnimationPlayer());
- ASSERT(m_compositorPlayer);
- m_compositorPlayer->setAnimationDelegate(this);
- }
}
ProgrammaticScrollAnimator::~ProgrammaticScrollAnimator()
{
- if (m_compositorPlayer) {
- m_compositorPlayer->setAnimationDelegate(nullptr);
- m_compositorPlayer.clear();
- }
}
void ProgrammaticScrollAnimator::resetAnimationState()
@@ -150,15 +136,8 @@ void ProgrammaticScrollAnimator::updateCompositorAnimations()
// compositor animation that needs to be removed here before the new
// animation is added below.
ASSERT(m_runState == RunState::WaitingToCancelOnCompositor || m_runState == RunState::WaitingToSendToCompositor);
-
- if (m_compositorPlayer) {
- if (m_compositorPlayer->isLayerAttached())
- m_compositorPlayer->removeAnimation(m_compositorAnimationId);
- } else {
- if (GraphicsLayer* layer = m_scrollableArea->layerForScrolling())
- layer->removeAnimation(m_compositorAnimationId);
- }
-
+ if (GraphicsLayer* layer = m_scrollableArea->layerForScrolling())
+ layer->removeAnimation(m_compositorAnimationId);
m_compositorAnimationId = 0;
m_compositorAnimationGroupId = 0;
if (m_runState == RunState::WaitingToCancelOnCompositor) {
@@ -176,18 +155,7 @@ void ProgrammaticScrollAnimator::updateCompositorAnimations()
int animationId = animation->id();
int animationGroupId = animation->group();
-
- bool animationAdded = false;
- if (m_compositorPlayer) {
- if (m_compositorPlayer->isLayerAttached()) {
- m_compositorPlayer->addAnimation(animation.leakPtr());
- animationAdded = true;
- }
- } else {
- animationAdded = m_scrollableArea->layerForScrolling()->addAnimation(animation.release());
- }
-
- if (animationAdded) {
+ if (m_scrollableArea->layerForScrolling()->addAnimation(animation.release())) {
sentToCompositor = true;
m_runState = RunState::RunningOnCompositor;
m_compositorAnimationId = animationId;
@@ -206,35 +174,8 @@ void ProgrammaticScrollAnimator::updateCompositorAnimations()
}
}
-void ProgrammaticScrollAnimator::reattachCompositorPlayerIfNeeded(WebCompositorAnimationTimeline* timeline)
+void ProgrammaticScrollAnimator::layerForCompositedScrollingDidChange()
{
- int compositorAnimationAttachedToLayerId = 0;
- if (m_scrollableArea->layerForScrolling())
- compositorAnimationAttachedToLayerId = m_scrollableArea->layerForScrolling()->platformLayer()->id();
-
- if (compositorAnimationAttachedToLayerId != m_compositorAnimationAttachedToLayerId) {
- if (m_compositorPlayer && timeline) {
- // Detach from old layer (if any).
- if (m_compositorAnimationAttachedToLayerId) {
- ASSERT(m_compositorPlayer->isLayerAttached());
- m_compositorPlayer->detachLayer();
- timeline->playerDestroyed(*this);
- }
- // Attach to new layer (if any).
- if (compositorAnimationAttachedToLayerId) {
- ASSERT(m_scrollableArea->layerForScrolling());
- timeline->playerAttached(*this);
- m_compositorPlayer->attachLayer(m_scrollableArea->layerForScrolling()->platformLayer());
- }
- m_compositorAnimationAttachedToLayerId = compositorAnimationAttachedToLayerId;
- }
- }
-}
-
-void ProgrammaticScrollAnimator::layerForCompositedScrollingDidChange(WebCompositorAnimationTimeline* timeline)
-{
- reattachCompositorPlayerIfNeeded(timeline);
-
// If the composited scrolling layer is lost during a composited animation,
// continue the animation on the main thread.
if (m_runState == RunState::RunningOnCompositor && !m_scrollableArea->layerForScrolling()) {
@@ -271,18 +212,4 @@ void ProgrammaticScrollAnimator::notifyCompositorAnimationFinished(int groupId)
}
}
-void ProgrammaticScrollAnimator::notifyAnimationStarted(double monotonicTime, int group)
-{
-}
-
-void ProgrammaticScrollAnimator::notifyAnimationFinished(double monotonicTime, int group)
-{
- notifyCompositorAnimationFinished(group);
-}
-
-WebCompositorAnimationPlayer* ProgrammaticScrollAnimator::compositorPlayer() const
-{
- return m_compositorPlayer.get();
-}
-
} // namespace blink
diff --git a/third_party/WebKit/Source/platform/scroll/ProgrammaticScrollAnimator.h b/third_party/WebKit/Source/platform/scroll/ProgrammaticScrollAnimator.h
index 9ee8756..d3813a33 100644
--- a/third_party/WebKit/Source/platform/scroll/ProgrammaticScrollAnimator.h
+++ b/third_party/WebKit/Source/platform/scroll/ProgrammaticScrollAnimator.h
@@ -6,8 +6,6 @@
#define ProgrammaticScrollAnimator_h
#include "platform/geometry/FloatPoint.h"
-#include "public/platform/WebCompositorAnimationDelegate.h"
-#include "public/platform/WebCompositorAnimationPlayerClient.h"
#include "wtf/FastAllocBase.h"
#include "wtf/Noncopyable.h"
#include "wtf/OwnPtr.h"
@@ -16,13 +14,11 @@
namespace blink {
class ScrollableArea;
-class WebCompositorAnimationPlayer;
-class WebCompositorAnimationTimeline;
class WebScrollOffsetAnimationCurve;
// Animator for fixed-destination scrolls, such as those triggered by
// CSSOM View scroll APIs.
-class ProgrammaticScrollAnimator : private WebCompositorAnimationPlayerClient, WebCompositorAnimationDelegate {
+class ProgrammaticScrollAnimator {
WTF_MAKE_NONCOPYABLE(ProgrammaticScrollAnimator);
WTF_MAKE_FAST_ALLOCATED(ProgrammaticScrollAnimator);
public:
@@ -36,14 +32,8 @@ public:
void tickAnimation(double monotonicTime);
bool hasAnimationThatRequiresService() const;
void updateCompositorAnimations();
- void layerForCompositedScrollingDidChange(WebCompositorAnimationTimeline*);
+ void layerForCompositedScrollingDidChange();
void notifyCompositorAnimationFinished(int groupId);
- // WebCompositorAnimationDelegate implementation.
- void notifyAnimationStarted(double monotonicTime, int group) override;
- void notifyAnimationFinished(double monotonicTime, int group) override;
-
- // WebCompositorAnimationPlayerClient implementation.
- WebCompositorAnimationPlayer* compositorPlayer() const override;
private:
explicit ProgrammaticScrollAnimator(ScrollableArea*);
@@ -70,10 +60,6 @@ private:
void resetAnimationState();
void notifyPositionChanged(const DoublePoint&);
- void reattachCompositorPlayerIfNeeded(WebCompositorAnimationTimeline*);
-
- OwnPtr<WebCompositorAnimationPlayer> m_compositorPlayer;
- int m_compositorAnimationAttachedToLayerId;
ScrollableArea* m_scrollableArea;
OwnPtr<WebScrollOffsetAnimationCurve> m_animationCurve;
diff --git a/third_party/WebKit/Source/platform/scroll/ScrollableArea.cpp b/third_party/WebKit/Source/platform/scroll/ScrollableArea.cpp
index e267731..f4e59a6 100644
--- a/third_party/WebKit/Source/platform/scroll/ScrollableArea.cpp
+++ b/third_party/WebKit/Source/platform/scroll/ScrollableArea.cpp
@@ -487,10 +487,10 @@ bool ScrollableArea::hasLayerForScrollCorner() const
return layerForScrollCorner();
}
-void ScrollableArea::layerForScrollingDidChange(WebCompositorAnimationTimeline* timeline)
+void ScrollableArea::layerForScrollingDidChange()
{
if (ProgrammaticScrollAnimator* programmaticScrollAnimator = existingProgrammaticScrollAnimator())
- programmaticScrollAnimator->layerForCompositedScrollingDidChange(timeline);
+ programmaticScrollAnimator->layerForCompositedScrollingDidChange();
}
bool ScrollableArea::scheduleAnimation()
diff --git a/third_party/WebKit/Source/platform/scroll/ScrollableArea.h b/third_party/WebKit/Source/platform/scroll/ScrollableArea.h
index ac78c93..0e284f1 100644
--- a/third_party/WebKit/Source/platform/scroll/ScrollableArea.h
+++ b/third_party/WebKit/Source/platform/scroll/ScrollableArea.h
@@ -46,7 +46,6 @@ class PlatformWheelEvent;
class ProgrammaticScrollAnimator;
struct ScrollAlignment;
class ScrollAnimator;
-class WebCompositorAnimationTimeline;
enum ScrollBehavior {
ScrollBehaviorAuto,
@@ -269,7 +268,7 @@ public:
bool hasLayerForVerticalScrollbar() const;
bool hasLayerForScrollCorner() const;
- void layerForScrollingDidChange(WebCompositorAnimationTimeline*);
+ void layerForScrollingDidChange();
void cancelScrollAnimation();
void cancelProgrammaticScrollAnimation();