| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (c) 2011, Google Inc. All rights reserved. | 2 * Copyright (c) 2011, Google Inc. All rights reserved. |
| 3 * | 3 * |
| 4 * Redistribution and use in source and binary forms, with or without | 4 * Redistribution and use in source and binary forms, with or without |
| 5 * modification, are permitted provided that the following conditions are | 5 * modification, are permitted provided that the following conditions are |
| 6 * met: | 6 * met: |
| 7 * | 7 * |
| 8 * * Redistributions of source code must retain the above copyright | 8 * * Redistributions of source code must retain the above copyright |
| 9 * notice, this list of conditions and the following disclaimer. | 9 * notice, this list of conditions and the following disclaimer. |
| 10 * * Redistributions in binary form must reproduce the above | 10 * * Redistributions in binary form must reproduce the above |
| (...skipping 13 matching lines...) Expand all Loading... |
| 24 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, | 24 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
| 25 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY | 25 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
| 26 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | 26 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
| 27 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE | 27 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
| 28 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | 28 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
| 29 */ | 29 */ |
| 30 | 30 |
| 31 #include "platform/scroll/ScrollAnimator.h" | 31 #include "platform/scroll/ScrollAnimator.h" |
| 32 | 32 |
| 33 #include "platform/TraceEvent.h" | 33 #include "platform/TraceEvent.h" |
| 34 #include "platform/animation/CompositorAnimation.h" |
| 35 #include "platform/graphics/CompositorFactory.h" |
| 34 #include "platform/graphics/GraphicsLayer.h" | 36 #include "platform/graphics/GraphicsLayer.h" |
| 35 #include "platform/scroll/ScrollableArea.h" | 37 #include "platform/scroll/ScrollableArea.h" |
| 36 #include "public/platform/Platform.h" | 38 #include "public/platform/Platform.h" |
| 37 #include "public/platform/WebCompositorAnimation.h" | |
| 38 #include "public/platform/WebCompositorSupport.h" | 39 #include "public/platform/WebCompositorSupport.h" |
| 39 #include "wtf/CurrentTime.h" | 40 #include "wtf/CurrentTime.h" |
| 40 #include "wtf/PassRefPtr.h" | 41 #include "wtf/PassRefPtr.h" |
| 41 | 42 |
| 42 namespace blink { | 43 namespace blink { |
| 43 | 44 |
| 44 PassOwnPtrWillBeRawPtr<ScrollAnimatorBase> ScrollAnimatorBase::create(Scrollable
Area* scrollableArea) | 45 PassOwnPtrWillBeRawPtr<ScrollAnimatorBase> ScrollAnimatorBase::create(Scrollable
Area* scrollableArea) |
| 45 { | 46 { |
| 46 if (scrollableArea && scrollableArea->scrollAnimatorEnabled()) | 47 if (scrollableArea && scrollableArea->scrollAnimatorEnabled()) |
| 47 return adoptPtrWillBeNoop(new ScrollAnimator(scrollableArea)); | 48 return adoptPtrWillBeNoop(new ScrollAnimator(scrollableArea)); |
| (...skipping 173 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 221 | 222 |
| 222 m_compositorAnimationId = 0; | 223 m_compositorAnimationId = 0; |
| 223 m_compositorAnimationGroupId = 0; | 224 m_compositorAnimationGroupId = 0; |
| 224 | 225 |
| 225 m_animationCurve->updateTarget(m_timeFunction() - m_startTime, | 226 m_animationCurve->updateTarget(m_timeFunction() - m_startTime, |
| 226 m_targetOffset); | 227 m_targetOffset); |
| 227 m_runState = RunState::WaitingToSendToCompositor; | 228 m_runState = RunState::WaitingToSendToCompositor; |
| 228 } | 229 } |
| 229 | 230 |
| 230 if (!m_animationCurve) { | 231 if (!m_animationCurve) { |
| 231 m_animationCurve = adoptPtr(Platform::current()->compositorSupport() | 232 m_animationCurve = adoptPtr(CompositorFactory::current().createScrol
lOffsetAnimationCurve( |
| 232 ->createScrollOffsetAnimationCurve( | 233 m_targetOffset, |
| 233 m_targetOffset, | 234 CompositorAnimationCurve::TimingFunctionTypeEaseInOut, |
| 234 WebCompositorAnimationCurve::TimingFunctionTypeEaseInOut, | 235 m_lastGranularity == ScrollByPixel ? |
| 235 m_lastGranularity == ScrollByPixel ? | 236 CompositorScrollOffsetAnimationCurve::ScrollDurationInverseD
elta : |
| 236 WebScrollOffsetAnimationCurve::ScrollDurationInverseDelt
a : | 237 CompositorScrollOffsetAnimationCurve::ScrollDurationConstant
)); |
| 237 WebScrollOffsetAnimationCurve::ScrollDurationConstant)); | |
| 238 m_animationCurve->setInitialValue(currentPosition()); | 238 m_animationCurve->setInitialValue(currentPosition()); |
| 239 } | 239 } |
| 240 | 240 |
| 241 bool sentToCompositor = false; | 241 bool sentToCompositor = false; |
| 242 if (!m_scrollableArea->shouldScrollOnMainThread()) { | 242 if (!m_scrollableArea->shouldScrollOnMainThread()) { |
| 243 OwnPtr<WebCompositorAnimation> animation = adoptPtr( | 243 OwnPtr<CompositorAnimation> animation = adoptPtr( |
| 244 Platform::current()->compositorSupport()->createAnimation( | 244 CompositorFactory::current().createAnimation( |
| 245 *m_animationCurve, | 245 *m_animationCurve, |
| 246 WebCompositorAnimation::TargetPropertyScrollOffset)); | 246 CompositorAnimation::TargetPropertyScrollOffset)); |
| 247 // Being here means that either there is an animation that needs | 247 // Being here means that either there is an animation that needs |
| 248 // to be sent to the compositor, or an animation that needs to | 248 // to be sent to the compositor, or an animation that needs to |
| 249 // be updated (a new scroll event before the previous animation | 249 // be updated (a new scroll event before the previous animation |
| 250 // is finished). In either case, the start time is when the | 250 // is finished). In either case, the start time is when the |
| 251 // first animation was initiated. This re-targets the animation | 251 // first animation was initiated. This re-targets the animation |
| 252 // using the current time on main thread. | 252 // using the current time on main thread. |
| 253 animation->setStartTime(m_startTime); | 253 animation->setStartTime(m_startTime); |
| 254 | 254 |
| 255 int animationId = animation->id(); | 255 int animationId = animation->id(); |
| 256 int animationGroupId = animation->group(); | 256 int animationGroupId = animation->group(); |
| (...skipping 24 matching lines...) Expand all Loading... |
| 281 { | 281 { |
| 282 ScrollAnimatorCompositorCoordinator::compositorAnimationFinished(groupId); | 282 ScrollAnimatorCompositorCoordinator::compositorAnimationFinished(groupId); |
| 283 } | 283 } |
| 284 | 284 |
| 285 void ScrollAnimator::cancelAnimation() | 285 void ScrollAnimator::cancelAnimation() |
| 286 { | 286 { |
| 287 ScrollAnimatorCompositorCoordinator::cancelAnimation(); | 287 ScrollAnimatorCompositorCoordinator::cancelAnimation(); |
| 288 } | 288 } |
| 289 | 289 |
| 290 void ScrollAnimator::layerForCompositedScrollingDidChange( | 290 void ScrollAnimator::layerForCompositedScrollingDidChange( |
| 291 WebCompositorAnimationTimeline* timeline) | 291 CompositorAnimationTimeline* timeline) |
| 292 { | 292 { |
| 293 reattachCompositorPlayerIfNeeded(timeline); | 293 reattachCompositorPlayerIfNeeded(timeline); |
| 294 } | 294 } |
| 295 | 295 |
| 296 bool ScrollAnimator::registerAndScheduleAnimation() | 296 bool ScrollAnimator::registerAndScheduleAnimation() |
| 297 { | 297 { |
| 298 scrollableArea()->registerForAnimation(); | 298 scrollableArea()->registerForAnimation(); |
| 299 if (!m_scrollableArea->scheduleAnimation()) { | 299 if (!m_scrollableArea->scheduleAnimation()) { |
| 300 scrollToOffsetWithoutAnimation(m_targetOffset); | 300 scrollToOffsetWithoutAnimation(m_targetOffset); |
| 301 resetAnimationState(); | 301 resetAnimationState(); |
| 302 return false; | 302 return false; |
| 303 } | 303 } |
| 304 return true; | 304 return true; |
| 305 } | 305 } |
| 306 | 306 |
| 307 DEFINE_TRACE(ScrollAnimator) | 307 DEFINE_TRACE(ScrollAnimator) |
| 308 { | 308 { |
| 309 ScrollAnimatorBase::trace(visitor); | 309 ScrollAnimatorBase::trace(visitor); |
| 310 } | 310 } |
| 311 | 311 |
| 312 } // namespace blink | 312 } // namespace blink |
| OLD | NEW |