Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(146)

Side by Side Diff: mojo/services/view_manager/root_node_manager.cc

Issue 308803002: Change type of interface created by mojo:view_manager (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: cleanup Created 6 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
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/public/interfaces/service_provider/service_provider.mojom.h" 8 #include "mojo/public/interfaces/service_provider/service_provider.mojom.h"
9 #include "mojo/services/view_manager/view_manager_connection.h" 9 #include "mojo/services/view_manager/view_manager_connection.h"
10 #include "ui/aura/env.h" 10 #include "ui/aura/env.h"
(...skipping 15 matching lines...) Expand all
26 RootNodeManager::ScopedChange::~ScopedChange() { 26 RootNodeManager::ScopedChange::~ScopedChange() {
27 root_->FinishChange(change_type_); 27 root_->FinishChange(change_type_);
28 } 28 }
29 29
30 RootNodeManager::Context::Context() { 30 RootNodeManager::Context::Context() {
31 // Pass in false as native viewport creates the PlatformEventSource. 31 // Pass in false as native viewport creates the PlatformEventSource.
32 aura::Env::CreateInstance(false); 32 aura::Env::CreateInstance(false);
33 } 33 }
34 34
35 RootNodeManager::Context::~Context() { 35 RootNodeManager::Context::~Context() {
36 aura::Env::DeleteInstance();
36 } 37 }
37 38
38 RootNodeManager::RootNodeManager(ServiceProvider* service_provider) 39 RootNodeManager::RootNodeManager(ServiceProvider* service_provider,
40 RootViewManagerDelegate* view_manager_delegate)
39 : service_provider_(service_provider), 41 : service_provider_(service_provider),
40 next_connection_id_(1), 42 next_connection_id_(1),
41 next_server_change_id_(1), 43 next_server_change_id_(1),
42 change_source_(kRootConnection), 44 change_source_(kRootConnection),
43 is_processing_delete_node_(false), 45 is_processing_delete_node_(false),
44 root_view_manager_(service_provider, this), 46 root_view_manager_(service_provider, this, view_manager_delegate),
45 root_(this, RootNodeId()) { 47 root_(this, RootNodeId()) {
46 } 48 }
47 49
48 RootNodeManager::~RootNodeManager() { 50 RootNodeManager::~RootNodeManager() {
49 while (!connections_created_by_connect_.empty()) 51 while (!connections_created_by_connect_.empty())
50 delete *(connections_created_by_connect_.begin()); 52 delete *(connections_created_by_connect_.begin());
51 // All the connections should have been destroyed. 53 // All the connections should have been destroyed.
52 DCHECK(connection_map_.empty()); 54 DCHECK(connection_map_.empty());
53 } 55 }
54 56
55 TransportConnectionId RootNodeManager::GetAndAdvanceNextConnectionId() { 57 TransportConnectionId RootNodeManager::GetAndAdvanceNextConnectionId() {
56 const TransportConnectionId id = next_connection_id_++; 58 const TransportConnectionId id = next_connection_id_++;
57 DCHECK_LT(id, next_connection_id_); 59 DCHECK_LT(id, next_connection_id_);
58 return id; 60 return id;
59 } 61 }
60 62
61 void RootNodeManager::AddConnection(ViewManagerConnection* connection) { 63 void RootNodeManager::AddConnection(ViewManagerConnection* connection) {
62 DCHECK_EQ(0u, connection_map_.count(connection->id())); 64 DCHECK_EQ(0u, connection_map_.count(connection->id()));
63 connection_map_[connection->id()] = connection; 65 connection_map_[connection->id()] = connection;
64 } 66 }
65 67
66 void RootNodeManager::RemoveConnection(ViewManagerConnection* connection) { 68 void RootNodeManager::RemoveConnection(ViewManagerConnection* connection) {
67 connection_map_.erase(connection->id()); 69 connection_map_.erase(connection->id());
68 connections_created_by_connect_.erase(connection); 70 connections_created_by_connect_.erase(connection);
69 } 71 }
70 72
73 void RootNodeManager::InitialConnect(const std::string& url) {
74 CHECK(connection_map_.empty());
75 Array<TransportNodeId> roots(0);
76 ConnectImpl(String::From(url), roots);
77 }
78
71 void RootNodeManager::Connect(const String& url, 79 void RootNodeManager::Connect(const String& url,
72 const Array<TransportNodeId>& node_ids) { 80 const Array<TransportNodeId>& node_ids) {
73 MessagePipe pipe; 81 CHECK_GT(node_ids.size(), 0u);
74 service_provider_->ConnectToService(url, pipe.handle1.Pass()); 82 ConnectImpl(url, node_ids)->set_delete_on_connection_error();
75 ViewManagerConnection* connection = new ViewManagerConnection(this);
76 connection->SetRoots(node_ids);
77 BindToPipe(connection, pipe.handle0.Pass());
78 connections_created_by_connect_.insert(connection);
79 } 83 }
80 84
81 ViewManagerConnection* RootNodeManager::GetConnection( 85 ViewManagerConnection* RootNodeManager::GetConnection(
82 TransportConnectionId connection_id) { 86 TransportConnectionId connection_id) {
83 ConnectionMap::iterator i = connection_map_.find(connection_id); 87 ConnectionMap::iterator i = connection_map_.find(connection_id);
84 return i == connection_map_.end() ? NULL : i->second; 88 return i == connection_map_.end() ? NULL : i->second;
85 } 89 }
86 90
87 Node* RootNodeManager::GetNode(const NodeId& id) { 91 Node* RootNodeManager::GetNode(const NodeId& id) {
88 if (id == root_.id()) 92 if (id == root_.id())
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after
152 156
153 void RootNodeManager::FinishChange(ChangeType change_type) { 157 void RootNodeManager::FinishChange(ChangeType change_type) {
154 // PrepareForChange/FinishChange should be balanced. 158 // PrepareForChange/FinishChange should be balanced.
155 DCHECK_NE(kRootConnection, change_source_); 159 DCHECK_NE(kRootConnection, change_source_);
156 change_source_ = 0; 160 change_source_ = 0;
157 is_processing_delete_node_ = false; 161 is_processing_delete_node_ = false;
158 if (change_type == CHANGE_TYPE_ADVANCE_SERVER_CHANGE_ID) 162 if (change_type == CHANGE_TYPE_ADVANCE_SERVER_CHANGE_ID)
159 next_server_change_id_++; 163 next_server_change_id_++;
160 } 164 }
161 165
166 ViewManagerConnection* RootNodeManager::ConnectImpl(
167 const String& url,
168 const Array<TransportNodeId>& node_ids) {
169 MessagePipe pipe;
170 service_provider_->ConnectToService(url, pipe.handle1.Pass());
171 ViewManagerConnection* connection = new ViewManagerConnection(this);
172 connection->SetRoots(node_ids);
173 BindToPipe(connection, pipe.handle0.Pass());
174 connections_created_by_connect_.insert(connection);
175 return connection;
176 }
177
162 void RootNodeManager::OnNodeHierarchyChanged(const Node* node, 178 void RootNodeManager::OnNodeHierarchyChanged(const Node* node,
163 const Node* new_parent, 179 const Node* new_parent,
164 const Node* old_parent) { 180 const Node* old_parent) {
165 if (!root_view_manager_.in_setup()) 181 if (!root_view_manager_.in_setup())
166 ProcessNodeHierarchyChanged(node, new_parent, old_parent); 182 ProcessNodeHierarchyChanged(node, new_parent, old_parent);
167 } 183 }
168 184
169 void RootNodeManager::OnNodeViewReplaced(const Node* node, 185 void RootNodeManager::OnNodeViewReplaced(const Node* node,
170 const View* new_view, 186 const View* new_view,
171 const View* old_view) { 187 const View* old_view) {
172 ProcessNodeViewReplaced(node, new_view, old_view); 188 ProcessNodeViewReplaced(node, new_view, old_view);
173 } 189 }
174 190
175 } // namespace service 191 } // namespace service
176 } // namespace view_manager 192 } // namespace view_manager
177 } // namespace mojo 193 } // namespace mojo
OLDNEW
« no previous file with comments | « mojo/services/view_manager/root_node_manager.h ('k') | mojo/services/view_manager/root_view_manager.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698