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/public/cpp/view_manager/lib/view_manager_synchronizer.h" | 5 #include "mojo/services/public/cpp/view_manager/lib/view_manager_synchronizer.h" |
6 | 6 |
7 #include "base/bind.h" | 7 #include "base/bind.h" |
8 #include "base/message_loop/message_loop.h" | 8 #include "base/message_loop/message_loop.h" |
9 #include "base/run_loop.h" | 9 #include "base/run_loop.h" |
10 #include "mojo/public/cpp/bindings/allocation_scope.h" | 10 #include "mojo/public/cpp/shell/service.h" |
11 #include "mojo/public/interfaces/shell/shell.mojom.h" | 11 #include "mojo/public/interfaces/shell/shell.mojom.h" |
12 #include "mojo/services/public/cpp/view_manager/lib/view_manager_private.h" | 12 #include "mojo/services/public/cpp/view_manager/lib/view_manager_private.h" |
13 #include "mojo/services/public/cpp/view_manager/lib/view_tree_node_private.h" | 13 #include "mojo/services/public/cpp/view_manager/lib/view_tree_node_private.h" |
14 #include "mojo/services/public/cpp/view_manager/util.h" | 14 #include "mojo/services/public/cpp/view_manager/util.h" |
15 | 15 |
16 namespace mojo { | 16 namespace mojo { |
17 namespace services { | 17 namespace services { |
18 namespace view_manager { | 18 namespace view_manager { |
19 | 19 |
20 TransportNodeId MakeTransportNodeId(uint16_t connection_id, | 20 TransportNodeId MakeTransportNodeId(uint16_t connection_id, |
(...skipping 159 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
180 }; | 180 }; |
181 | 181 |
182 ViewManagerSynchronizer::ViewManagerSynchronizer(ViewManager* view_manager) | 182 ViewManagerSynchronizer::ViewManagerSynchronizer(ViewManager* view_manager) |
183 : view_manager_(view_manager), | 183 : view_manager_(view_manager), |
184 connected_(false), | 184 connected_(false), |
185 connection_id_(0), | 185 connection_id_(0), |
186 next_id_(1), | 186 next_id_(1), |
187 next_change_id_(0), | 187 next_change_id_(0), |
188 sync_factory_(this), | 188 sync_factory_(this), |
189 init_loop_(NULL) { | 189 init_loop_(NULL) { |
190 InterfacePipe<services::view_manager::IViewManager, AnyInterface> | 190 ConnectTo(ViewManagerPrivate(view_manager_).shell(), "mojo:mojo_view_manager", |
191 view_manager_pipe; | 191 &service_); |
| 192 service_->SetClient(this); |
| 193 |
192 AllocationScope scope; | 194 AllocationScope scope; |
193 MessagePipeHandle client_handle = view_manager_pipe.handle_to_peer.get(); | |
194 ViewManagerPrivate(view_manager_).shell()->Connect( | |
195 "mojo:mojo_view_manager", view_manager_pipe.handle_to_peer.Pass()); | |
196 service_.reset(view_manager_pipe.handle_to_self.Pass(), this); | |
197 service_->GetNodeTree( | 195 service_->GetNodeTree( |
198 1, | 196 1, |
199 base::Bind(&ViewManagerSynchronizer::OnRootTreeReceived, | 197 base::Bind(&ViewManagerSynchronizer::OnRootTreeReceived, |
200 base::Unretained(this))); | 198 base::Unretained(this))); |
| 199 |
201 base::RunLoop loop; | 200 base::RunLoop loop; |
202 init_loop_ = &loop; | 201 init_loop_ = &loop; |
203 init_loop_->Run(); | 202 init_loop_->Run(); |
204 init_loop_ = NULL; | 203 init_loop_ = NULL; |
205 } | 204 } |
206 | 205 |
207 ViewManagerSynchronizer::~ViewManagerSynchronizer() { | 206 ViewManagerSynchronizer::~ViewManagerSynchronizer() { |
208 DoSync(); | 207 DoSync(); |
209 } | 208 } |
210 | 209 |
(...skipping 156 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
367 ViewManagerPrivate(view_manager_).AddNode(node->id(), node); | 366 ViewManagerPrivate(view_manager_).AddNode(node->id(), node); |
368 } | 367 } |
369 ViewManagerPrivate(view_manager_).set_root(root); | 368 ViewManagerPrivate(view_manager_).set_root(root); |
370 if (init_loop_) | 369 if (init_loop_) |
371 init_loop_->Quit(); | 370 init_loop_->Quit(); |
372 } | 371 } |
373 | 372 |
374 } // namespace view_manager | 373 } // namespace view_manager |
375 } // namespace services | 374 } // namespace services |
376 } // namespace mojo | 375 } // namespace mojo |
OLD | NEW |