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

Unified 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: 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 side-by-side diff with in-line comments
Download patch
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);
};

Powered by Google App Engine
This is Rietveld 408576698