Index: services/ui/view_manager/view_tree_state.h |
diff --git a/services/ui/view_manager/view_tree_state.h b/services/ui/view_manager/view_tree_state.h |
index a6ea8457a7648de71b3387433a00206a28ed9525..d1cfc98a64ccdc712800995554dbb6812fbd9e8a 100644 |
--- a/services/ui/view_manager/view_tree_state.h |
+++ b/services/ui/view_manager/view_tree_state.h |
@@ -10,24 +10,29 @@ |
#include <string> |
#include <unordered_map> |
-#include "base/callback.h" |
#include "base/macros.h" |
#include "base/memory/weak_ptr.h" |
-#include "mojo/common/binding_set.h" |
#include "mojo/public/cpp/bindings/binding.h" |
#include "mojo/services/ui/views/cpp/formatting.h" |
#include "mojo/services/ui/views/interfaces/view_trees.mojom.h" |
-#include "services/ui/view_manager/view_state.h" |
namespace view_manager { |
+class ViewRegistry; |
+class ViewState; |
+class ViewStub; |
+class ViewTreeHostImpl; |
+ |
// Describes the state of a particular view tree. |
// This object is owned by the ViewRegistry that created it. |
class ViewTreeState { |
public: |
- explicit ViewTreeState(mojo::ui::ViewTreePtr view_tree, |
- mojo::ui::ViewTreeTokenPtr view_tree_token, |
- const std::string& label); |
+ ViewTreeState( |
+ ViewRegistry* registry, |
+ mojo::ui::ViewTreePtr view_tree, |
+ mojo::ui::ViewTreeTokenPtr view_tree_token, |
+ mojo::InterfaceRequest<mojo::ui::ViewTreeHost> view_tree_host_request, |
+ const std::string& label); |
~ViewTreeState(); |
base::WeakPtr<ViewTreeState> GetWeakPtr() { |
@@ -35,7 +40,7 @@ class ViewTreeState { |
} |
// Gets the view tree interface, never null. |
- // Caller does not obtain ownership of the view. |
+ // Caller does not obtain ownership of the view tree. |
mojo::ui::ViewTree* view_tree() const { return view_tree_.get(); } |
// Gets the token used to refer to this view tree globally. |
@@ -44,30 +49,14 @@ class ViewTreeState { |
return view_tree_token_.get(); |
} |
- // Sets the associated host implementation and takes ownership of it. |
- void set_view_tree_host(mojo::ui::ViewTreeHost* host) { |
- view_tree_host_.reset(host); |
- } |
- |
- // Sets the connection error handler for the view. |
- void set_view_tree_connection_error_handler(const base::Closure& handler) { |
- view_tree_.set_connection_error_handler(handler); |
- } |
- |
- // Gets the root of the view tree, or null if it is unavailable. |
- ViewState* root() const { return root_; } |
- |
- // Sets the root of the view tree. Must not be null. |
- // The view specified as the new root must not have any parents. |
- void SetRoot(ViewState* root, uint32_t key); |
+ // Gets the root of the view tree, or null if there is no root. |
+ ViewStub* root() const { return root_.get(); } |
- // Resets the root view to null. |
- void ResetRoot(); |
+ // Links the root of the view tree. |
+ void LinkRoot(uint32_t key, std::unique_ptr<ViewStub> root); |
- // True if the client previously set but has not yet explicitly unset |
- // the root, independent of whether it is currently available. |
- bool explicit_root() const { return explicit_root_; } |
- void set_explicit_root(bool value) { explicit_root_ = value; } |
+ // Unlinks the root of the view tree and returns it. |
+ std::unique_ptr<ViewStub> UnlinkRoot(); |
// True if there is a pending layout request. |
bool layout_request_pending() const { return layout_request_pending_; } |
@@ -79,18 +68,21 @@ class ViewTreeState { |
bool layout_request_issued() const { return layout_request_issued_; } |
void set_layout_request_issued(bool value) { layout_request_issued_ = value; } |
- const std::string& label() { return label_; } |
- const std::string& FormattedLabel(); |
+ const std::string& label() const { return label_; } |
+ const std::string& FormattedLabel() const; |
private: |
mojo::ui::ViewTreePtr view_tree_; |
mojo::ui::ViewTreeTokenPtr view_tree_token_; |
+ |
const std::string label_; |
- std::string formatted_label_cache_; |
+ mutable std::string formatted_label_cache_; |
+ |
+ std::unique_ptr<ViewTreeHostImpl> impl_; |
+ mojo::Binding<mojo::ui::ViewTreeHost> host_binding_; |
std::unique_ptr<mojo::ui::ViewTreeHost> view_tree_host_; |
- ViewState* root_ = nullptr; |
- bool explicit_root_ = false; |
+ std::unique_ptr<ViewStub> root_; |
bool layout_request_pending_ = false; |
bool layout_request_issued_ = false; |