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

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

Issue 2216203002: Refactor MutatorHostClient from LayerTreeHost to LayerTree. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebase on another LTH refactor CL. Created 4 years, 4 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/draw_property_utils.cc ('k') | cc/trees/layer_tree.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 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 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_H_ 5 #ifndef CC_TREES_LAYER_TREE_H_
6 #define CC_TREES_LAYER_TREE_H_ 6 #define CC_TREES_LAYER_TREE_H_
7 7
8 #include <memory> 8 #include <memory>
9
10 #include <unordered_map> 9 #include <unordered_map>
11 #include <unordered_set> 10 #include <unordered_set>
11
12 #include "base/macros.h" 12 #include "base/macros.h"
13 #include "base/memory/ref_counted.h" 13 #include "base/memory/ref_counted.h"
14 #include "cc/base/cc_export.h" 14 #include "cc/base/cc_export.h"
15 #include "cc/input/event_listener_properties.h" 15 #include "cc/input/event_listener_properties.h"
16 #include "cc/input/layer_selection_bound.h" 16 #include "cc/input/layer_selection_bound.h"
17 #include "cc/layers/layer_collections.h" 17 #include "cc/layers/layer_collections.h"
18 #include "cc/layers/layer_list_iterator.h"
19 #include "cc/trees/mutator_host_client.h"
18 #include "cc/trees/property_tree.h" 20 #include "cc/trees/property_tree.h"
19 #include "third_party/skia/include/core/SkColor.h" 21 #include "third_party/skia/include/core/SkColor.h"
20 #include "ui/gfx/geometry/size.h" 22 #include "ui/gfx/geometry/size.h"
21 23
22 namespace base { 24 namespace base {
23 class TimeDelta; 25 class TimeDelta;
24 } // namespace base 26 } // namespace base
25 27
26 namespace cc { 28 namespace cc {
27 29
28 namespace proto { 30 namespace proto {
29 class LayerTree; 31 class LayerTree;
30 class LayerUpdate; 32 class LayerUpdate;
31 } // namespace proto 33 } // namespace proto
32 34
33 class AnimationHost; 35 class AnimationHost;
34 class HeadsUpDisplayLayer; 36 class HeadsUpDisplayLayer;
35 class Layer; 37 class Layer;
36 class LayerTreeHost; 38 class LayerTreeHost;
37 class LayerTreeImpl; 39 class LayerTreeImpl;
38 struct PendingPageScaleAnimation; 40 struct PendingPageScaleAnimation;
39 41
40 class CC_EXPORT LayerTree { 42 class CC_EXPORT LayerTree : public MutatorHostClient {
41 public: 43 public:
42 using LayerSet = std::unordered_set<Layer*>; 44 using LayerSet = std::unordered_set<Layer*>;
43 using LayerIdMap = std::unordered_map<int, Layer*>; 45 using LayerIdMap = std::unordered_map<int, Layer*>;
44 46
45 LayerTree(std::unique_ptr<AnimationHost> animation_host, 47 LayerTree(std::unique_ptr<AnimationHost> animation_host,
46 LayerTreeHost* layer_tree_host); 48 LayerTreeHost* layer_tree_host);
47 virtual ~LayerTree(); 49 virtual ~LayerTree();
48 50
49 void SetRootLayer(scoped_refptr<Layer> root_layer); 51 void SetRootLayer(scoped_refptr<Layer> root_layer);
50 Layer* root_layer() { return inputs_.root_layer.get(); } 52 Layer* root_layer() { return inputs_.root_layer.get(); }
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after
104 bool use_anchor, 106 bool use_anchor,
105 float scale, 107 float scale,
106 base::TimeDelta duration); 108 base::TimeDelta duration);
107 bool HasPendingPageScaleAnimation() const; 109 bool HasPendingPageScaleAnimation() const;
108 110
109 void SetDeviceScaleFactor(float device_scale_factor); 111 void SetDeviceScaleFactor(float device_scale_factor);
110 float device_scale_factor() const { return inputs_.device_scale_factor; } 112 float device_scale_factor() const { return inputs_.device_scale_factor; }
111 113
112 void SetPaintedDeviceScaleFactor(float painted_device_scale_factor); 114 void SetPaintedDeviceScaleFactor(float painted_device_scale_factor);
113 115
114 AnimationHost* animation_host() const { return animation_host_.get(); }
115
116 gfx::Vector2dF elastic_overscroll() const { return elastic_overscroll_; } 116 gfx::Vector2dF elastic_overscroll() const { return elastic_overscroll_; }
117 117
118 // Used externally by blink for setting the PropertyTrees when 118 // Used externally by blink for setting the PropertyTrees when
119 // |settings_.use_layer_lists| is true. This is a SPV2 setting. 119 // |settings_.use_layer_lists| is true. This is a SPV2 setting.
120 PropertyTrees* property_trees() { return &property_trees_; } 120 PropertyTrees* property_trees() { return &property_trees_; }
121 121
122 bool in_paint_layer_contents() const { return in_paint_layer_contents_; }
123
122 // Methods which should only be used internally in cc ------------------ 124 // Methods which should only be used internally in cc ------------------
123 void RegisterLayer(Layer* layer); 125 void RegisterLayer(Layer* layer);
124 void UnregisterLayer(Layer* layer); 126 void UnregisterLayer(Layer* layer);
125 Layer* LayerById(int id) const; 127 Layer* LayerById(int id) const;
126 bool UpdateLayers(const LayerList& update_layer_list, 128 bool UpdateLayers(const LayerList& update_layer_list,
127 bool* content_is_suitable_for_gpu); 129 bool* content_is_suitable_for_gpu);
128 130
129 void AddLayerShouldPushProperties(Layer* layer); 131 void AddLayerShouldPushProperties(Layer* layer);
130 void RemoveLayerShouldPushProperties(Layer* layer); 132 void RemoveLayerShouldPushProperties(Layer* layer);
131 std::unordered_set<Layer*>& LayersThatShouldPushProperties(); 133 std::unordered_set<Layer*>& LayersThatShouldPushProperties();
(...skipping 15 matching lines...) Expand all
147 bool needs_full_tree_sync() const { return needs_full_tree_sync_; } 149 bool needs_full_tree_sync() const { return needs_full_tree_sync_; }
148 150
149 void SetNeedsCommit(); 151 void SetNeedsCommit();
150 void SetPropertyTreesNeedRebuild(); 152 void SetPropertyTreesNeedRebuild();
151 153
152 void PushPropertiesTo(LayerTreeImpl* tree_impl); 154 void PushPropertiesTo(LayerTreeImpl* tree_impl);
153 155
154 void ToProtobuf(proto::LayerTree* proto); 156 void ToProtobuf(proto::LayerTree* proto);
155 void FromProtobuf(const proto::LayerTree& proto); 157 void FromProtobuf(const proto::LayerTree& proto);
156 158
157 bool in_paint_layer_contents() const { return in_paint_layer_contents_; } 159 AnimationHost* animation_host() const { return animation_host_.get(); }
160
161 Layer* LayerByElementId(ElementId element_id) const;
162 void RegisterElement(ElementId element_id,
163 ElementListType list_type,
164 Layer* layer);
165 void UnregisterElement(ElementId element_id,
166 ElementListType list_type,
167 Layer* layer);
168 void SetElementIdsForTesting();
169
170 // Layer iterators.
171 LayerListIterator<Layer> begin() const;
172 LayerListIterator<Layer> end() const;
173 LayerListReverseIterator<Layer> rbegin();
174 LayerListReverseIterator<Layer> rend();
175
176 void SetNeedsDisplayOnAllLayers();
158 // --------------------------------------------------------------------- 177 // ---------------------------------------------------------------------
159 178
160 private: 179 private:
161 friend class LayerTreeHostSerializationTest; 180 friend class LayerTreeHostSerializationTest;
162 181
182 // MutatorHostClient implementation.
183 bool IsElementInList(ElementId element_id,
184 ElementListType list_type) const override;
185 void SetMutatorsNeedCommit() override;
186 void SetMutatorsNeedRebuildPropertyTrees() override;
187 void SetElementFilterMutated(ElementId element_id,
188 ElementListType list_type,
189 const FilterOperations& filters) override;
190 void SetElementOpacityMutated(ElementId element_id,
191 ElementListType list_type,
192 float opacity) override;
193 void SetElementTransformMutated(ElementId element_id,
194 ElementListType list_type,
195 const gfx::Transform& transform) override;
196 void SetElementScrollOffsetMutated(
197 ElementId element_id,
198 ElementListType list_type,
199 const gfx::ScrollOffset& scroll_offset) override;
200 void ElementTransformIsAnimatingChanged(ElementId element_id,
201 ElementListType list_type,
202 AnimationChangeType change_type,
203 bool is_animating) override;
204 void ElementOpacityIsAnimatingChanged(ElementId element_id,
205 ElementListType list_type,
206 AnimationChangeType change_type,
207 bool is_animating) override;
208 void ElementFilterIsAnimatingChanged(ElementId element_id,
209 ElementListType list_type,
210 AnimationChangeType change_type,
211 bool is_animating) override;
212 void ScrollOffsetAnimationFinished() override {}
213 gfx::ScrollOffset GetScrollOffsetForAnimation(
214 ElementId element_id) const override;
215
163 // Encapsulates the data, callbacks, interfaces received from the embedder. 216 // Encapsulates the data, callbacks, interfaces received from the embedder.
164 struct Inputs { 217 struct Inputs {
165 Inputs(); 218 Inputs();
166 ~Inputs(); 219 ~Inputs();
167 220
168 scoped_refptr<Layer> root_layer; 221 scoped_refptr<Layer> root_layer;
169 222
170 scoped_refptr<Layer> overscroll_elasticity_layer; 223 scoped_refptr<Layer> overscroll_elasticity_layer;
171 scoped_refptr<Layer> page_scale_layer; 224 scoped_refptr<Layer> page_scale_layer;
172 scoped_refptr<Layer> inner_viewport_scroll_layer; 225 scoped_refptr<Layer> inner_viewport_scroll_layer;
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
206 gfx::Vector2dF elastic_overscroll_; 259 gfx::Vector2dF elastic_overscroll_;
207 260
208 scoped_refptr<HeadsUpDisplayLayer> hud_layer_; 261 scoped_refptr<HeadsUpDisplayLayer> hud_layer_;
209 262
210 // Set of layers that need to push properties. 263 // Set of layers that need to push properties.
211 LayerSet layers_that_should_push_properties_; 264 LayerSet layers_that_should_push_properties_;
212 265
213 // Layer id to Layer map. 266 // Layer id to Layer map.
214 LayerIdMap layer_id_map_; 267 LayerIdMap layer_id_map_;
215 268
269 using ElementLayersMap = std::unordered_map<ElementId, Layer*, ElementIdHash>;
270 ElementLayersMap element_layers_map_;
271
216 bool in_paint_layer_contents_; 272 bool in_paint_layer_contents_;
217 273
218 std::unique_ptr<AnimationHost> animation_host_; 274 std::unique_ptr<AnimationHost> animation_host_;
219 LayerTreeHost* layer_tree_host_; 275 LayerTreeHost* layer_tree_host_;
220 276
221 DISALLOW_COPY_AND_ASSIGN(LayerTree); 277 DISALLOW_COPY_AND_ASSIGN(LayerTree);
222 }; 278 };
223 279
224 } // namespace cc 280 } // namespace cc
225 281
226 #endif // CC_TREES_LAYER_TREE_H_ 282 #endif // CC_TREES_LAYER_TREE_H_
OLDNEW
« no previous file with comments | « cc/trees/draw_property_utils.cc ('k') | cc/trees/layer_tree.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698