Index: cc/trees/layer_tree.h |
diff --git a/cc/trees/layer_tree.h b/cc/trees/layer_tree.h |
index bb7e3d2adbf9af2cae7c996edfa1617bc75cf454..10044dd03f1c6698ebd2d49b9956698fea4e8636 100644 |
--- a/cc/trees/layer_tree.h |
+++ b/cc/trees/layer_tree.h |
@@ -10,6 +10,7 @@ |
#include "base/macros.h" |
#include "cc/base/cc_export.h" |
+#include "cc/trees/mutator_host_client.h" |
namespace cc { |
@@ -20,13 +21,15 @@ class LayerUpdate; |
class AnimationHost; |
class Layer; |
+class LayerTreeHost; |
-class CC_EXPORT LayerTree { |
+class CC_EXPORT LayerTree : public MutatorHostClient { |
public: |
using LayerSet = std::unordered_set<Layer*>; |
using LayerIdMap = std::unordered_map<int, Layer*>; |
- explicit LayerTree(std::unique_ptr<AnimationHost> animation_host); |
+ LayerTree(std::unique_ptr<AnimationHost> animation_host, |
+ LayerTreeHost* layer_tree_host); |
~LayerTree(); |
void RegisterLayer(Layer* layer); |
@@ -47,6 +50,44 @@ class CC_EXPORT LayerTree { |
bool in_paint_layer_contents() const { return in_paint_layer_contents_; } |
+ Layer* LayerByElementId(ElementId element_id) const; |
+ void AddToElementMap(Layer* layer); |
+ void RemoveFromElementMap(Layer* layer); |
+ |
+ // MutatorHostClient implementation. |
+ bool IsElementInList(ElementId element_id, |
+ ElementListType list_type) const override; |
+ void SetMutatorsNeedCommit() override; |
+ void SetMutatorsNeedRebuildPropertyTrees() override; |
+ void SetElementFilterMutated(ElementId element_id, |
+ ElementListType list_type, |
+ const FilterOperations& filters) override; |
+ void SetElementOpacityMutated(ElementId element_id, |
+ ElementListType list_type, |
+ float opacity) override; |
+ void SetElementTransformMutated(ElementId element_id, |
+ ElementListType list_type, |
+ const gfx::Transform& transform) override; |
+ void SetElementScrollOffsetMutated( |
+ ElementId element_id, |
+ ElementListType list_type, |
+ const gfx::ScrollOffset& scroll_offset) override; |
+ void ElementTransformIsAnimatingChanged(ElementId element_id, |
+ ElementListType list_type, |
+ AnimationChangeType change_type, |
+ bool is_animating) override; |
+ void ElementOpacityIsAnimatingChanged(ElementId element_id, |
+ ElementListType list_type, |
+ AnimationChangeType change_type, |
+ bool is_animating) override; |
+ void ElementFilterIsAnimatingChanged(ElementId element_id, |
+ ElementListType list_type, |
+ AnimationChangeType change_type, |
+ bool is_animating) override; |
+ void ScrollOffsetAnimationFinished() override {} |
+ gfx::ScrollOffset GetScrollOffsetForAnimation( |
+ ElementId element_id) const override; |
+ |
private: |
friend class LayerTreeHostSerializationTest; |
@@ -56,9 +97,13 @@ class CC_EXPORT LayerTree { |
// Layer id to Layer map. |
LayerIdMap layer_id_map_; |
+ using ElementLayersMap = std::unordered_map<ElementId, Layer*, ElementIdHash>; |
+ ElementLayersMap element_layers_map_; |
+ |
bool in_paint_layer_contents_; |
std::unique_ptr<AnimationHost> animation_host_; |
+ LayerTreeHost* layer_tree_host_; |
DISALLOW_COPY_AND_ASSIGN(LayerTree); |
}; |