| 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 "components/view_manager/connection_manager.h" | 5 #include "components/view_manager/connection_manager.h" |
| 6 | 6 |
| 7 #include "base/logging.h" | 7 #include "base/logging.h" |
| 8 #include "base/stl_util.h" | 8 #include "base/stl_util.h" |
| 9 #include "components/view_manager/client_connection.h" | 9 #include "components/view_manager/client_connection.h" |
| 10 #include "components/view_manager/connection_manager_delegate.h" | 10 #include "components/view_manager/connection_manager_delegate.h" |
| (...skipping 158 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 169 // TODO(sky): I may want to advance focus differently if focus is in | 169 // TODO(sky): I may want to advance focus differently if focus is in |
| 170 // |connection|. | 170 // |connection|. |
| 171 | 171 |
| 172 // Notify remaining connections so that they can cleanup. | 172 // Notify remaining connections so that they can cleanup. |
| 173 for (auto& pair : connection_map_) { | 173 for (auto& pair : connection_map_) { |
| 174 pair.second->service()->OnWillDestroyViewManagerServiceImpl( | 174 pair.second->service()->OnWillDestroyViewManagerServiceImpl( |
| 175 connection->service()); | 175 connection->service()); |
| 176 } | 176 } |
| 177 } | 177 } |
| 178 | 178 |
| 179 void ConnectionManager::EmbedAtView( | 179 void ConnectionManager::EmbedAtView(mojo::ConnectionSpecificId creator_id, |
| 180 ConnectionSpecificId creator_id, | 180 const ViewId& view_id, |
| 181 mojo::URLRequestPtr request, | 181 mojo::URLRequestPtr request) { |
| 182 const ViewId& view_id, | |
| 183 mojo::InterfaceRequest<mojo::ServiceProvider> services, | |
| 184 mojo::ServiceProviderPtr exposed_services) { | |
| 185 std::string creator_url; | |
| 186 ConnectionMap::const_iterator it = connection_map_.find(creator_id); | |
| 187 if (it != connection_map_.end()) | |
| 188 creator_url = it->second->service()->url(); | |
| 189 | |
| 190 mojo::ViewManagerServicePtr service_ptr; | 182 mojo::ViewManagerServicePtr service_ptr; |
| 191 ClientConnection* client_connection = | 183 ClientConnection* client_connection = |
| 192 delegate_->CreateClientConnectionForEmbedAtView( | 184 delegate_->CreateClientConnectionForEmbedAtView( |
| 193 this, GetProxy(&service_ptr), creator_id, creator_url, request.Pass(), | 185 this, GetProxy(&service_ptr), creator_id, request.Pass(), view_id); |
| 194 view_id); | |
| 195 AddConnection(client_connection); | 186 AddConnection(client_connection); |
| 196 client_connection->service()->Init(client_connection->client(), | 187 client_connection->service()->Init(client_connection->client(), |
| 197 service_ptr.Pass(), services.Pass(), | 188 service_ptr.Pass()); |
| 198 exposed_services.Pass()); | |
| 199 OnConnectionMessagedClient(client_connection->service()->id()); | 189 OnConnectionMessagedClient(client_connection->service()->id()); |
| 200 } | 190 } |
| 201 | 191 |
| 202 void ConnectionManager::EmbedAtView(mojo::ConnectionSpecificId creator_id, | 192 void ConnectionManager::EmbedAtView(mojo::ConnectionSpecificId creator_id, |
| 203 const ViewId& view_id, | 193 const ViewId& view_id, |
| 204 mojo::ViewManagerClientPtr client) { | 194 mojo::ViewManagerClientPtr client) { |
| 205 std::string creator_url; | |
| 206 ConnectionMap::const_iterator it = connection_map_.find(creator_id); | |
| 207 if (it != connection_map_.end()) | |
| 208 creator_url = it->second->service()->url(); | |
| 209 | |
| 210 mojo::ViewManagerServicePtr service_ptr; | 195 mojo::ViewManagerServicePtr service_ptr; |
| 211 ClientConnection* client_connection = | 196 ClientConnection* client_connection = |
| 212 delegate_->CreateClientConnectionForEmbedAtView( | 197 delegate_->CreateClientConnectionForEmbedAtView( |
| 213 this, GetProxy(&service_ptr), creator_id, creator_url, view_id, | 198 this, GetProxy(&service_ptr), creator_id, view_id, client.Pass()); |
| 214 client.Pass()); | |
| 215 AddConnection(client_connection); | 199 AddConnection(client_connection); |
| 216 client_connection->service()->Init(client_connection->client(), | 200 client_connection->service()->Init(client_connection->client(), |
| 217 service_ptr.Pass(), nullptr, nullptr); | 201 service_ptr.Pass()); |
| 218 OnConnectionMessagedClient(client_connection->service()->id()); | 202 OnConnectionMessagedClient(client_connection->service()->id()); |
| 219 } | 203 } |
| 220 | 204 |
| 221 ViewManagerServiceImpl* ConnectionManager::GetConnection( | 205 ViewManagerServiceImpl* ConnectionManager::GetConnection( |
| 222 ConnectionSpecificId connection_id) { | 206 ConnectionSpecificId connection_id) { |
| 223 ConnectionMap::iterator i = connection_map_.find(connection_id); | 207 ConnectionMap::iterator i = connection_map_.find(connection_id); |
| 224 return i == connection_map_.end() ? nullptr : i->second->service(); | 208 return i == connection_map_.end() ? nullptr : i->second->service(); |
| 225 } | 209 } |
| 226 | 210 |
| 227 ServerView* ConnectionManager::GetView(const ViewId& id) { | 211 ServerView* ConnectionManager::GetView(const ViewId& id) { |
| (...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 277 } | 261 } |
| 278 return nullptr; | 262 return nullptr; |
| 279 } | 263 } |
| 280 | 264 |
| 281 void ConnectionManager::SetWindowManagerClientConnection( | 265 void ConnectionManager::SetWindowManagerClientConnection( |
| 282 scoped_ptr<ClientConnection> connection) { | 266 scoped_ptr<ClientConnection> connection) { |
| 283 CHECK(!window_manager_client_connection_); | 267 CHECK(!window_manager_client_connection_); |
| 284 window_manager_client_connection_ = connection.release(); | 268 window_manager_client_connection_ = connection.release(); |
| 285 AddConnection(window_manager_client_connection_); | 269 AddConnection(window_manager_client_connection_); |
| 286 window_manager_client_connection_->service()->Init( | 270 window_manager_client_connection_->service()->Init( |
| 287 window_manager_client_connection_->client(), nullptr, nullptr, nullptr); | 271 window_manager_client_connection_->client(), nullptr); |
| 288 } | 272 } |
| 289 | 273 |
| 290 mojo::ViewManagerClient* | 274 mojo::ViewManagerClient* |
| 291 ConnectionManager::GetWindowManagerViewManagerClient() { | 275 ConnectionManager::GetWindowManagerViewManagerClient() { |
| 292 CHECK(window_manager_client_connection_); | 276 CHECK(window_manager_client_connection_); |
| 293 return window_manager_client_connection_->client(); | 277 return window_manager_client_connection_->client(); |
| 294 } | 278 } |
| 295 | 279 |
| 296 bool ConnectionManager::CloneAndAnimate(const ViewId& view_id) { | 280 bool ConnectionManager::CloneAndAnimate(const ViewId& view_id) { |
| 297 ServerView* view = GetView(view_id); | 281 ServerView* view = GetView(view_id); |
| (...skipping 319 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 617 if (wm_connection != owning_connection_old && | 601 if (wm_connection != owning_connection_old && |
| 618 wm_connection != embedded_connection_old && | 602 wm_connection != embedded_connection_old && |
| 619 wm_connection != owning_connection_new && | 603 wm_connection != owning_connection_new && |
| 620 wm_connection != embedded_connection_new) { | 604 wm_connection != embedded_connection_new) { |
| 621 wm_connection->ProcessFocusChanged(old_focused_view, new_focused_view); | 605 wm_connection->ProcessFocusChanged(old_focused_view, new_focused_view); |
| 622 } | 606 } |
| 623 } | 607 } |
| 624 } | 608 } |
| 625 | 609 |
| 626 } // namespace view_manager | 610 } // namespace view_manager |
| OLD | NEW |