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

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

Issue 287053004: SetBounds for ViewTreeNode. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: . Created 6 years, 7 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_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/run_loop.h" 8 #include "base/run_loop.h"
9 #include "mojo/public/cpp/shell/connect.h" 9 #include "mojo/public/cpp/shell/connect.h"
10 #include "mojo/public/interfaces/shell/shell.mojom.h" 10 #include "mojo/public/interfaces/shell/shell.mojom.h"
(...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after
92 // View creation and destruction. 92 // View creation and destruction.
93 TYPE_CREATE_VIEW, 93 TYPE_CREATE_VIEW,
94 TYPE_DESTROY_VIEW, 94 TYPE_DESTROY_VIEW,
95 // Node creation and destruction. 95 // Node creation and destruction.
96 TYPE_CREATE_VIEW_TREE_NODE, 96 TYPE_CREATE_VIEW_TREE_NODE,
97 TYPE_DESTROY_VIEW_TREE_NODE, 97 TYPE_DESTROY_VIEW_TREE_NODE,
98 // Modifications to the hierarchy (addition of or removal of nodes from a 98 // Modifications to the hierarchy (addition of or removal of nodes from a
99 // parent.) 99 // parent.)
100 TYPE_HIERARCHY, 100 TYPE_HIERARCHY,
101 // View replacement. 101 // View replacement.
102 TYPE_SET_ACTIVE_VIEW 102 TYPE_SET_ACTIVE_VIEW,
103 // Node bounds.
104 TYPE_SET_BOUNDS
103 }; 105 };
104 106
105 ViewManagerTransaction(TransactionType transaction_type, 107 ViewManagerTransaction(TransactionType transaction_type,
106 ViewManagerSynchronizer* synchronizer) 108 ViewManagerSynchronizer* synchronizer)
107 : transaction_type_(transaction_type), 109 : transaction_type_(transaction_type),
108 committed_(false), 110 committed_(false),
109 synchronizer_(synchronizer) { 111 synchronizer_(synchronizer) {
110 } 112 }
111 113
112 // Overridden to perform transaction-specific commit actions. 114 // Overridden to perform transaction-specific commit actions.
(...skipping 185 matching lines...) Expand 10 before | Expand all | Expand 10 after
298 virtual void DoActionCompleted(bool success) OVERRIDE { 300 virtual void DoActionCompleted(bool success) OVERRIDE {
299 // TODO(beng): recovery? 301 // TODO(beng): recovery?
300 } 302 }
301 303
302 const TransportNodeId node_id_; 304 const TransportNodeId node_id_;
303 const TransportViewId view_id_; 305 const TransportViewId view_id_;
304 306
305 DISALLOW_COPY_AND_ASSIGN(SetActiveViewTransaction); 307 DISALLOW_COPY_AND_ASSIGN(SetActiveViewTransaction);
306 }; 308 };
307 309
310 class SetBoundsTransaction : public ViewManagerTransaction {
311 public:
312 SetBoundsTransaction(TransportNodeId node_id,
313 const gfx::Rect& bounds,
314 ViewManagerSynchronizer* synchronizer)
315 : ViewManagerTransaction(TYPE_SET_BOUNDS, synchronizer),
316 node_id_(node_id),
317 bounds_(bounds) {}
318 virtual ~SetBoundsTransaction() {}
319
320 private:
321 // Overridden from ViewManagerTransaction:
322 virtual void DoCommit() OVERRIDE {
323 AllocationScope scope;
324 service()->SetNodeBounds(node_id_, bounds_, ActionCompletedCallback());
325 }
326 virtual void DoActionCompleted(bool success) OVERRIDE {
327 // TODO(beng): recovery?
328 }
329
330 const TransportNodeId node_id_;
331 const gfx::Rect bounds_;
332
333 DISALLOW_COPY_AND_ASSIGN(SetBoundsTransaction);
334 };
335
308 ViewManagerSynchronizer::ViewManagerSynchronizer(ViewManager* view_manager) 336 ViewManagerSynchronizer::ViewManagerSynchronizer(ViewManager* view_manager)
309 : view_manager_(view_manager), 337 : view_manager_(view_manager),
310 connected_(false), 338 connected_(false),
311 connection_id_(0), 339 connection_id_(0),
312 next_id_(1), 340 next_id_(1),
313 next_server_change_id_(0), 341 next_server_change_id_(0),
314 sync_factory_(this), 342 sync_factory_(this),
315 init_loop_(NULL) { 343 init_loop_(NULL) {
316 ConnectTo(ViewManagerPrivate(view_manager_).shell(), "mojo:mojo_view_manager", 344 ConnectTo(ViewManagerPrivate(view_manager_).shell(), "mojo:mojo_view_manager",
317 &service_); 345 &service_);
(...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after
392 } 420 }
393 421
394 void ViewManagerSynchronizer::SetActiveView(TransportNodeId node_id, 422 void ViewManagerSynchronizer::SetActiveView(TransportNodeId node_id,
395 TransportViewId view_id) { 423 TransportViewId view_id) {
396 DCHECK(connected_); 424 DCHECK(connected_);
397 pending_transactions_.push_back( 425 pending_transactions_.push_back(
398 new SetActiveViewTransaction(node_id, view_id, this)); 426 new SetActiveViewTransaction(node_id, view_id, this));
399 Sync(); 427 Sync();
400 } 428 }
401 429
430 void ViewManagerSynchronizer::SetBounds(TransportNodeId node_id,
431 const gfx::Rect& bounds) {
432 DCHECK(connected_);
433 pending_transactions_.push_back(
434 new SetBoundsTransaction(node_id, bounds, this));
435 Sync();
436 }
437
402 //////////////////////////////////////////////////////////////////////////////// 438 ////////////////////////////////////////////////////////////////////////////////
403 // ViewManagerSynchronizer, IViewManagerClient implementation: 439 // ViewManagerSynchronizer, IViewManagerClient implementation:
404 440
405 void ViewManagerSynchronizer::OnConnectionEstablished( 441 void ViewManagerSynchronizer::OnConnectionEstablished(
406 TransportConnectionId connection_id, 442 TransportConnectionId connection_id,
407 TransportChangeId next_server_change_id, 443 TransportChangeId next_server_change_id,
408 const Array<INode>& nodes) { 444 const Array<INode>& nodes) {
409 connected_ = true; 445 connected_ = true;
410 connection_id_ = connection_id; 446 connection_id_ = connection_id;
411 next_server_change_id_ = next_server_change_id; 447 next_server_change_id_ = next_server_change_id;
412 448
413 ViewManagerPrivate(view_manager_).set_root( 449 ViewManagerPrivate(view_manager_).set_root(
414 BuildNodeTree(view_manager_, nodes)); 450 BuildNodeTree(view_manager_, nodes));
415 if (init_loop_) 451 if (init_loop_)
416 init_loop_->Quit(); 452 init_loop_->Quit();
417 453
418 Sync(); 454 Sync();
419 } 455 }
420 456
421 void ViewManagerSynchronizer::OnServerChangeIdAdvanced( 457 void ViewManagerSynchronizer::OnServerChangeIdAdvanced(
422 uint32_t next_server_change_id) { 458 uint32_t next_server_change_id) {
423 next_server_change_id_ = next_server_change_id; 459 next_server_change_id_ = next_server_change_id;
424 } 460 }
425 461
462 void ViewManagerSynchronizer::OnNodeBoundsChanged(uint32 node_id,
463 const Rect& old_bounds,
464 const Rect& new_bounds) {
465 ViewTreeNode* node = view_manager_->GetNodeById(node_id);
466 ViewTreeNodePrivate(node).LocalSetBounds(old_bounds, new_bounds);
467 }
468
426 void ViewManagerSynchronizer::OnNodeHierarchyChanged( 469 void ViewManagerSynchronizer::OnNodeHierarchyChanged(
427 uint32_t node_id, 470 uint32_t node_id,
428 uint32_t new_parent_id, 471 uint32_t new_parent_id,
429 uint32_t old_parent_id, 472 uint32_t old_parent_id,
430 TransportChangeId server_change_id, 473 TransportChangeId server_change_id,
431 const Array<INode>& nodes) { 474 const Array<INode>& nodes) {
432 // TODO: deal with |nodes|. 475 // TODO: deal with |nodes|.
433 next_server_change_id_ = server_change_id + 1; 476 next_server_change_id_ = server_change_id + 1;
434 477
435 BuildNodeTree(view_manager_, nodes); 478 BuildNodeTree(view_manager_, nodes);
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after
496 void ViewManagerSynchronizer::RemoveFromPendingQueue( 539 void ViewManagerSynchronizer::RemoveFromPendingQueue(
497 ViewManagerTransaction* transaction) { 540 ViewManagerTransaction* transaction) {
498 DCHECK_EQ(transaction, pending_transactions_.front()); 541 DCHECK_EQ(transaction, pending_transactions_.front());
499 pending_transactions_.erase(pending_transactions_.begin()); 542 pending_transactions_.erase(pending_transactions_.begin());
500 if (pending_transactions_.empty() && !changes_acked_callback_.is_null()) 543 if (pending_transactions_.empty() && !changes_acked_callback_.is_null())
501 changes_acked_callback_.Run(); 544 changes_acked_callback_.Run();
502 } 545 }
503 546
504 } // namespace view_manager 547 } // namespace view_manager
505 } // namespace mojo 548 } // namespace mojo
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698