| Index: cc/trees/layer_tree_host_impl.h | 
| diff --git a/cc/trees/layer_tree_host_impl.h b/cc/trees/layer_tree_host_impl.h | 
| index 157fe00eb67013347d1840a7c9499e392b885fcf..24cb7301526522ff9f4e1f4bda9a6c0f18f4b42f 100644 | 
| --- a/cc/trees/layer_tree_host_impl.h | 
| +++ b/cc/trees/layer_tree_host_impl.h | 
| @@ -31,7 +31,6 @@ | 
| #include "cc/quads/render_pass.h" | 
| #include "cc/resources/resource_provider.h" | 
| #include "cc/resources/tile_manager.h" | 
| -#include "cc/scheduler/begin_frame_source.h" | 
| #include "cc/scheduler/draw_result.h" | 
| #include "skia/ext/refptr.h" | 
| #include "third_party/skia/include/core/SkColor.h" | 
| @@ -45,7 +44,6 @@ class DebugRectHistory; | 
| class EvictionTilePriorityQueue; | 
| class FrameRateCounter; | 
| class LayerImpl; | 
| -class LayerTreeHostImplTimeSourceAdapter; | 
| class LayerTreeImpl; | 
| class MemoryHistory; | 
| class PageScaleAnimation; | 
| @@ -56,6 +54,7 @@ class RasterWorkerPool; | 
| class RenderPassDrawQuad; | 
| class RenderingStatsInstrumentation; | 
| class ResourcePool; | 
| +class ScrollElasticityHelper; | 
| class ScrollbarLayerImplBase; | 
| class TextureMailboxDeleter; | 
| class TopControlsManager; | 
| @@ -76,6 +75,7 @@ class LayerTreeHostImplClient { | 
| virtual void DidSwapBuffersCompleteOnImplThread() = 0; | 
| virtual void OnCanDrawStateChanged(bool can_draw) = 0; | 
| virtual void NotifyReadyToActivate() = 0; | 
| +  virtual void NotifyReadyToDraw() = 0; | 
| // Please call these 3 functions through | 
| // LayerTreeHostImpl's SetNeedsRedraw(), SetNeedsRedrawRect() and | 
| // SetNeedsAnimate(). | 
| @@ -112,7 +112,6 @@ class CC_EXPORT LayerTreeHostImpl | 
| public OutputSurfaceClient, | 
| public TopControlsManagerClient, | 
| public ScrollbarAnimationControllerClient, | 
| -      public BeginFrameSourceMixIn, | 
| public base::SupportsWeakPtr<LayerTreeHostImpl> { | 
| public: | 
| static scoped_ptr<LayerTreeHostImpl> Create( | 
| @@ -125,9 +124,6 @@ class CC_EXPORT LayerTreeHostImpl | 
| int id); | 
| ~LayerTreeHostImpl() override; | 
|  | 
| -  // BeginFrameSourceMixIn implementation | 
| -  void OnNeedsBeginFramesChange(bool needs_begin_frames) override; | 
| - | 
| // InputHandler implementation | 
| void BindToClient(InputHandlerClient* client) override; | 
| InputHandler::ScrollStatus ScrollBegin( | 
| @@ -136,8 +132,9 @@ class CC_EXPORT LayerTreeHostImpl | 
| InputHandler::ScrollStatus ScrollAnimated( | 
| const gfx::Point& viewport_point, | 
| const gfx::Vector2dF& scroll_delta) override; | 
| -  bool ScrollBy(const gfx::Point& viewport_point, | 
| -                const gfx::Vector2dF& scroll_delta) override; | 
| +  InputHandlerScrollResult ScrollBy( | 
| +      const gfx::Point& viewport_point, | 
| +      const gfx::Vector2dF& scroll_delta) override; | 
| bool ScrollVerticallyByPage(const gfx::Point& viewport_point, | 
| ScrollDirection direction) override; | 
| void SetRootLayerScrollOffsetDelegate( | 
| @@ -156,6 +153,7 @@ class CC_EXPORT LayerTreeHostImpl | 
| bool HaveTouchEventHandlersAt(const gfx::Point& viewport_port) override; | 
| scoped_ptr<SwapPromiseMonitor> CreateLatencyInfoSwapPromiseMonitor( | 
| ui::LatencyInfo* latency) override; | 
| +  ScrollElasticityHelper* CreateScrollElasticityHelper() override; | 
|  | 
| // TopControlsManagerClient implementation. | 
| void SetControlsTopOffset(float offset) override; | 
| @@ -188,7 +186,6 @@ class CC_EXPORT LayerTreeHostImpl | 
| virtual void UpdateAnimationState(bool start_ready_animations); | 
| void ActivateAnimations(); | 
| void MainThreadHasStoppedFlinging(); | 
| -  void UpdateBackgroundAnimateTicking(bool should_background_tick); | 
| void DidAnimateScrollOffset(); | 
| void SetViewportDamage(const gfx::Rect& damage_rect); | 
|  | 
| @@ -234,6 +231,7 @@ class CC_EXPORT LayerTreeHostImpl | 
| // TileManagerClient implementation. | 
| const std::vector<PictureLayerImpl*>& GetPictureLayers() const override; | 
| void NotifyReadyToActivate() override; | 
| +  void NotifyReadyToDraw() override; | 
| void NotifyTileStateChanged(const Tile* tile) override; | 
| void BuildRasterQueue(RasterTilePriorityQueue* queue, | 
| TreePriority tree_priority) override; | 
| @@ -251,8 +249,6 @@ class CC_EXPORT LayerTreeHostImpl | 
| void CommitVSyncParameters(base::TimeTicks timebase, | 
| base::TimeDelta interval) override; | 
| void SetNeedsRedrawRect(const gfx::Rect& rect) override; | 
| -  void BeginFrame(const BeginFrameArgs& args) override; | 
| - | 
| void SetExternalDrawConstraints( | 
| const gfx::Transform& transform, | 
| const gfx::Rect& viewport, | 
| @@ -329,6 +325,8 @@ class CC_EXPORT LayerTreeHostImpl | 
| virtual void SetVisible(bool visible); | 
| bool visible() const { return visible_; } | 
|  | 
| +  bool AnimationsAreVisible() { return visible() && CanDraw(); } | 
| + | 
| void SetNeedsCommit() { client_->SetNeedsCommitOnImplThread(); } | 
| void SetNeedsRedraw(); | 
|  | 
| @@ -424,7 +422,7 @@ class CC_EXPORT LayerTreeHostImpl | 
| return begin_impl_frame_interval_; | 
| } | 
|  | 
| -  void AsValueInto(base::debug::TracedValue* value) const override; | 
| +  void AsValueInto(base::debug::TracedValue* value) const; | 
| void AsValueWithFrameInto(FrameData* frame, | 
| base::debug::TracedValue* value) const; | 
| scoped_refptr<base::debug::ConvertableToTraceFormat> AsValue() const; | 
| @@ -473,8 +471,8 @@ class CC_EXPORT LayerTreeHostImpl | 
| void RegisterPictureLayerImpl(PictureLayerImpl* layer); | 
| void UnregisterPictureLayerImpl(PictureLayerImpl* layer); | 
|  | 
| -  void GetPictureLayerImplPairs( | 
| -      std::vector<PictureLayerImpl::Pair>* layers) const; | 
| +  void GetPictureLayerImplPairs(std::vector<PictureLayerImpl::Pair>* layers, | 
| +                                bool need_valid_tile_priorities) const; | 
|  | 
| void SetTopControlsLayoutHeight(float height); | 
|  | 
| @@ -506,8 +504,6 @@ class CC_EXPORT LayerTreeHostImpl | 
|  | 
| // Virtual for testing. | 
| virtual void AnimateLayers(base::TimeTicks monotonic_time); | 
| -  virtual base::TimeDelta LowFrequencyAnimationInterval() const; | 
| - | 
| const AnimationRegistrar::AnimationControllerMap& | 
| active_animation_controllers() const { | 
| return animation_registrar_->active_animation_controllers(); | 
| @@ -627,6 +623,10 @@ class CC_EXPORT LayerTreeHostImpl | 
| int scroll_layer_id_when_mouse_over_scrollbar_; | 
| ScopedPtrVector<SwapPromise> swap_promises_for_main_thread_scroll_update_; | 
|  | 
| +  // An object to implement the ScrollElasticityHelper interface and | 
| +  // hold all state related to elasticity. May be NULL if never requested. | 
| +  scoped_ptr<ScrollElasticityHelper> scroll_elasticity_helper_; | 
| + | 
| bool tile_priorities_dirty_; | 
|  | 
| // The optional delegate for the root layer scroll offset. | 
| @@ -646,9 +646,6 @@ class CC_EXPORT LayerTreeHostImpl | 
|  | 
| scoped_ptr<PageScaleAnimation> page_scale_animation_; | 
|  | 
| -  // This is used for ticking animations slowly when hidden. | 
| -  scoped_ptr<LayerTreeHostImplTimeSourceAdapter> time_source_client_adapter_; | 
| - | 
| scoped_ptr<FrameRateCounter> fps_counter_; | 
| scoped_ptr<PaintTimeCounter> paint_time_counter_; | 
| scoped_ptr<MemoryHistory> memory_history_; | 
|  |