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 #include "mojo/services/view_manager/root_node_manager.h" | 5 #include "mojo/services/view_manager/root_node_manager.h" |
6 | 6 |
7 #include "base/logging.h" | 7 #include "base/logging.h" |
8 #include "mojo/services/view_manager/view_manager_connection.h" | 8 #include "mojo/services/view_manager/view_manager_connection.h" |
| 9 #include "ui/aura/env.h" |
9 | 10 |
10 namespace mojo { | 11 namespace mojo { |
11 namespace services { | 12 namespace services { |
12 namespace view_manager { | 13 namespace view_manager { |
13 namespace { | 14 namespace { |
14 | 15 |
15 // Id for the root node. | 16 // Id for the root node. |
16 const TransportConnectionSpecificNodeId kRootId = 1; | 17 const TransportConnectionSpecificNodeId kRootId = 1; |
17 | 18 |
18 } // namespace | 19 } // namespace |
19 | 20 |
| 21 RootNodeManager::Context::Context() { |
| 22 // Pass in false as native viewport creates the PlatformEventSource. |
| 23 aura::Env::CreateInstance(false); |
| 24 } |
| 25 |
| 26 RootNodeManager::Context::~Context() { |
| 27 } |
| 28 |
20 RootNodeManager::ScopedChange::ScopedChange(ViewManagerConnection* connection, | 29 RootNodeManager::ScopedChange::ScopedChange(ViewManagerConnection* connection, |
21 RootNodeManager* root, | 30 RootNodeManager* root, |
22 TransportChangeId change_id) | 31 TransportChangeId change_id) |
23 : root_(root) { | 32 : root_(root) { |
24 root_->PrepareForChange(connection, change_id); | 33 root_->PrepareForChange(connection, change_id); |
25 } | 34 } |
26 | 35 |
27 RootNodeManager::ScopedChange::~ScopedChange() { | 36 RootNodeManager::ScopedChange::~ScopedChange() { |
28 root_->FinishChange(); | 37 root_->FinishChange(); |
29 } | 38 } |
30 | 39 |
31 RootNodeManager::RootNodeManager() | 40 RootNodeManager::RootNodeManager(Shell* shell) |
32 : next_connection_id_(1), | 41 : next_connection_id_(1), |
| 42 root_view_manager_(shell, this), |
33 root_(this, NodeId(0, kRootId)) { | 43 root_(this, NodeId(0, kRootId)) { |
34 } | 44 } |
35 | 45 |
36 RootNodeManager::~RootNodeManager() { | 46 RootNodeManager::~RootNodeManager() { |
| 47 // All the connections should have been destroyed. |
| 48 DCHECK(connection_map_.empty()); |
37 } | 49 } |
38 | 50 |
39 TransportConnectionId RootNodeManager::GetAndAdvanceNextConnectionId() { | 51 TransportConnectionId RootNodeManager::GetAndAdvanceNextConnectionId() { |
40 const TransportConnectionId id = next_connection_id_++; | 52 const TransportConnectionId id = next_connection_id_++; |
41 DCHECK_LT(id, next_connection_id_); | 53 DCHECK_LT(id, next_connection_id_); |
42 return id; | 54 return id; |
43 } | 55 } |
44 | 56 |
45 void RootNodeManager::AddConnection(ViewManagerConnection* connection) { | 57 void RootNodeManager::AddConnection(ViewManagerConnection* connection) { |
46 DCHECK_EQ(0u, connection_map_.count(connection->id())); | 58 DCHECK_EQ(0u, connection_map_.count(connection->id())); |
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
100 TransportChangeId change_id) { | 112 TransportChangeId change_id) { |
101 DCHECK(!change_.get()); // Should only ever have one change in flight. | 113 DCHECK(!change_.get()); // Should only ever have one change in flight. |
102 change_.reset(new Change(connection->id(), change_id)); | 114 change_.reset(new Change(connection->id(), change_id)); |
103 } | 115 } |
104 | 116 |
105 void RootNodeManager::FinishChange() { | 117 void RootNodeManager::FinishChange() { |
106 DCHECK(change_.get()); // PrepareForChange/FinishChange should be balanced. | 118 DCHECK(change_.get()); // PrepareForChange/FinishChange should be balanced. |
107 change_.reset(); | 119 change_.reset(); |
108 } | 120 } |
109 | 121 |
110 void RootNodeManager::OnCreated() { | |
111 } | |
112 | |
113 void RootNodeManager::OnDestroyed() { | |
114 } | |
115 | |
116 void RootNodeManager::OnBoundsChanged(const Rect& bounds) { | |
117 } | |
118 | |
119 void RootNodeManager::OnEvent(const Event& event, | |
120 const mojo::Callback<void()>& callback) { | |
121 callback.Run(); | |
122 } | |
123 | |
124 void RootNodeManager::OnNodeHierarchyChanged(const NodeId& node, | 122 void RootNodeManager::OnNodeHierarchyChanged(const NodeId& node, |
125 const NodeId& new_parent, | 123 const NodeId& new_parent, |
126 const NodeId& old_parent) { | 124 const NodeId& old_parent) { |
127 NotifyNodeHierarchyChanged(node, new_parent, old_parent); | 125 if (!root_view_manager_.in_setup()) |
| 126 NotifyNodeHierarchyChanged(node, new_parent, old_parent); |
128 } | 127 } |
129 | 128 |
130 void RootNodeManager::OnNodeViewReplaced(const NodeId& node, | 129 void RootNodeManager::OnNodeViewReplaced(const NodeId& node, |
131 const ViewId& new_view_id, | 130 const ViewId& new_view_id, |
132 const ViewId& old_view_id) { | 131 const ViewId& old_view_id) { |
133 NotifyNodeViewReplaced(node, new_view_id, old_view_id); | 132 NotifyNodeViewReplaced(node, new_view_id, old_view_id); |
134 } | 133 } |
135 | 134 |
136 } // namespace view_manager | 135 } // namespace view_manager |
137 } // namespace services | 136 } // namespace services |
138 } // namespace mojo | 137 } // namespace mojo |
OLD | NEW |