// Copyright 2019 The Chromium Authors // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef CC_LAYERS_MIRROR_LAYER_H_ #define CC_LAYERS_MIRROR_LAYER_H_ #include #include "base/memory/scoped_refptr.h" #include "cc/cc_export.h" #include "cc/layers/layer.h" namespace cc { // A layer that can mirror contents of another Layer. class CC_EXPORT MirrorLayer : public Layer { public: static scoped_refptr Create(scoped_refptr mirrored_layer); MirrorLayer(const MirrorLayer&) = delete; MirrorLayer& operator=(const MirrorLayer&) = delete; Layer* mirrored_layer() const { return mirrored_layer_.get(); } // Layer overrides. std::unique_ptr CreateLayerImpl( LayerTreeImpl* tree_impl) const override; void PushPropertiesTo(LayerImpl* layer, const CommitState& commit_state, const ThreadUnsafeCommitState& unsafe_state) override; void SetLayerTreeHost(LayerTreeHost* host) override; protected: explicit MirrorLayer(scoped_refptr mirrored_layer); private: ~MirrorLayer() override; // A reference to a layer that is mirrored by this layer. |mirrored_layer_| // cannot be an ancestor of |this|. const scoped_refptr mirrored_layer_; }; } // namespace cc #endif // CC_LAYERS_MIRROR_LAYER_H_