OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #ifndef MOJO_SERVICES_VIEW_MANAGER_ROOT_NODE_MANAGER_H_ | 5 #ifndef MOJO_SERVICES_VIEW_MANAGER_ROOT_NODE_MANAGER_H_ |
6 #define MOJO_SERVICES_VIEW_MANAGER_ROOT_NODE_MANAGER_H_ | 6 #define MOJO_SERVICES_VIEW_MANAGER_ROOT_NODE_MANAGER_H_ |
7 | 7 |
8 #include <map> | 8 #include <map> |
9 | 9 |
10 #include "base/basictypes.h" | 10 #include "base/basictypes.h" |
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
75 View* GetView(const ViewId& id); | 75 View* GetView(const ViewId& id); |
76 | 76 |
77 Node* root() { return &root_; } | 77 Node* root() { return &root_; } |
78 | 78 |
79 bool IsProcessingChange() const { return change_source_ != 0; } | 79 bool IsProcessingChange() const { return change_source_ != 0; } |
80 | 80 |
81 bool is_processing_delete_node() const { return is_processing_delete_node_; } | 81 bool is_processing_delete_node() const { return is_processing_delete_node_; } |
82 | 82 |
83 // These functions trivially delegate to all ViewManagerConnections, which in | 83 // These functions trivially delegate to all ViewManagerConnections, which in |
84 // term notify their clients. | 84 // term notify their clients. |
85 void ProcessNodeHierarchyChanged(const NodeId& node, | 85 void ProcessNodeHierarchyChanged(const Node* node, |
86 const NodeId& new_parent, | 86 const Node* new_parent, |
87 const NodeId& old_parent); | 87 const Node* old_parent); |
88 void ProcessNodeViewReplaced(const NodeId& node, | 88 void ProcessNodeViewReplaced(const Node* node, |
89 const ViewId& new_view_id, | 89 const View* new_view_id, |
90 const ViewId& old_view_id); | 90 const View* old_view_id); |
91 void ProcessNodeDeleted(const NodeId& node); | 91 void ProcessNodeDeleted(const NodeId& node); |
92 void ProcessViewDeleted(const ViewId& view); | 92 void ProcessViewDeleted(const ViewId& view); |
93 | 93 |
94 private: | 94 private: |
95 // Used to setup any static state needed by RootNodeManager. | 95 // Used to setup any static state needed by RootNodeManager. |
96 struct Context { | 96 struct Context { |
97 Context(); | 97 Context(); |
98 ~Context(); | 98 ~Context(); |
99 }; | 99 }; |
100 | 100 |
101 typedef std::map<TransportConnectionId, ViewManagerConnection*> ConnectionMap; | 101 typedef std::map<TransportConnectionId, ViewManagerConnection*> ConnectionMap; |
102 | 102 |
103 // Invoked when a particular connection is about to make a change. | 103 // Invoked when a particular connection is about to make a change. |
104 // Subsequently followed by FinishChange() once the change is done. | 104 // Subsequently followed by FinishChange() once the change is done. |
105 // | 105 // |
106 // Changes should never nest, meaning each PrepareForChange() must be | 106 // Changes should never nest, meaning each PrepareForChange() must be |
107 // balanced with a call to FinishChange() with no PrepareForChange() | 107 // balanced with a call to FinishChange() with no PrepareForChange() |
108 // in between. | 108 // in between. |
109 void PrepareForChange(ViewManagerConnection* connection, bool is_delete_node); | 109 void PrepareForChange(ViewManagerConnection* connection, bool is_delete_node); |
110 | 110 |
111 // Balances a call to PrepareForChange(). | 111 // Balances a call to PrepareForChange(). |
112 void FinishChange(ChangeType change_type); | 112 void FinishChange(ChangeType change_type); |
113 | 113 |
114 // Returns true if the specified connection originated the current change. | 114 // Returns true if the specified connection originated the current change. |
115 bool IsChangeSource(TransportConnectionId connection_id) const { | 115 bool IsChangeSource(TransportConnectionId connection_id) const { |
116 return connection_id == change_source_; | 116 return connection_id == change_source_; |
117 } | 117 } |
118 | 118 |
119 // Overriden from NodeDelegate: | 119 // Overriden from NodeDelegate: |
120 virtual void OnNodeHierarchyChanged(const NodeId& node, | 120 virtual void OnNodeHierarchyChanged(const Node* node, |
121 const NodeId& new_parent, | 121 const Node* new_parent, |
122 const NodeId& old_parent) OVERRIDE; | 122 const Node* old_parent) OVERRIDE; |
123 virtual void OnNodeViewReplaced(const NodeId& node, | 123 virtual void OnNodeViewReplaced(const Node* node, |
124 const ViewId& new_view_id, | 124 const View* new_view, |
125 const ViewId& old_view_id) OVERRIDE; | 125 const View* old_view) OVERRIDE; |
126 | 126 |
127 Context context_; | 127 Context context_; |
128 | 128 |
129 // ID to use for next ViewManagerConnection. | 129 // ID to use for next ViewManagerConnection. |
130 TransportConnectionId next_connection_id_; | 130 TransportConnectionId next_connection_id_; |
131 | 131 |
132 TransportChangeId next_server_change_id_; | 132 TransportChangeId next_server_change_id_; |
133 | 133 |
134 // Set of ViewManagerConnections. | 134 // Set of ViewManagerConnections. |
135 ConnectionMap connection_map_; | 135 ConnectionMap connection_map_; |
(...skipping 10 matching lines...) Expand all Loading... |
146 Node root_; | 146 Node root_; |
147 | 147 |
148 DISALLOW_COPY_AND_ASSIGN(RootNodeManager); | 148 DISALLOW_COPY_AND_ASSIGN(RootNodeManager); |
149 }; | 149 }; |
150 | 150 |
151 } // namespace service | 151 } // namespace service |
152 } // namespace view_manager | 152 } // namespace view_manager |
153 } // namespace mojo | 153 } // namespace mojo |
154 | 154 |
155 #endif // MOJO_SERVICES_VIEW_MANAGER_ROOT_NODE_MANAGER_H_ | 155 #endif // MOJO_SERVICES_VIEW_MANAGER_ROOT_NODE_MANAGER_H_ |
OLD | NEW |