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

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: Fix call site in cc_perftest. 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..f9aae82c8456e133943ad703a9ddfe13ea1c6290 100644
--- a/cc/trees/layer_tree.h
+++ b/cc/trees/layer_tree.h
@@ -10,6 +10,8 @@
#include "base/macros.h"
#include "cc/base/cc_export.h"
+#include "cc/layers/layer_list_iterator.h"
+#include "cc/trees/mutator_host_client.h"
namespace cc {
@@ -20,13 +22,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 +51,50 @@ 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.
Khushal 2016/08/15 17:46:39 Can this be implemented privately instead?
xingliu 2016/08/15 21:29:12 The interface functions are mainly called from cc/
Khushal 2016/08/16 05:37:17 You can still make the implementation here private
xingliu 2016/08/16 16:45:15 Oh, this is cool, fixed.
+ 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;
+
+ // Layer iterators.
+ LayerListIterator<Layer> begin() const;
+ LayerListIterator<Layer> end() const;
+ LayerListReverseIterator<Layer> rbegin();
+ LayerListReverseIterator<Layer> rend();
+
private:
friend class LayerTreeHostSerializationTest;
@@ -56,9 +104,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