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

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

Issue 320193002: Consolidates view_manager typedefs (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: formatting 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/view_manager_connection.h" 5 #include "mojo/services/view_manager/view_manager_connection.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/stl_util.h" 8 #include "base/stl_util.h"
9 #include "mojo/services/public/cpp/geometry/geometry_type_converters.h" 9 #include "mojo/services/public/cpp/geometry/geometry_type_converters.h"
10 #include "mojo/services/public/cpp/input_events/input_events_type_converters.h" 10 #include "mojo/services/public/cpp/input_events/input_events_type_converters.h"
(...skipping 17 matching lines...) Expand all
28 nodes->push_back(node); 28 nodes->push_back(node);
29 29
30 std::vector<const Node*> children(node->GetChildren()); 30 std::vector<const Node*> children(node->GetChildren());
31 for (size_t i = 0 ; i < children.size(); ++i) 31 for (size_t i = 0 ; i < children.size(); ++i)
32 GetDescendants(children[i], nodes); 32 GetDescendants(children[i], nodes);
33 } 33 }
34 34
35 } // namespace 35 } // namespace
36 36
37 ViewManagerConnection::ViewManagerConnection(RootNodeManager* root_node_manager, 37 ViewManagerConnection::ViewManagerConnection(RootNodeManager* root_node_manager,
38 TransportConnectionId creator_id, 38 ConnectionSpecificId creator_id,
39 const std::string& url) 39 const std::string& url)
40 : root_node_manager_(root_node_manager), 40 : root_node_manager_(root_node_manager),
41 id_(root_node_manager_->GetAndAdvanceNextConnectionId()), 41 id_(root_node_manager_->GetAndAdvanceNextConnectionId()),
42 url_(url), 42 url_(url),
43 creator_id_(creator_id), 43 creator_id_(creator_id),
44 delete_on_connection_error_(false) { 44 delete_on_connection_error_(false) {
45 } 45 }
46 46
47 ViewManagerConnection::~ViewManagerConnection() { 47 ViewManagerConnection::~ViewManagerConnection() {
48 // Delete any views we own. 48 // Delete any views we own.
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
86 } 86 }
87 87
88 const View* ViewManagerConnection::GetView(const ViewId& id) const { 88 const View* ViewManagerConnection::GetView(const ViewId& id) const {
89 if (id_ == id.connection_id) { 89 if (id_ == id.connection_id) {
90 ViewMap::const_iterator i = view_map_.find(id.view_id); 90 ViewMap::const_iterator i = view_map_.find(id.view_id);
91 return i == view_map_.end() ? NULL : i->second; 91 return i == view_map_.end() ? NULL : i->second;
92 } 92 }
93 return root_node_manager_->GetView(id); 93 return root_node_manager_->GetView(id);
94 } 94 }
95 95
96 void ViewManagerConnection::SetRoots(const Array<TransportNodeId>& node_ids) { 96 void ViewManagerConnection::SetRoots(const Array<Id>& node_ids) {
97 DCHECK(roots_.empty()); 97 DCHECK(roots_.empty());
98 NodeIdSet roots; 98 NodeIdSet roots;
99 for (size_t i = 0; i < node_ids.size(); ++i) { 99 for (size_t i = 0; i < node_ids.size(); ++i) {
100 DCHECK(GetNode(NodeIdFromTransportId(node_ids[i]))); 100 DCHECK(GetNode(NodeIdFromTransportId(node_ids[i])));
101 roots.insert(node_ids[i]); 101 roots.insert(node_ids[i]);
102 } 102 }
103 roots_.swap(roots); 103 roots_.swap(roots);
104 } 104 }
105 105
106 void ViewManagerConnection::OnViewManagerConnectionDestroyed( 106 void ViewManagerConnection::OnViewManagerConnectionDestroyed(
107 TransportConnectionId id) { 107 ConnectionSpecificId id) {
108 if (creator_id_ == id) 108 if (creator_id_ == id)
109 creator_id_ = kRootConnection; 109 creator_id_ = kRootConnection;
110 } 110 }
111 111
112 void ViewManagerConnection::ProcessNodeBoundsChanged( 112 void ViewManagerConnection::ProcessNodeBoundsChanged(
113 const Node* node, 113 const Node* node,
114 const gfx::Rect& old_bounds, 114 const gfx::Rect& old_bounds,
115 const gfx::Rect& new_bounds, 115 const gfx::Rect& new_bounds,
116 bool originated_change) { 116 bool originated_change) {
117 if (originated_change) 117 if (originated_change)
118 return; 118 return;
119 TransportNodeId node_id = NodeIdToTransportId(node->id()); 119 Id node_id = NodeIdToTransportId(node->id());
120 if (known_nodes_.count(node_id) > 0) { 120 if (known_nodes_.count(node_id) > 0) {
121 client()->OnNodeBoundsChanged(node_id, 121 client()->OnNodeBoundsChanged(node_id,
122 Rect::From(old_bounds), 122 Rect::From(old_bounds),
123 Rect::From(new_bounds)); 123 Rect::From(new_bounds));
124 } 124 }
125 } 125 }
126 126
127 void ViewManagerConnection::ProcessNodeHierarchyChanged( 127 void ViewManagerConnection::ProcessNodeHierarchyChanged(
128 const Node* node, 128 const Node* node,
129 const Node* new_parent, 129 const Node* new_parent,
130 const Node* old_parent, 130 const Node* old_parent,
131 TransportChangeId server_change_id, 131 Id server_change_id,
132 bool originated_change) { 132 bool originated_change) {
133 if (known_nodes_.count(NodeIdToTransportId(node->id())) > 0) { 133 if (known_nodes_.count(NodeIdToTransportId(node->id())) > 0) {
134 if (originated_change) 134 if (originated_change)
135 return; 135 return;
136 if (node->id().connection_id != id_ && !IsNodeDescendantOfRoots(node)) { 136 if (node->id().connection_id != id_ && !IsNodeDescendantOfRoots(node)) {
137 // Node was a descendant of roots and is no longer, treat it as though the 137 // Node was a descendant of roots and is no longer, treat it as though the
138 // node was deleted. 138 // node was deleted.
139 RemoveFromKnown(node); 139 RemoveFromKnown(node);
140 client()->OnNodeDeleted(NodeIdToTransportId(node->id()), 140 client()->OnNodeDeleted(NodeIdToTransportId(node->id()),
141 server_change_id); 141 server_change_id);
(...skipping 26 matching lines...) Expand all
168 NodesToINodes(to_send)); 168 NodesToINodes(to_send));
169 } 169 }
170 170
171 void ViewManagerConnection::ProcessNodeViewReplaced( 171 void ViewManagerConnection::ProcessNodeViewReplaced(
172 const Node* node, 172 const Node* node,
173 const View* new_view, 173 const View* new_view,
174 const View* old_view, 174 const View* old_view,
175 bool originated_change) { 175 bool originated_change) {
176 if (originated_change || !known_nodes_.count(NodeIdToTransportId(node->id()))) 176 if (originated_change || !known_nodes_.count(NodeIdToTransportId(node->id())))
177 return; 177 return;
178 const TransportViewId new_view_id = new_view ? 178 const Id new_view_id = new_view ?
179 ViewIdToTransportId(new_view->id()) : 0; 179 ViewIdToTransportId(new_view->id()) : 0;
180 const TransportViewId old_view_id = old_view ? 180 const Id old_view_id = old_view ?
181 ViewIdToTransportId(old_view->id()) : 0; 181 ViewIdToTransportId(old_view->id()) : 0;
182 client()->OnNodeViewReplaced(NodeIdToTransportId(node->id()), 182 client()->OnNodeViewReplaced(NodeIdToTransportId(node->id()),
183 new_view_id, old_view_id); 183 new_view_id, old_view_id);
184 } 184 }
185 185
186 void ViewManagerConnection::ProcessNodeDeleted( 186 void ViewManagerConnection::ProcessNodeDeleted(const NodeId& node,
187 const NodeId& node, 187 Id server_change_id,
188 TransportChangeId server_change_id, 188 bool originated_change) {
189 bool originated_change) {
190 const bool in_known = known_nodes_.erase(NodeIdToTransportId(node)) > 0; 189 const bool in_known = known_nodes_.erase(NodeIdToTransportId(node)) > 0;
191 const bool in_roots = roots_.erase(NodeIdToTransportId(node)) > 0; 190 const bool in_roots = roots_.erase(NodeIdToTransportId(node)) > 0;
192 191
193 if (in_roots && roots_.empty()) 192 if (in_roots && roots_.empty())
194 roots_.insert(NodeIdToTransportId(InvalidNodeId())); 193 roots_.insert(NodeIdToTransportId(InvalidNodeId()));
195 194
196 if (originated_change) 195 if (originated_change)
197 return; 196 return;
198 197
199 if (in_known) { 198 if (in_known) {
(...skipping 146 matching lines...) Expand 10 before | Expand all | Expand 10 after
346 RootNodeManager::ScopedChange change( 345 RootNodeManager::ScopedChange change(
347 this, root_node_manager_, 346 this, root_node_manager_,
348 RootNodeManager::CHANGE_TYPE_DONT_ADVANCE_SERVER_CHANGE_ID, false); 347 RootNodeManager::CHANGE_TYPE_DONT_ADVANCE_SERVER_CHANGE_ID, false);
349 node->SetView(view); 348 node->SetView(view);
350 return true; 349 return true;
351 } 350 }
352 351
353 void ViewManagerConnection::GetUnknownNodesFrom( 352 void ViewManagerConnection::GetUnknownNodesFrom(
354 const Node* node, 353 const Node* node,
355 std::vector<const Node*>* nodes) { 354 std::vector<const Node*>* nodes) {
356 const TransportNodeId transport_id = NodeIdToTransportId(node->id()); 355 const Id transport_id = NodeIdToTransportId(node->id());
357 if (known_nodes_.count(transport_id) == 1) 356 if (known_nodes_.count(transport_id) == 1)
358 return; 357 return;
359 nodes->push_back(node); 358 nodes->push_back(node);
360 known_nodes_.insert(transport_id); 359 known_nodes_.insert(transport_id);
361 std::vector<const Node*> children(node->GetChildren()); 360 std::vector<const Node*> children(node->GetChildren());
362 for (size_t i = 0 ; i < children.size(); ++i) 361 for (size_t i = 0 ; i < children.size(); ++i)
363 GetUnknownNodesFrom(children[i], nodes); 362 GetUnknownNodesFrom(children[i], nodes);
364 } 363 }
365 364
366 void ViewManagerConnection::RemoveFromKnown(const Node* node) { 365 void ViewManagerConnection::RemoveFromKnown(const Node* node) {
367 if (node->id().connection_id == id_) 366 if (node->id().connection_id == id_)
368 return; 367 return;
369 known_nodes_.erase(NodeIdToTransportId(node->id())); 368 known_nodes_.erase(NodeIdToTransportId(node->id()));
370 std::vector<const Node*> children = node->GetChildren(); 369 std::vector<const Node*> children = node->GetChildren();
371 for (size_t i = 0; i < children.size(); ++i) 370 for (size_t i = 0; i < children.size(); ++i)
372 RemoveFromKnown(children[i]); 371 RemoveFromKnown(children[i]);
373 } 372 }
374 373
375 bool ViewManagerConnection::AddRoots( 374 bool ViewManagerConnection::AddRoots(
376 const std::vector<TransportNodeId>& node_ids) { 375 const std::vector<Id>& node_ids) {
377 std::vector<const Node*> to_send; 376 std::vector<const Node*> to_send;
378 bool did_add_root = false; 377 bool did_add_root = false;
379 for (size_t i = 0; i < node_ids.size(); ++i) { 378 for (size_t i = 0; i < node_ids.size(); ++i) {
380 CHECK_EQ(creator_id_, NodeIdFromTransportId(node_ids[i]).connection_id); 379 CHECK_EQ(creator_id_, NodeIdFromTransportId(node_ids[i]).connection_id);
381 if (roots_.count(node_ids[i]) > 0) 380 if (roots_.count(node_ids[i]) > 0)
382 continue; 381 continue;
383 382
384 did_add_root = true; 383 did_add_root = true;
385 roots_.insert(node_ids[i]); 384 roots_.insert(node_ids[i]);
386 if (known_nodes_.count(node_ids[i]) == 0) { 385 if (known_nodes_.count(node_ids[i]) == 0) {
387 Node* node = GetNode(NodeIdFromTransportId(node_ids[i])); 386 Node* node = GetNode(NodeIdFromTransportId(node_ids[i]));
388 DCHECK(node); 387 DCHECK(node);
389 GetUnknownNodesFrom(node, &to_send); 388 GetUnknownNodesFrom(node, &to_send);
390 } 389 }
391 } 390 }
392 391
393 if (!did_add_root) 392 if (!did_add_root)
394 return false; 393 return false;
395 394
396 client()->OnRootsAdded(NodesToINodes(to_send)); 395 client()->OnRootsAdded(NodesToINodes(to_send));
397 return true; 396 return true;
398 } 397 }
399 398
400 bool ViewManagerConnection::IsNodeDescendantOfRoots(const Node* node) const { 399 bool ViewManagerConnection::IsNodeDescendantOfRoots(const Node* node) const {
401 if (roots_.empty()) 400 if (roots_.empty())
402 return true; 401 return true;
403 if (!node) 402 if (!node)
404 return false; 403 return false;
405 const TransportNodeId invalid_node_id = 404 const Id invalid_node_id =
406 NodeIdToTransportId(InvalidNodeId()); 405 NodeIdToTransportId(InvalidNodeId());
407 for (NodeIdSet::const_iterator i = roots_.begin(); i != roots_.end(); ++i) { 406 for (NodeIdSet::const_iterator i = roots_.begin(); i != roots_.end(); ++i) {
408 if (*i == invalid_node_id) 407 if (*i == invalid_node_id)
409 continue; 408 continue;
410 const Node* root = GetNode(NodeIdFromTransportId(*i)); 409 const Node* root = GetNode(NodeIdFromTransportId(*i));
411 DCHECK(root); 410 DCHECK(root);
412 if (root->Contains(node)) 411 if (root->Contains(node))
413 return true; 412 return true;
414 } 413 }
415 return false; 414 return false;
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after
476 inode->node_id = NodeIdToTransportId(node->id()); 475 inode->node_id = NodeIdToTransportId(node->id());
477 inode->view_id = 476 inode->view_id =
478 ViewIdToTransportId(node->view() ? node->view()->id() : ViewId()); 477 ViewIdToTransportId(node->view() ? node->view()->id() : ViewId());
479 inode->bounds = Rect::From(node->bounds()); 478 inode->bounds = Rect::From(node->bounds());
480 array[i] = inode.Pass(); 479 array[i] = inode.Pass();
481 } 480 }
482 return array.Pass(); 481 return array.Pass();
483 } 482 }
484 483
485 void ViewManagerConnection::CreateNode( 484 void ViewManagerConnection::CreateNode(
486 TransportNodeId transport_node_id, 485 Id transport_node_id,
487 const Callback<void(bool)>& callback) { 486 const Callback<void(bool)>& callback) {
488 const NodeId node_id(NodeIdFromTransportId(transport_node_id)); 487 const NodeId node_id(NodeIdFromTransportId(transport_node_id));
489 if (node_id.connection_id != id_ || 488 if (node_id.connection_id != id_ ||
490 node_map_.find(node_id.node_id) != node_map_.end()) { 489 node_map_.find(node_id.node_id) != node_map_.end()) {
491 callback.Run(false); 490 callback.Run(false);
492 return; 491 return;
493 } 492 }
494 node_map_[node_id.node_id] = new Node(this, node_id); 493 node_map_[node_id.node_id] = new Node(this, node_id);
495 known_nodes_.insert(transport_node_id); 494 known_nodes_.insert(transport_node_id);
496 callback.Run(true); 495 callback.Run(true);
497 } 496 }
498 497
499 void ViewManagerConnection::DeleteNode( 498 void ViewManagerConnection::DeleteNode(
500 TransportNodeId transport_node_id, 499 Id transport_node_id,
501 const Callback<void(bool)>& callback) { 500 const Callback<void(bool)>& callback) {
502 const NodeId node_id(NodeIdFromTransportId(transport_node_id)); 501 const NodeId node_id(NodeIdFromTransportId(transport_node_id));
503 bool did_delete = CanDeleteNode(node_id); 502 bool did_delete = CanDeleteNode(node_id);
504 if (did_delete) { 503 if (did_delete) {
505 ViewManagerConnection* connection = root_node_manager_->GetConnection( 504 ViewManagerConnection* connection = root_node_manager_->GetConnection(
506 node_id.connection_id); 505 node_id.connection_id);
507 did_delete = connection && connection->DeleteNodeImpl(this, node_id); 506 did_delete = connection && connection->DeleteNodeImpl(this, node_id);
508 } 507 }
509 callback.Run(did_delete); 508 callback.Run(did_delete);
510 } 509 }
511 510
512 void ViewManagerConnection::AddNode( 511 void ViewManagerConnection::AddNode(
513 TransportNodeId parent_id, 512 Id parent_id,
514 TransportNodeId child_id, 513 Id child_id,
515 TransportChangeId server_change_id, 514 Id server_change_id,
516 const Callback<void(bool)>& callback) { 515 const Callback<void(bool)>& callback) {
517 bool success = false; 516 bool success = false;
518 if (server_change_id == root_node_manager_->next_server_change_id()) { 517 if (server_change_id == root_node_manager_->next_server_change_id()) {
519 Node* parent = GetNode(NodeIdFromTransportId(parent_id)); 518 Node* parent = GetNode(NodeIdFromTransportId(parent_id));
520 Node* child = GetNode(NodeIdFromTransportId(child_id)); 519 Node* child = GetNode(NodeIdFromTransportId(child_id));
521 if (CanAddNode(parent, child)) { 520 if (CanAddNode(parent, child)) {
522 success = true; 521 success = true;
523 RootNodeManager::ScopedChange change( 522 RootNodeManager::ScopedChange change(
524 this, root_node_manager_, 523 this, root_node_manager_,
525 RootNodeManager::CHANGE_TYPE_ADVANCE_SERVER_CHANGE_ID, false); 524 RootNodeManager::CHANGE_TYPE_ADVANCE_SERVER_CHANGE_ID, false);
526 parent->Add(child); 525 parent->Add(child);
527 } 526 }
528 } 527 }
529 callback.Run(success); 528 callback.Run(success);
530 } 529 }
531 530
532 void ViewManagerConnection::RemoveNodeFromParent( 531 void ViewManagerConnection::RemoveNodeFromParent(
533 TransportNodeId node_id, 532 Id node_id,
534 TransportChangeId server_change_id, 533 Id server_change_id,
535 const Callback<void(bool)>& callback) { 534 const Callback<void(bool)>& callback) {
536 bool success = false; 535 bool success = false;
537 if (server_change_id == root_node_manager_->next_server_change_id()) { 536 if (server_change_id == root_node_manager_->next_server_change_id()) {
538 Node* node = GetNode(NodeIdFromTransportId(node_id)); 537 Node* node = GetNode(NodeIdFromTransportId(node_id));
539 if (CanRemoveNodeFromParent(node)) { 538 if (CanRemoveNodeFromParent(node)) {
540 success = true; 539 success = true;
541 RootNodeManager::ScopedChange change( 540 RootNodeManager::ScopedChange change(
542 this, root_node_manager_, 541 this, root_node_manager_,
543 RootNodeManager::CHANGE_TYPE_ADVANCE_SERVER_CHANGE_ID, false); 542 RootNodeManager::CHANGE_TYPE_ADVANCE_SERVER_CHANGE_ID, false);
544 node->GetParent()->Remove(node); 543 node->GetParent()->Remove(node);
545 } 544 }
546 } 545 }
547 callback.Run(success); 546 callback.Run(success);
548 } 547 }
549 548
550 void ViewManagerConnection::GetNodeTree( 549 void ViewManagerConnection::GetNodeTree(
551 TransportNodeId node_id, 550 Id node_id,
552 const Callback<void(Array<INodePtr>)>& callback) { 551 const Callback<void(Array<INodePtr>)>& callback) {
553 Node* node = GetNode(NodeIdFromTransportId(node_id)); 552 Node* node = GetNode(NodeIdFromTransportId(node_id));
554 std::vector<const Node*> nodes; 553 std::vector<const Node*> nodes;
555 if (CanGetNodeTree(node)) { 554 if (CanGetNodeTree(node)) {
556 GetDescendants(node, &nodes); 555 GetDescendants(node, &nodes);
557 for (size_t i = 0; i < nodes.size(); ++i) 556 for (size_t i = 0; i < nodes.size(); ++i)
558 known_nodes_.insert(NodeIdToTransportId(nodes[i]->id())); 557 known_nodes_.insert(NodeIdToTransportId(nodes[i]->id()));
559 } 558 }
560 callback.Run(NodesToINodes(nodes)); 559 callback.Run(NodesToINodes(nodes));
561 } 560 }
562 561
563 void ViewManagerConnection::CreateView( 562 void ViewManagerConnection::CreateView(
564 TransportViewId transport_view_id, 563 Id transport_view_id,
565 const Callback<void(bool)>& callback) { 564 const Callback<void(bool)>& callback) {
566 const ViewId view_id(ViewIdFromTransportId(transport_view_id)); 565 const ViewId view_id(ViewIdFromTransportId(transport_view_id));
567 if (view_id.connection_id != id_ || view_map_.count(view_id.view_id)) { 566 if (view_id.connection_id != id_ || view_map_.count(view_id.view_id)) {
568 callback.Run(false); 567 callback.Run(false);
569 return; 568 return;
570 } 569 }
571 view_map_[view_id.view_id] = new View(view_id); 570 view_map_[view_id.view_id] = new View(view_id);
572 callback.Run(true); 571 callback.Run(true);
573 } 572 }
574 573
575 void ViewManagerConnection::DeleteView( 574 void ViewManagerConnection::DeleteView(
576 TransportViewId transport_view_id, 575 Id transport_view_id,
577 const Callback<void(bool)>& callback) { 576 const Callback<void(bool)>& callback) {
578 const ViewId view_id(ViewIdFromTransportId(transport_view_id)); 577 const ViewId view_id(ViewIdFromTransportId(transport_view_id));
579 bool did_delete = CanDeleteView(view_id); 578 bool did_delete = CanDeleteView(view_id);
580 if (did_delete) { 579 if (did_delete) {
581 ViewManagerConnection* connection = root_node_manager_->GetConnection( 580 ViewManagerConnection* connection = root_node_manager_->GetConnection(
582 view_id.connection_id); 581 view_id.connection_id);
583 did_delete = (connection && connection->DeleteViewImpl(this, view_id)); 582 did_delete = (connection && connection->DeleteViewImpl(this, view_id));
584 } 583 }
585 callback.Run(did_delete); 584 callback.Run(did_delete);
586 } 585 }
587 586
588 void ViewManagerConnection::SetView( 587 void ViewManagerConnection::SetView(Id transport_node_id,
589 TransportNodeId transport_node_id, 588 Id transport_view_id,
590 TransportViewId transport_view_id, 589 const Callback<void(bool)>& callback) {
591 const Callback<void(bool)>& callback) {
592 Node* node = GetNode(NodeIdFromTransportId(transport_node_id)); 590 Node* node = GetNode(NodeIdFromTransportId(transport_node_id));
593 const ViewId view_id(ViewIdFromTransportId(transport_view_id)); 591 const ViewId view_id(ViewIdFromTransportId(transport_view_id));
594 callback.Run(CanSetView(node, view_id) && SetViewImpl(node, view_id)); 592 callback.Run(CanSetView(node, view_id) && SetViewImpl(node, view_id));
595 } 593 }
596 594
597 void ViewManagerConnection::SetViewContents( 595 void ViewManagerConnection::SetViewContents(
598 TransportViewId view_id, 596 Id view_id,
599 ScopedSharedBufferHandle buffer, 597 ScopedSharedBufferHandle buffer,
600 uint32_t buffer_size, 598 uint32_t buffer_size,
601 const Callback<void(bool)>& callback) { 599 const Callback<void(bool)>& callback) {
602 View* view = GetView(ViewIdFromTransportId(view_id)); 600 View* view = GetView(ViewIdFromTransportId(view_id));
603 if (!view) { 601 if (!view) {
604 callback.Run(false); 602 callback.Run(false);
605 return; 603 return;
606 } 604 }
607 void* handle_data; 605 void* handle_data;
608 if (MapBuffer(buffer.get(), 0, buffer_size, &handle_data, 606 if (MapBuffer(buffer.get(), 0, buffer_size, &handle_data,
609 MOJO_MAP_BUFFER_FLAG_NONE) != MOJO_RESULT_OK) { 607 MOJO_MAP_BUFFER_FLAG_NONE) != MOJO_RESULT_OK) {
610 callback.Run(false); 608 callback.Run(false);
611 return; 609 return;
612 } 610 }
613 SkBitmap bitmap; 611 SkBitmap bitmap;
614 gfx::PNGCodec::Decode(static_cast<const unsigned char*>(handle_data), 612 gfx::PNGCodec::Decode(static_cast<const unsigned char*>(handle_data),
615 buffer_size, &bitmap); 613 buffer_size, &bitmap);
616 view->SetBitmap(bitmap); 614 view->SetBitmap(bitmap);
617 UnmapBuffer(handle_data); 615 UnmapBuffer(handle_data);
618 callback.Run(true); 616 callback.Run(true);
619 } 617 }
620 618
621 void ViewManagerConnection::SetNodeBounds( 619 void ViewManagerConnection::SetNodeBounds(
622 TransportNodeId node_id, 620 Id node_id,
623 RectPtr bounds, 621 RectPtr bounds,
624 const Callback<void(bool)>& callback) { 622 const Callback<void(bool)>& callback) {
625 if (NodeIdFromTransportId(node_id).connection_id != id_) { 623 if (NodeIdFromTransportId(node_id).connection_id != id_) {
626 callback.Run(false); 624 callback.Run(false);
627 return; 625 return;
628 } 626 }
629 627
630 Node* node = GetNode(NodeIdFromTransportId(node_id)); 628 Node* node = GetNode(NodeIdFromTransportId(node_id));
631 if (!node) { 629 if (!node) {
632 callback.Run(false); 630 callback.Run(false);
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after
692 690
693 client()->OnViewManagerConnectionEstablished( 691 client()->OnViewManagerConnectionEstablished(
694 id_, 692 id_,
695 root_node_manager_->next_server_change_id(), 693 root_node_manager_->next_server_change_id(),
696 NodesToINodes(to_send)); 694 NodesToINodes(to_send));
697 } 695 }
698 696
699 } // namespace service 697 } // namespace service
700 } // namespace view_manager 698 } // namespace view_manager
701 } // namespace mojo 699 } // namespace mojo
OLDNEW
« no previous file with comments | « mojo/services/view_manager/view_manager_connection.h ('k') | mojo/services/view_manager/view_manager_connection_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698