Index: cc/trees/layer_tree.h |
diff --git a/cc/trees/layer_tree.h b/cc/trees/layer_tree.h |
index 6f1f916372511a39b872829814bd86500b917738..b96bb511d1cad2125c9af699c1549cae26a4befb 100644 |
--- a/cc/trees/layer_tree.h |
+++ b/cc/trees/layer_tree.h |
@@ -6,15 +6,17 @@ |
#define CC_TREES_LAYER_TREE_H_ |
#include <memory> |
- |
#include <unordered_map> |
#include <unordered_set> |
+ |
#include "base/macros.h" |
#include "base/memory/ref_counted.h" |
#include "cc/base/cc_export.h" |
#include "cc/input/event_listener_properties.h" |
#include "cc/input/layer_selection_bound.h" |
#include "cc/layers/layer_collections.h" |
+#include "cc/layers/layer_list_iterator.h" |
+#include "cc/trees/mutator_host_client.h" |
#include "cc/trees/property_tree.h" |
#include "third_party/skia/include/core/SkColor.h" |
#include "ui/gfx/geometry/size.h" |
@@ -37,7 +39,7 @@ class LayerTreeHost; |
class LayerTreeImpl; |
struct PendingPageScaleAnimation; |
-class CC_EXPORT LayerTree { |
+class CC_EXPORT LayerTree : public MutatorHostClient { |
public: |
using LayerSet = std::unordered_set<Layer*>; |
using LayerIdMap = std::unordered_map<int, Layer*>; |
@@ -111,14 +113,14 @@ class CC_EXPORT LayerTree { |
void SetPaintedDeviceScaleFactor(float painted_device_scale_factor); |
- AnimationHost* animation_host() const { return animation_host_.get(); } |
- |
gfx::Vector2dF elastic_overscroll() const { return elastic_overscroll_; } |
// Used externally by blink for setting the PropertyTrees when |
// |settings_.use_layer_lists| is true. This is a SPV2 setting. |
PropertyTrees* property_trees() { return &property_trees_; } |
+ bool in_paint_layer_contents() const { return in_paint_layer_contents_; } |
+ |
// Methods which should only be used internally in cc ------------------ |
void RegisterLayer(Layer* layer); |
void UnregisterLayer(Layer* layer); |
@@ -154,12 +156,63 @@ class CC_EXPORT LayerTree { |
void ToProtobuf(proto::LayerTree* proto); |
void FromProtobuf(const proto::LayerTree& proto); |
- bool in_paint_layer_contents() const { return in_paint_layer_contents_; } |
+ AnimationHost* animation_host() const { return animation_host_.get(); } |
+ |
+ Layer* LayerByElementId(ElementId element_id) const; |
+ void RegisterElement(ElementId element_id, |
+ ElementListType list_type, |
+ Layer* layer); |
+ void UnregisterElement(ElementId element_id, |
+ ElementListType list_type, |
+ Layer* layer); |
+ void SetElementIdsForTesting(); |
+ |
+ // Layer iterators. |
+ LayerListIterator<Layer> begin() const; |
+ LayerListIterator<Layer> end() const; |
+ LayerListReverseIterator<Layer> rbegin(); |
+ LayerListReverseIterator<Layer> rend(); |
+ |
+ void SetNeedsDisplayOnAllLayers(); |
// --------------------------------------------------------------------- |
private: |
friend class LayerTreeHostSerializationTest; |
+ // 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; |
+ |
// Encapsulates the data, callbacks, interfaces received from the embedder. |
struct Inputs { |
Inputs(); |
@@ -213,6 +266,9 @@ 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_; |