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

Side by Side Diff: mojo/services/public/cpp/view_manager/lib/view_manager_client_impl.cc

Issue 424533002: Cleans up usage of ViewManagerServiceImpl::roots_ (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: delete Created 6 years, 4 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/public/cpp/view_manager/lib/view_manager_client_impl.h" 5 #include "mojo/services/public/cpp/view_manager/lib/view_manager_client_impl.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 "mojo/public/cpp/application/application_connection.h" 9 #include "mojo/public/cpp/application/application_connection.h"
10 #include "mojo/public/cpp/application/connect.h" 10 #include "mojo/public/cpp/application/connect.h"
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
52 private_view.set_node(node); 52 private_view.set_node(node);
53 // TODO(beng): this broadcasts notifications locally... do we want this? I 53 // TODO(beng): this broadcasts notifications locally... do we want this? I
54 // don't think so. same story for LocalAddChild above! 54 // don't think so. same story for LocalAddChild above!
55 private_node.LocalSetActiveView(view); 55 private_node.LocalSetActiveView(view);
56 client->AddView(view); 56 client->AddView(view);
57 } 57 }
58 return node; 58 return node;
59 } 59 }
60 60
61 Node* BuildNodeTree(ViewManagerClientImpl* client, 61 Node* BuildNodeTree(ViewManagerClientImpl* client,
62 const Array<NodeDataPtr>& nodes) { 62 const Array<NodeDataPtr>& nodes,
63 Node* initial_parent) {
63 std::vector<Node*> parents; 64 std::vector<Node*> parents;
64 Node* root = NULL; 65 Node* root = NULL;
65 Node* last_node = NULL; 66 Node* last_node = NULL;
67 if (initial_parent)
68 parents.push_back(initial_parent);
66 for (size_t i = 0; i < nodes.size(); ++i) { 69 for (size_t i = 0; i < nodes.size(); ++i) {
67 if (last_node && nodes[i]->parent_id == last_node->id()) { 70 if (last_node && nodes[i]->parent_id == last_node->id()) {
68 parents.push_back(last_node); 71 parents.push_back(last_node);
69 } else if (!parents.empty()) { 72 } else if (!parents.empty()) {
70 while (parents.back()->id() != nodes[i]->parent_id) 73 while (parents.back()->id() != nodes[i]->parent_id)
71 parents.pop_back(); 74 parents.pop_back();
72 } 75 }
73 Node* node = AddNodeToViewManager( 76 Node* node = AddNodeToViewManager(
74 client, 77 client,
75 !parents.empty() ? parents.back() : NULL, 78 !parents.empty() ? parents.back() : NULL,
(...skipping 241 matching lines...) Expand 10 before | Expand all | Expand 10 after
317 //////////////////////////////////////////////////////////////////////////////// 320 ////////////////////////////////////////////////////////////////////////////////
318 // ViewManagerClientImpl, ViewManagerClient implementation: 321 // ViewManagerClientImpl, ViewManagerClient implementation:
319 322
320 void ViewManagerClientImpl::OnViewManagerConnectionEstablished( 323 void ViewManagerClientImpl::OnViewManagerConnectionEstablished(
321 ConnectionSpecificId connection_id, 324 ConnectionSpecificId connection_id,
322 const String& creator_url, 325 const String& creator_url,
323 Array<NodeDataPtr> nodes) { 326 Array<NodeDataPtr> nodes) {
324 connected_ = true; 327 connected_ = true;
325 connection_id_ = connection_id; 328 connection_id_ = connection_id;
326 creator_url_ = TypeConverter<String, std::string>::ConvertFrom(creator_url); 329 creator_url_ = TypeConverter<String, std::string>::ConvertFrom(creator_url);
327 AddRoot(BuildNodeTree(this, nodes)); 330 AddRoot(BuildNodeTree(this, nodes, NULL));
328 } 331 }
329 332
330 void ViewManagerClientImpl::OnRootAdded(Array<NodeDataPtr> nodes) { 333 void ViewManagerClientImpl::OnRootAdded(Array<NodeDataPtr> nodes) {
331 AddRoot(BuildNodeTree(this, nodes)); 334 AddRoot(BuildNodeTree(this, nodes, NULL));
332 } 335 }
333 336
334 void ViewManagerClientImpl::OnNodeBoundsChanged(Id node_id, 337 void ViewManagerClientImpl::OnNodeBoundsChanged(Id node_id,
335 RectPtr old_bounds, 338 RectPtr old_bounds,
336 RectPtr new_bounds) { 339 RectPtr new_bounds) {
337 Node* node = GetNodeById(node_id); 340 Node* node = GetNodeById(node_id);
338 NodePrivate(node).LocalSetBounds(old_bounds.To<gfx::Rect>(), 341 NodePrivate(node).LocalSetBounds(old_bounds.To<gfx::Rect>(),
339 new_bounds.To<gfx::Rect>()); 342 new_bounds.To<gfx::Rect>());
340 } 343 }
341 344
342 void ViewManagerClientImpl::OnNodeHierarchyChanged( 345 void ViewManagerClientImpl::OnNodeHierarchyChanged(
343 Id node_id, 346 Id node_id,
344 Id new_parent_id, 347 Id new_parent_id,
345 Id old_parent_id, 348 Id old_parent_id,
346 mojo::Array<NodeDataPtr> nodes) { 349 mojo::Array<NodeDataPtr> nodes) {
347 BuildNodeTree(this, nodes); 350 Node* initial_parent = nodes.size() ?
351 GetNodeById(nodes[0]->parent_id) : NULL;
352
353 BuildNodeTree(this, nodes, initial_parent);
348 354
349 Node* new_parent = GetNodeById(new_parent_id); 355 Node* new_parent = GetNodeById(new_parent_id);
350 Node* old_parent = GetNodeById(old_parent_id); 356 Node* old_parent = GetNodeById(old_parent_id);
351 Node* node = GetNodeById(node_id); 357 Node* node = GetNodeById(node_id);
352 if (new_parent) 358 if (new_parent)
353 NodePrivate(new_parent).LocalAddChild(node); 359 NodePrivate(new_parent).LocalAddChild(node);
354 else 360 else
355 NodePrivate(old_parent).LocalRemoveChild(node); 361 NodePrivate(old_parent).LocalRemoveChild(node);
356 } 362 }
357 363
(...skipping 112 matching lines...) Expand 10 before | Expand all | Expand 10 after
470 base::Unretained(this)); 476 base::Unretained(this));
471 } 477 }
472 478
473 base::Callback<void(ErrorCode)> 479 base::Callback<void(ErrorCode)>
474 ViewManagerClientImpl::ActionCompletedCallbackWithErrorCode() { 480 ViewManagerClientImpl::ActionCompletedCallbackWithErrorCode() {
475 return base::Bind(&ViewManagerClientImpl::OnActionCompletedWithErrorCode, 481 return base::Bind(&ViewManagerClientImpl::OnActionCompletedWithErrorCode,
476 base::Unretained(this)); 482 base::Unretained(this));
477 } 483 }
478 484
479 } // namespace mojo 485 } // namespace mojo
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698