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

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

Issue 1866203004: Convert //cc from scoped_ptr to std::unique_ptr. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: scopedptrcc: rebase Created 4 years, 8 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
« no previous file with comments | « cc/trees/layer_tree_host_unittest_serialization.cc ('k') | cc/trees/layer_tree_impl.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2012 The Chromium Authors. All rights reserved. 1 // Copyright 2012 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_IMPL_H_ 5 #ifndef CC_TREES_LAYER_TREE_IMPL_H_
6 #define CC_TREES_LAYER_TREE_IMPL_H_ 6 #define CC_TREES_LAYER_TREE_IMPL_H_
7 7
8 #include <map> 8 #include <map>
9 #include <set> 9 #include <set>
10 #include <string> 10 #include <string>
11 #include <unordered_map> 11 #include <unordered_map>
12 #include <vector> 12 #include <vector>
13 13
14 #include "base/macros.h" 14 #include "base/macros.h"
15 #include "base/memory/ptr_util.h"
15 #include "base/values.h" 16 #include "base/values.h"
16 #include "cc/base/synced_property.h" 17 #include "cc/base/synced_property.h"
17 #include "cc/input/event_listener_properties.h" 18 #include "cc/input/event_listener_properties.h"
18 #include "cc/input/layer_selection_bound.h" 19 #include "cc/input/layer_selection_bound.h"
19 #include "cc/layers/layer_impl.h" 20 #include "cc/layers/layer_impl.h"
20 #include "cc/layers/layer_list_iterator.h" 21 #include "cc/layers/layer_list_iterator.h"
21 #include "cc/output/begin_frame_args.h" 22 #include "cc/output/begin_frame_args.h"
22 #include "cc/output/renderer.h" 23 #include "cc/output/renderer.h"
23 #include "cc/output/swap_promise.h" 24 #include "cc/output/swap_promise.h"
24 #include "cc/resources/ui_resource_client.h" 25 #include "cc/resources/ui_resource_client.h"
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
57 58
58 typedef std::vector<UIResourceRequest> UIResourceRequestQueue; 59 typedef std::vector<UIResourceRequest> UIResourceRequestQueue;
59 typedef SyncedProperty<AdditionGroup<float>> SyncedTopControls; 60 typedef SyncedProperty<AdditionGroup<float>> SyncedTopControls;
60 typedef SyncedProperty<AdditionGroup<gfx::Vector2dF>> SyncedElasticOverscroll; 61 typedef SyncedProperty<AdditionGroup<gfx::Vector2dF>> SyncedElasticOverscroll;
61 62
62 class CC_EXPORT LayerTreeImpl { 63 class CC_EXPORT LayerTreeImpl {
63 public: 64 public:
64 // This is the number of times a fixed point has to be hit contiuously by a 65 // This is the number of times a fixed point has to be hit contiuously by a
65 // layer to consider it as jittering. 66 // layer to consider it as jittering.
66 const int kFixedPointHitsThreshold = 3; 67 const int kFixedPointHitsThreshold = 3;
67 static scoped_ptr<LayerTreeImpl> create( 68 static std::unique_ptr<LayerTreeImpl> create(
68 LayerTreeHostImpl* layer_tree_host_impl, 69 LayerTreeHostImpl* layer_tree_host_impl,
69 scoped_refptr<SyncedProperty<ScaleGroup>> page_scale_factor, 70 scoped_refptr<SyncedProperty<ScaleGroup>> page_scale_factor,
70 scoped_refptr<SyncedTopControls> top_controls_shown_ratio, 71 scoped_refptr<SyncedTopControls> top_controls_shown_ratio,
71 scoped_refptr<SyncedElasticOverscroll> elastic_overscroll) { 72 scoped_refptr<SyncedElasticOverscroll> elastic_overscroll) {
72 return make_scoped_ptr( 73 return base::WrapUnique(
73 new LayerTreeImpl(layer_tree_host_impl, page_scale_factor, 74 new LayerTreeImpl(layer_tree_host_impl, page_scale_factor,
74 top_controls_shown_ratio, elastic_overscroll)); 75 top_controls_shown_ratio, elastic_overscroll));
75 } 76 }
76 virtual ~LayerTreeImpl(); 77 virtual ~LayerTreeImpl();
77 78
78 void Shutdown(); 79 void Shutdown();
79 void ReleaseResources(); 80 void ReleaseResources();
80 void RecreateResources(); 81 void RecreateResources();
81 82
82 // Methods called by the layer tree that pass-through or access LTHI. 83 // Methods called by the layer tree that pass-through or access LTHI.
(...skipping 15 matching lines...) Expand all
98 bool IsRecycleTree() const; 99 bool IsRecycleTree() const;
99 bool IsSyncTree() const; 100 bool IsSyncTree() const;
100 LayerImpl* FindActiveTreeLayerById(int id); 101 LayerImpl* FindActiveTreeLayerById(int id);
101 LayerImpl* FindPendingTreeLayerById(int id); 102 LayerImpl* FindPendingTreeLayerById(int id);
102 bool PinchGestureActive() const; 103 bool PinchGestureActive() const;
103 BeginFrameArgs CurrentBeginFrameArgs() const; 104 BeginFrameArgs CurrentBeginFrameArgs() const;
104 base::TimeDelta CurrentBeginFrameInterval() const; 105 base::TimeDelta CurrentBeginFrameInterval() const;
105 gfx::Rect DeviceViewport() const; 106 gfx::Rect DeviceViewport() const;
106 gfx::Size DrawViewportSize() const; 107 gfx::Size DrawViewportSize() const;
107 const gfx::Rect ViewportRectForTilePriority() const; 108 const gfx::Rect ViewportRectForTilePriority() const;
108 scoped_ptr<ScrollbarAnimationController> CreateScrollbarAnimationController( 109 std::unique_ptr<ScrollbarAnimationController>
109 int scroll_layer_id); 110 CreateScrollbarAnimationController(int scroll_layer_id);
110 void DidAnimateScrollOffset(); 111 void DidAnimateScrollOffset();
111 bool use_gpu_rasterization() const; 112 bool use_gpu_rasterization() const;
112 GpuRasterizationStatus GetGpuRasterizationStatus() const; 113 GpuRasterizationStatus GetGpuRasterizationStatus() const;
113 bool create_low_res_tiling() const; 114 bool create_low_res_tiling() const;
114 bool RequiresHighResToDraw() const; 115 bool RequiresHighResToDraw() const;
115 bool SmoothnessTakesPriority() const; 116 bool SmoothnessTakesPriority() const;
116 VideoFrameControllerClient* GetVideoFrameControllerClient() const; 117 VideoFrameControllerClient* GetVideoFrameControllerClient() const;
117 AnimationHost* animation_host() const { 118 AnimationHost* animation_host() const {
118 return layer_tree_host_impl_->animation_host(); 119 return layer_tree_host_impl_->animation_host();
119 } 120 }
120 121
121 // Tree specific methods exposed to layer-impl tree. 122 // Tree specific methods exposed to layer-impl tree.
122 // --------------------------------------------------------------------------- 123 // ---------------------------------------------------------------------------
123 void SetNeedsRedraw(); 124 void SetNeedsRedraw();
124 125
125 // Tracing methods. 126 // Tracing methods.
126 // --------------------------------------------------------------------------- 127 // ---------------------------------------------------------------------------
127 void GetAllPrioritizedTilesForTracing( 128 void GetAllPrioritizedTilesForTracing(
128 std::vector<PrioritizedTile>* prioritized_tiles) const; 129 std::vector<PrioritizedTile>* prioritized_tiles) const;
129 void AsValueInto(base::trace_event::TracedValue* dict) const; 130 void AsValueInto(base::trace_event::TracedValue* dict) const;
130 131
131 // Other public methods 132 // Other public methods
132 // --------------------------------------------------------------------------- 133 // ---------------------------------------------------------------------------
133 LayerImpl* root_layer() const { return root_layer_; } 134 LayerImpl* root_layer() const { return root_layer_; }
134 void SetRootLayer(scoped_ptr<LayerImpl>); 135 void SetRootLayer(std::unique_ptr<LayerImpl>);
135 bool IsRootLayer(const LayerImpl* layer) const; 136 bool IsRootLayer(const LayerImpl* layer) const;
136 scoped_ptr<OwnedLayerImplList> DetachLayers(); 137 std::unique_ptr<OwnedLayerImplList> DetachLayers();
137 void ClearLayers(); 138 void ClearLayers();
138 139
139 void SetPropertyTrees(const PropertyTrees property_trees) { 140 void SetPropertyTrees(const PropertyTrees property_trees) {
140 property_trees_ = property_trees; 141 property_trees_ = property_trees;
141 property_trees_.is_main_thread = false; 142 property_trees_.is_main_thread = false;
142 property_trees_.is_active = IsActiveTree(); 143 property_trees_.is_active = IsActiveTree();
143 property_trees_.transform_tree.set_source_to_parent_updates_allowed(false); 144 property_trees_.transform_tree.set_source_to_parent_updates_allowed(false);
144 } 145 }
145 PropertyTrees* property_trees() { return &property_trees_; } 146 PropertyTrees* property_trees() { return &property_trees_; }
146 147
(...skipping 156 matching lines...) Expand 10 before | Expand all | Expand 10 after
303 void AddLayerShouldPushProperties(LayerImpl* layer); 304 void AddLayerShouldPushProperties(LayerImpl* layer);
304 void RemoveLayerShouldPushProperties(LayerImpl* layer); 305 void RemoveLayerShouldPushProperties(LayerImpl* layer);
305 std::unordered_set<LayerImpl*>& LayersThatShouldPushProperties(); 306 std::unordered_set<LayerImpl*>& LayersThatShouldPushProperties();
306 bool LayerNeedsPushPropertiesForTesting(LayerImpl* layer); 307 bool LayerNeedsPushPropertiesForTesting(LayerImpl* layer);
307 308
308 // These should be called by LayerImpl's ctor/dtor. 309 // These should be called by LayerImpl's ctor/dtor.
309 void RegisterLayer(LayerImpl* layer); 310 void RegisterLayer(LayerImpl* layer);
310 void UnregisterLayer(LayerImpl* layer); 311 void UnregisterLayer(LayerImpl* layer);
311 312
312 // These manage ownership of the LayerImpl. 313 // These manage ownership of the LayerImpl.
313 void AddLayer(scoped_ptr<LayerImpl> layer); 314 void AddLayer(std::unique_ptr<LayerImpl> layer);
314 scoped_ptr<LayerImpl> RemoveLayer(int id); 315 std::unique_ptr<LayerImpl> RemoveLayer(int id);
315 316
316 size_t NumLayers(); 317 size_t NumLayers();
317 318
318 void DidBecomeActive(); 319 void DidBecomeActive();
319 320
320 // Set on the active tree when the viewport size recently changed 321 // Set on the active tree when the viewport size recently changed
321 // and the active tree's size is now out of date. 322 // and the active tree's size is now out of date.
322 bool ViewportSizeInvalid() const; 323 bool ViewportSizeInvalid() const;
323 void SetViewportSizeInvalid(); 324 void SetViewportSizeInvalid();
324 void ResetViewportSizeInvalid(); 325 void ResetViewportSizeInvalid();
(...skipping 11 matching lines...) Expand all
336 337
337 // Call this function when you expect there to be a swap buffer. 338 // Call this function when you expect there to be a swap buffer.
338 // See swap_promise.h for how to use SwapPromise. 339 // See swap_promise.h for how to use SwapPromise.
339 // 340 //
340 // A swap promise queued by QueueSwapPromise travels with the layer 341 // A swap promise queued by QueueSwapPromise travels with the layer
341 // information currently associated with the tree. For example, when 342 // information currently associated with the tree. For example, when
342 // a pending tree is activated, the swap promise is passed to the 343 // a pending tree is activated, the swap promise is passed to the
343 // active tree along with the layer information. Similarly, when a 344 // active tree along with the layer information. Similarly, when a
344 // new activation overwrites layer information on the active tree, 345 // new activation overwrites layer information on the active tree,
345 // queued swap promises are broken. 346 // queued swap promises are broken.
346 void QueueSwapPromise(scoped_ptr<SwapPromise> swap_promise); 347 void QueueSwapPromise(std::unique_ptr<SwapPromise> swap_promise);
347 348
348 // Queue a swap promise, pinned to this tree. Pinned swap promises 349 // Queue a swap promise, pinned to this tree. Pinned swap promises
349 // may only be queued on the active tree. 350 // may only be queued on the active tree.
350 // 351 //
351 // An active tree pinned swap promise will see only DidSwap() or 352 // An active tree pinned swap promise will see only DidSwap() or
352 // DidNotSwap(SWAP_FAILS). No DidActivate() will be seen because 353 // DidNotSwap(SWAP_FAILS). No DidActivate() will be seen because
353 // that has already happened prior to queueing of the swap promise. 354 // that has already happened prior to queueing of the swap promise.
354 // 355 //
355 // Pinned active tree swap promises will not be broken prematurely 356 // Pinned active tree swap promises will not be broken prematurely
356 // on the active tree if a new tree is activated. 357 // on the active tree if a new tree is activated.
357 void QueuePinnedSwapPromise(scoped_ptr<SwapPromise> swap_promise); 358 void QueuePinnedSwapPromise(std::unique_ptr<SwapPromise> swap_promise);
358 359
359 // Take the |new_swap_promise| and append it to |swap_promise_list_|. 360 // Take the |new_swap_promise| and append it to |swap_promise_list_|.
360 void PassSwapPromises(std::vector<scoped_ptr<SwapPromise>>* new_swap_promise); 361 void PassSwapPromises(
362 std::vector<std::unique_ptr<SwapPromise>>* new_swap_promise);
361 void FinishSwapPromises(CompositorFrameMetadata* metadata); 363 void FinishSwapPromises(CompositorFrameMetadata* metadata);
362 void BreakSwapPromises(SwapPromise::DidNotSwapReason reason); 364 void BreakSwapPromises(SwapPromise::DidNotSwapReason reason);
363 365
364 void DidModifyTilePriorities(); 366 void DidModifyTilePriorities();
365 367
366 ResourceId ResourceIdForUIResource(UIResourceId uid) const; 368 ResourceId ResourceIdForUIResource(UIResourceId uid) const;
367 void ProcessUIResourceRequestQueue(); 369 void ProcessUIResourceRequestQueue();
368 370
369 bool IsUIResourceOpaque(UIResourceId uid) const; 371 bool IsUIResourceOpaque(UIResourceId uid) const;
370 372
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
417 } 419 }
418 bool SetCurrentTopControlsShownRatio(float ratio); 420 bool SetCurrentTopControlsShownRatio(float ratio);
419 float CurrentTopControlsShownRatio() const { 421 float CurrentTopControlsShownRatio() const {
420 return top_controls_shown_ratio_->Current(IsActiveTree()); 422 return top_controls_shown_ratio_->Current(IsActiveTree());
421 } 423 }
422 void set_top_controls_height(float top_controls_height); 424 void set_top_controls_height(float top_controls_height);
423 float top_controls_height() const { return top_controls_height_; } 425 float top_controls_height() const { return top_controls_height_; }
424 void PushTopControlsFromMainThread(float top_controls_shown_ratio); 426 void PushTopControlsFromMainThread(float top_controls_shown_ratio);
425 427
426 void SetPendingPageScaleAnimation( 428 void SetPendingPageScaleAnimation(
427 scoped_ptr<PendingPageScaleAnimation> pending_animation); 429 std::unique_ptr<PendingPageScaleAnimation> pending_animation);
428 scoped_ptr<PendingPageScaleAnimation> TakePendingPageScaleAnimation(); 430 std::unique_ptr<PendingPageScaleAnimation> TakePendingPageScaleAnimation();
429 431
430 void GatherFrameTimingRequestIds(std::vector<int64_t>* request_ids); 432 void GatherFrameTimingRequestIds(std::vector<int64_t>* request_ids);
431 433
432 void DidUpdateScrollOffset(int layer_id, int transform_id); 434 void DidUpdateScrollOffset(int layer_id, int transform_id);
433 void DidUpdateScrollState(int layer_id); 435 void DidUpdateScrollState(int layer_id);
434 436
435 bool IsAnimatingFilterProperty(const LayerImpl* layer) const; 437 bool IsAnimatingFilterProperty(const LayerImpl* layer) const;
436 bool IsAnimatingOpacityProperty(const LayerImpl* layer) const; 438 bool IsAnimatingOpacityProperty(const LayerImpl* layer) const;
437 bool IsAnimatingTransformProperty(const LayerImpl* layer) const; 439 bool IsAnimatingTransformProperty(const LayerImpl* layer) const;
438 440
(...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after
520 522
521 scoped_refptr<SyncedProperty<ScaleGroup>> page_scale_factor_; 523 scoped_refptr<SyncedProperty<ScaleGroup>> page_scale_factor_;
522 float min_page_scale_factor_; 524 float min_page_scale_factor_;
523 float max_page_scale_factor_; 525 float max_page_scale_factor_;
524 526
525 float device_scale_factor_; 527 float device_scale_factor_;
526 float painted_device_scale_factor_; 528 float painted_device_scale_factor_;
527 529
528 scoped_refptr<SyncedElasticOverscroll> elastic_overscroll_; 530 scoped_refptr<SyncedElasticOverscroll> elastic_overscroll_;
529 531
530 scoped_ptr<OwnedLayerImplList> layers_; 532 std::unique_ptr<OwnedLayerImplList> layers_;
531 LayerImplMap layer_id_map_; 533 LayerImplMap layer_id_map_;
532 // Set of layers that need to push properties. 534 // Set of layers that need to push properties.
533 std::unordered_set<LayerImpl*> layers_that_should_push_properties_; 535 std::unordered_set<LayerImpl*> layers_that_should_push_properties_;
534 536
535 std::unordered_map<uint64_t, ElementLayers> element_layers_map_; 537 std::unordered_map<uint64_t, ElementLayers> element_layers_map_;
536 538
537 // Maps from clip layer ids to scroll layer ids. Note that this only includes 539 // Maps from clip layer ids to scroll layer ids. Note that this only includes
538 // the subset of clip layers that act as scrolling containers. (This is 540 // the subset of clip layers that act as scrolling containers. (This is
539 // derived from LayerImpl::scroll_clip_layer_ and exists to avoid O(n) walks.) 541 // derived from LayerImpl::scroll_clip_layer_ and exists to avoid O(n) walks.)
540 std::unordered_map<int, int> clip_scroll_map_; 542 std::unordered_map<int, int> clip_scroll_map_;
(...skipping 18 matching lines...) Expand all
559 bool needs_update_draw_properties_; 561 bool needs_update_draw_properties_;
560 562
561 // In impl-side painting mode, this is true when the tree may contain 563 // In impl-side painting mode, this is true when the tree may contain
562 // structural differences relative to the active tree. 564 // structural differences relative to the active tree.
563 bool needs_full_tree_sync_; 565 bool needs_full_tree_sync_;
564 566
565 bool next_activation_forces_redraw_; 567 bool next_activation_forces_redraw_;
566 568
567 bool has_ever_been_drawn_; 569 bool has_ever_been_drawn_;
568 570
569 std::vector<scoped_ptr<SwapPromise>> swap_promise_list_; 571 std::vector<std::unique_ptr<SwapPromise>> swap_promise_list_;
570 std::vector<scoped_ptr<SwapPromise>> pinned_swap_promise_list_; 572 std::vector<std::unique_ptr<SwapPromise>> pinned_swap_promise_list_;
571 573
572 UIResourceRequestQueue ui_resource_request_queue_; 574 UIResourceRequestQueue ui_resource_request_queue_;
573 575
574 int render_surface_layer_list_id_; 576 int render_surface_layer_list_id_;
575 577
576 bool have_scroll_event_handlers_; 578 bool have_scroll_event_handlers_;
577 EventListenerProperties event_listener_properties_[static_cast<size_t>( 579 EventListenerProperties event_listener_properties_[static_cast<size_t>(
578 EventListenerClass::kNumClasses)]; 580 EventListenerClass::kNumClasses)];
579 581
580 // Whether or not Blink's viewport size was shrunk by the height of the top 582 // Whether or not Blink's viewport size was shrunk by the height of the top
581 // controls at the time of the last layout. 583 // controls at the time of the last layout.
582 bool top_controls_shrink_blink_size_; 584 bool top_controls_shrink_blink_size_;
583 float top_controls_height_; 585 float top_controls_height_;
584 586
585 // The amount that the top controls are shown from 0 (hidden) to 1 (fully 587 // The amount that the top controls are shown from 0 (hidden) to 1 (fully
586 // shown). 588 // shown).
587 scoped_refptr<SyncedTopControls> top_controls_shown_ratio_; 589 scoped_refptr<SyncedTopControls> top_controls_shown_ratio_;
588 590
589 scoped_ptr<PendingPageScaleAnimation> pending_page_scale_animation_; 591 std::unique_ptr<PendingPageScaleAnimation> pending_page_scale_animation_;
590 592
591 private: 593 private:
592 DISALLOW_COPY_AND_ASSIGN(LayerTreeImpl); 594 DISALLOW_COPY_AND_ASSIGN(LayerTreeImpl);
593 }; 595 };
594 596
595 } // namespace cc 597 } // namespace cc
596 598
597 #endif // CC_TREES_LAYER_TREE_IMPL_H_ 599 #endif // CC_TREES_LAYER_TREE_IMPL_H_
OLDNEW
« no previous file with comments | « cc/trees/layer_tree_host_unittest_serialization.cc ('k') | cc/trees/layer_tree_impl.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698