// Copyright 2014 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef UI_COMPOSITOR_LAYER_TREE_OWNER_H_ #define UI_COMPOSITOR_LAYER_TREE_OWNER_H_ #include #include "base/memory/raw_ptr.h" #include "ui/compositor/compositor_export.h" namespace ui { class Layer; // Scoping object that owns a Layer and all its descendants. class COMPOSITOR_EXPORT LayerTreeOwner { public: explicit LayerTreeOwner(std::unique_ptr root); LayerTreeOwner(const LayerTreeOwner&) = delete; LayerTreeOwner& operator=(const LayerTreeOwner&) = delete; ~LayerTreeOwner(); [[nodiscard]] Layer* release() { Layer* root = root_; root_ = nullptr; return root; } Layer* root() { return root_; } const Layer* root() const { return root_; } private: raw_ptr root_; }; } // namespace #endif // UI_COMPOSITOR_LAYER_TREE_OWNER_H_