Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(309)

Side by Side Diff: cc/trees/layer_tree_host_impl.h

Issue 986443003: Move viewport scrolling logic into separate class (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2011 The Chromium Authors. All rights reserved. 1 // Copyright 2011 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #ifndef CC_TREES_LAYER_TREE_HOST_IMPL_H_ 5 #ifndef CC_TREES_LAYER_TREE_HOST_IMPL_H_
6 #define CC_TREES_LAYER_TREE_HOST_IMPL_H_ 6 #define CC_TREES_LAYER_TREE_HOST_IMPL_H_
7 7
8 #include <set> 8 #include <set>
9 #include <string> 9 #include <string>
10 #include <vector> 10 #include <vector>
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after
66 class ResourcePool; 66 class ResourcePool;
67 class ScrollElasticityHelper; 67 class ScrollElasticityHelper;
68 class ScrollbarLayerImplBase; 68 class ScrollbarLayerImplBase;
69 class SwapPromise; 69 class SwapPromise;
70 class SwapPromiseMonitor; 70 class SwapPromiseMonitor;
71 class TextureMailboxDeleter; 71 class TextureMailboxDeleter;
72 class TopControlsManager; 72 class TopControlsManager;
73 class UIResourceBitmap; 73 class UIResourceBitmap;
74 class UIResourceRequest; 74 class UIResourceRequest;
75 struct ScrollAndScaleSet; 75 struct ScrollAndScaleSet;
76 class Viewport;
76 77
77 enum class GpuRasterizationStatus { 78 enum class GpuRasterizationStatus {
78 ON, 79 ON,
79 ON_FORCED, 80 ON_FORCED,
80 OFF_DEVICE, 81 OFF_DEVICE,
81 OFF_VIEWPORT, 82 OFF_VIEWPORT,
82 OFF_CONTENT 83 OFF_CONTENT
83 }; 84 };
84 85
85 // LayerTreeHost->Proxy callback interface. 86 // LayerTreeHost->Proxy callback interface.
(...skipping 431 matching lines...) Expand 10 before | Expand all | Expand 10 after
517 scoped_ptr<TileTaskWorkerPool>* tile_task_worker_pool, 518 scoped_ptr<TileTaskWorkerPool>* tile_task_worker_pool,
518 scoped_ptr<ResourcePool>* resource_pool, 519 scoped_ptr<ResourcePool>* resource_pool,
519 scoped_ptr<ResourcePool>* staging_resource_pool); 520 scoped_ptr<ResourcePool>* staging_resource_pool);
520 521
521 bool prepare_tiles_needed() const { return tile_priorities_dirty_; } 522 bool prepare_tiles_needed() const { return tile_priorities_dirty_; }
522 523
523 FrameTimingTracker* frame_timing_tracker() { 524 FrameTimingTracker* frame_timing_tracker() {
524 return frame_timing_tracker_.get(); 525 return frame_timing_tracker_.get();
525 } 526 }
526 527
528 gfx::Vector2dF ScrollLayer(LayerImpl* layer_impl,
529 const gfx::Vector2dF& delta,
530 const gfx::Point& viewport_point,
531 bool is_wheel_scroll);
532
527 protected: 533 protected:
528 LayerTreeHostImpl( 534 LayerTreeHostImpl(
529 const LayerTreeSettings& settings, 535 const LayerTreeSettings& settings,
530 LayerTreeHostImplClient* client, 536 LayerTreeHostImplClient* client,
531 Proxy* proxy, 537 Proxy* proxy,
532 RenderingStatsInstrumentation* rendering_stats_instrumentation, 538 RenderingStatsInstrumentation* rendering_stats_instrumentation,
533 SharedBitmapManager* shared_bitmap_manager, 539 SharedBitmapManager* shared_bitmap_manager,
534 gpu::GpuMemoryBufferManager* gpu_memory_buffer_manager, 540 gpu::GpuMemoryBufferManager* gpu_memory_buffer_manager,
535 TaskGraphRunner* task_graph_runner, 541 TaskGraphRunner* task_graph_runner,
536 int id); 542 int id);
537 543
538 // Virtual for testing. 544 // Virtual for testing.
539 virtual void AnimateLayers(base::TimeTicks monotonic_time); 545 virtual void AnimateLayers(base::TimeTicks monotonic_time);
540 546
541 bool is_likely_to_require_a_draw() const { 547 bool is_likely_to_require_a_draw() const {
542 return is_likely_to_require_a_draw_; 548 return is_likely_to_require_a_draw_;
543 } 549 }
544 550
545 LayerTreeHostImplClient* client_; 551 LayerTreeHostImplClient* client_;
546 Proxy* proxy_; 552 Proxy* proxy_;
547 553
548 private: 554 private:
555 gfx::Vector2dF ScrollLayerWithViewportSpaceDelta(
556 LayerImpl* layer_impl,
557 const gfx::PointF& viewport_point,
558 const gfx::Vector2dF& viewport_delta);
559
549 void CreateAndSetRenderer(); 560 void CreateAndSetRenderer();
550 void CreateAndSetTileManager(); 561 void CreateAndSetTileManager();
551 void DestroyTileManager(); 562 void DestroyTileManager();
552 void ReleaseTreeResources(); 563 void ReleaseTreeResources();
553 void RecreateTreeResources(); 564 void RecreateTreeResources();
554 void EnforceZeroBudget(bool zero_budget); 565 void EnforceZeroBudget(bool zero_budget);
555 566
556 bool IsSynchronousSingleThreaded() const; 567 bool IsSynchronousSingleThreaded() const;
557 568
569 Viewport* viewport() { return viewport_.get(); }
570
558 // Scroll by preferring to move the outer viewport first, only moving the 571 // Scroll by preferring to move the outer viewport first, only moving the
559 // inner if the outer is at its scroll extents. 572 // inner if the outer is at its scroll extents.
560 void ScrollViewportBy(gfx::Vector2dF scroll_delta); 573 void ScrollViewportBy(gfx::Vector2dF scroll_delta);
561 // Scroll by preferring to move the inner viewport first, only moving the 574 // Scroll by preferring to move the inner viewport first, only moving the
562 // outer if the inner is at its scroll extents. 575 // outer if the inner is at its scroll extents.
563 void ScrollViewportInnerFirst(gfx::Vector2dF scroll_delta); 576 void ScrollViewportInnerFirst(gfx::Vector2dF scroll_delta);
564 void AnimatePageScale(base::TimeTicks monotonic_time); 577 void AnimatePageScale(base::TimeTicks monotonic_time);
565 void AnimateScrollbars(base::TimeTicks monotonic_time); 578 void AnimateScrollbars(base::TimeTicks monotonic_time);
566 void AnimateTopControls(base::TimeTicks monotonic_time); 579 void AnimateTopControls(base::TimeTicks monotonic_time);
567 580
568 bool ShouldTopControlsConsumeScroll(const gfx::Vector2dF& scroll_delta) const;
569
570 gfx::Vector2dF ScrollLayerWithViewportSpaceDelta(
571 LayerImpl* layer_impl,
572 float scale_from_viewport_to_screen_space,
573 const gfx::PointF& viewport_point,
574 const gfx::Vector2dF& viewport_delta);
575
576 void TrackDamageForAllSurfaces( 581 void TrackDamageForAllSurfaces(
577 LayerImpl* root_draw_layer, 582 LayerImpl* root_draw_layer,
578 const LayerImplList& render_surface_layer_list); 583 const LayerImplList& render_surface_layer_list);
579 584
580 void UpdateTileManagerMemoryPolicy(const ManagedMemoryPolicy& policy); 585 void UpdateTileManagerMemoryPolicy(const ManagedMemoryPolicy& policy);
581 586
582 // This function should only be called from PrepareToDraw, as DidDrawAllLayers 587 // This function should only be called from PrepareToDraw, as DidDrawAllLayers
583 // must be called if this helper function is called. Returns DRAW_SUCCESS if 588 // must be called if this helper function is called. Returns DRAW_SUCCESS if
584 // the frame should be drawn. 589 // the frame should be drawn.
585 DrawResult CalculateRenderPasses(FrameData* frame); 590 DrawResult CalculateRenderPasses(FrameData* frame);
(...skipping 154 matching lines...) Expand 10 before | Expand all | Expand 10 after
740 int id_; 745 int id_;
741 746
742 std::set<SwapPromiseMonitor*> swap_promise_monitor_; 747 std::set<SwapPromiseMonitor*> swap_promise_monitor_;
743 std::vector<PictureLayerImpl::Pair> picture_layer_pairs_; 748 std::vector<PictureLayerImpl::Pair> picture_layer_pairs_;
744 749
745 bool requires_high_res_to_draw_; 750 bool requires_high_res_to_draw_;
746 bool is_likely_to_require_a_draw_; 751 bool is_likely_to_require_a_draw_;
747 752
748 scoped_ptr<FrameTimingTracker> frame_timing_tracker_; 753 scoped_ptr<FrameTimingTracker> frame_timing_tracker_;
749 754
755 scoped_ptr<Viewport> viewport_;
756
750 DISALLOW_COPY_AND_ASSIGN(LayerTreeHostImpl); 757 DISALLOW_COPY_AND_ASSIGN(LayerTreeHostImpl);
751 }; 758 };
752 759
753 } // namespace cc 760 } // namespace cc
754 761
755 #endif // CC_TREES_LAYER_TREE_HOST_IMPL_H_ 762 #endif // CC_TREES_LAYER_TREE_HOST_IMPL_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698