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

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

Issue 397263004: Nukes change_ids from view manager (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 5 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 115 matching lines...) Expand 10 before | Expand all | Expand 10 after
126 126
127 // Overridden to perform transaction-specific commit actions. 127 // Overridden to perform transaction-specific commit actions.
128 virtual void DoCommit() = 0; 128 virtual void DoCommit() = 0;
129 129
130 // Overridden to perform transaction-specific cleanup on commit ack from the 130 // Overridden to perform transaction-specific cleanup on commit ack from the
131 // service. 131 // service.
132 virtual void DoActionCompleted(bool success) = 0; 132 virtual void DoActionCompleted(bool success) = 0;
133 133
134 ViewManagerService* service() { return client_->service_; } 134 ViewManagerService* service() { return client_->service_; }
135 135
136 Id GetAndAdvanceNextServerChangeId() {
137 return client_->next_server_change_id_++;
138 }
139
140 // TODO(sky): nuke this and covert all to new one, then rename 136 // TODO(sky): nuke this and covert all to new one, then rename
141 // ActionCompletedCallbackWithErrorCode to ActionCompletedCallback. 137 // ActionCompletedCallbackWithErrorCode to ActionCompletedCallback.
142 base::Callback<void(bool)> ActionCompletedCallback() { 138 base::Callback<void(bool)> ActionCompletedCallback() {
143 return base::Bind(&ViewManagerTransaction::OnActionCompleted, 139 return base::Bind(&ViewManagerTransaction::OnActionCompleted,
144 base::Unretained(this)); 140 base::Unretained(this));
145 } 141 }
146 142
147 base::Callback<void(ErrorCode)> ActionCompletedCallbackWithErrorCode() { 143 base::Callback<void(ErrorCode)> ActionCompletedCallbackWithErrorCode() {
148 return base::Bind(&ViewManagerTransaction::OnActionCompletedWithErrorCode, 144 return base::Bind(&ViewManagerTransaction::OnActionCompletedWithErrorCode,
149 base::Unretained(this)); 145 base::Unretained(this));
(...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after
239 class DestroyNodeTransaction : public ViewManagerTransaction { 235 class DestroyNodeTransaction : public ViewManagerTransaction {
240 public: 236 public:
241 DestroyNodeTransaction(Id node_id, ViewManagerClientImpl* client) 237 DestroyNodeTransaction(Id node_id, ViewManagerClientImpl* client)
242 : ViewManagerTransaction(client), 238 : ViewManagerTransaction(client),
243 node_id_(node_id) {} 239 node_id_(node_id) {}
244 virtual ~DestroyNodeTransaction() {} 240 virtual ~DestroyNodeTransaction() {}
245 241
246 private: 242 private:
247 // Overridden from ViewManagerTransaction: 243 // Overridden from ViewManagerTransaction:
248 virtual void DoCommit() OVERRIDE { 244 virtual void DoCommit() OVERRIDE {
249 service()->DeleteNode(node_id_, 245 service()->DeleteNode(node_id_, ActionCompletedCallback());
250 GetAndAdvanceNextServerChangeId(),
251 ActionCompletedCallback());
252 } 246 }
253 virtual void DoActionCompleted(bool success) OVERRIDE { 247 virtual void DoActionCompleted(bool success) OVERRIDE {
254 // TODO(beng): recovery? 248 // TODO(beng): recovery?
255 DCHECK(success); 249 DCHECK(success);
256 } 250 }
257 251
258 const Id node_id_; 252 const Id node_id_;
259 DISALLOW_COPY_AND_ASSIGN(DestroyNodeTransaction); 253 DISALLOW_COPY_AND_ASSIGN(DestroyNodeTransaction);
260 }; 254 };
261 255
262 class AddChildTransaction : public ViewManagerTransaction { 256 class AddChildTransaction : public ViewManagerTransaction {
263 public: 257 public:
264 AddChildTransaction(Id child_id, 258 AddChildTransaction(Id child_id,
265 Id parent_id, 259 Id parent_id,
266 ViewManagerClientImpl* client) 260 ViewManagerClientImpl* client)
267 : ViewManagerTransaction(client), 261 : ViewManagerTransaction(client),
268 child_id_(child_id), 262 child_id_(child_id),
269 parent_id_(parent_id) {} 263 parent_id_(parent_id) {}
270 virtual ~AddChildTransaction() {} 264 virtual ~AddChildTransaction() {}
271 265
272 private: 266 private:
273 // Overridden from ViewManagerTransaction: 267 // Overridden from ViewManagerTransaction:
274 virtual void DoCommit() OVERRIDE { 268 virtual void DoCommit() OVERRIDE {
275 service()->AddNode(parent_id_, 269 service()->AddNode(parent_id_, child_id_, ActionCompletedCallback());
276 child_id_,
277 GetAndAdvanceNextServerChangeId(),
278 ActionCompletedCallback());
279 } 270 }
280 271
281 virtual void DoActionCompleted(bool success) OVERRIDE { 272 virtual void DoActionCompleted(bool success) OVERRIDE {
282 // TODO(beng): recovery? 273 // TODO(beng): recovery?
283 DCHECK(success); 274 DCHECK(success);
284 } 275 }
285 276
286 const Id child_id_; 277 const Id child_id_;
287 const Id parent_id_; 278 const Id parent_id_;
288 279
289 DISALLOW_COPY_AND_ASSIGN(AddChildTransaction); 280 DISALLOW_COPY_AND_ASSIGN(AddChildTransaction);
290 }; 281 };
291 282
292 class RemoveChildTransaction : public ViewManagerTransaction { 283 class RemoveChildTransaction : public ViewManagerTransaction {
293 public: 284 public:
294 RemoveChildTransaction(Id child_id, ViewManagerClientImpl* client) 285 RemoveChildTransaction(Id child_id, ViewManagerClientImpl* client)
295 : ViewManagerTransaction(client), 286 : ViewManagerTransaction(client),
296 child_id_(child_id) {} 287 child_id_(child_id) {}
297 virtual ~RemoveChildTransaction() {} 288 virtual ~RemoveChildTransaction() {}
298 289
299 private: 290 private:
300 // Overridden from ViewManagerTransaction: 291 // Overridden from ViewManagerTransaction:
301 virtual void DoCommit() OVERRIDE { 292 virtual void DoCommit() OVERRIDE {
302 service()->RemoveNodeFromParent( 293 service()->RemoveNodeFromParent(child_id_, ActionCompletedCallback());
303 child_id_,
304 GetAndAdvanceNextServerChangeId(),
305 ActionCompletedCallback());
306 } 294 }
307 295
308 virtual void DoActionCompleted(bool success) OVERRIDE { 296 virtual void DoActionCompleted(bool success) OVERRIDE {
309 // TODO(beng): recovery? 297 // TODO(beng): recovery?
310 DCHECK(success); 298 DCHECK(success);
311 } 299 }
312 300
313 const Id child_id_; 301 const Id child_id_;
314 302
315 DISALLOW_COPY_AND_ASSIGN(RemoveChildTransaction); 303 DISALLOW_COPY_AND_ASSIGN(RemoveChildTransaction);
(...skipping 10 matching lines...) Expand all
326 relative_id_(relative_id), 314 relative_id_(relative_id),
327 direction_(direction) {} 315 direction_(direction) {}
328 virtual ~ReorderNodeTransaction() {} 316 virtual ~ReorderNodeTransaction() {}
329 317
330 private: 318 private:
331 // Overridden from ViewManagerTransaction: 319 // Overridden from ViewManagerTransaction:
332 virtual void DoCommit() OVERRIDE { 320 virtual void DoCommit() OVERRIDE {
333 service()->ReorderNode(node_id_, 321 service()->ReorderNode(node_id_,
334 relative_id_, 322 relative_id_,
335 direction_, 323 direction_,
336 GetAndAdvanceNextServerChangeId(),
337 ActionCompletedCallback()); 324 ActionCompletedCallback());
338 } 325 }
339 326
340 virtual void DoActionCompleted(bool success) OVERRIDE { 327 virtual void DoActionCompleted(bool success) OVERRIDE {
341 // TODO(beng): recovery? 328 // TODO(beng): recovery?
342 DCHECK(success); 329 DCHECK(success);
343 } 330 }
344 331
345 const Id node_id_; 332 const Id node_id_;
346 const Id relative_id_; 333 const Id relative_id_;
(...skipping 124 matching lines...) Expand 10 before | Expand all | Expand 10 after
471 Id node_id, 458 Id node_id,
472 ViewManagerClientImpl* client) 459 ViewManagerClientImpl* client)
473 : ViewManagerTransaction(client), 460 : ViewManagerTransaction(client),
474 url_(url), 461 url_(url),
475 node_id_(node_id) {} 462 node_id_(node_id) {}
476 virtual ~EmbedTransaction() {} 463 virtual ~EmbedTransaction() {}
477 464
478 private: 465 private:
479 // Overridden from ViewManagerTransaction: 466 // Overridden from ViewManagerTransaction:
480 virtual void DoCommit() OVERRIDE { 467 virtual void DoCommit() OVERRIDE {
481 GetAndAdvanceNextServerChangeId();
482 service()->Embed(url_, node_id_, ActionCompletedCallback()); 468 service()->Embed(url_, node_id_, ActionCompletedCallback());
483 } 469 }
484 virtual void DoActionCompleted(bool success) OVERRIDE { 470 virtual void DoActionCompleted(bool success) OVERRIDE {
485 // TODO(beng): recovery? 471 // TODO(beng): recovery?
486 } 472 }
487 473
488 const String url_; 474 const String url_;
489 const Id node_id_; 475 const Id node_id_;
490 476
491 DISALLOW_COPY_AND_ASSIGN(EmbedTransaction); 477 DISALLOW_COPY_AND_ASSIGN(EmbedTransaction);
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
535 const bool visible_; 521 const bool visible_;
536 522
537 DISALLOW_COPY_AND_ASSIGN(SetVisibleTransaction); 523 DISALLOW_COPY_AND_ASSIGN(SetVisibleTransaction);
538 }; 524 };
539 525
540 ViewManagerClientImpl::ViewManagerClientImpl(ApplicationConnection* connection, 526 ViewManagerClientImpl::ViewManagerClientImpl(ApplicationConnection* connection,
541 ViewManagerDelegate* delegate) 527 ViewManagerDelegate* delegate)
542 : connected_(false), 528 : connected_(false),
543 connection_id_(0), 529 connection_id_(0),
544 next_id_(1), 530 next_id_(1),
545 next_server_change_id_(0),
546 delegate_(delegate), 531 delegate_(delegate),
547 dispatcher_(NULL) {} 532 dispatcher_(NULL) {}
548 533
549 ViewManagerClientImpl::~ViewManagerClientImpl() { 534 ViewManagerClientImpl::~ViewManagerClientImpl() {
550 delegate_->OnViewManagerDisconnected(this); 535 delegate_->OnViewManagerDisconnected(this);
551 while (!nodes_.empty()) { 536 while (!nodes_.empty()) {
552 IdToNodeMap::iterator it = nodes_.begin(); 537 IdToNodeMap::iterator it = nodes_.begin();
553 if (OwnsNode(it->second->id())) 538 if (OwnsNode(it->second->id()))
554 it->second->Destroy(); 539 it->second->Destroy();
555 else 540 else
(...skipping 170 matching lines...) Expand 10 before | Expand all | Expand 10 after
726 void ViewManagerClientImpl::OnConnectionEstablished() { 711 void ViewManagerClientImpl::OnConnectionEstablished() {
727 service_ = client(); 712 service_ = client();
728 } 713 }
729 714
730 //////////////////////////////////////////////////////////////////////////////// 715 ////////////////////////////////////////////////////////////////////////////////
731 // ViewManagerClientImpl, ViewManagerClient implementation: 716 // ViewManagerClientImpl, ViewManagerClient implementation:
732 717
733 void ViewManagerClientImpl::OnViewManagerConnectionEstablished( 718 void ViewManagerClientImpl::OnViewManagerConnectionEstablished(
734 ConnectionSpecificId connection_id, 719 ConnectionSpecificId connection_id,
735 const String& creator_url, 720 const String& creator_url,
736 Id next_server_change_id,
737 Array<NodeDataPtr> nodes) { 721 Array<NodeDataPtr> nodes) {
738 connected_ = true; 722 connected_ = true;
739 connection_id_ = connection_id; 723 connection_id_ = connection_id;
740 creator_url_ = TypeConverter<String, std::string>::ConvertFrom(creator_url); 724 creator_url_ = TypeConverter<String, std::string>::ConvertFrom(creator_url);
741 next_server_change_id_ = next_server_change_id;
742 725
743 DCHECK(pending_transactions_.empty()); 726 DCHECK(pending_transactions_.empty());
744 AddRoot(BuildNodeTree(this, nodes)); 727 AddRoot(BuildNodeTree(this, nodes));
745 } 728 }
746 729
747 void ViewManagerClientImpl::OnRootAdded(Array<NodeDataPtr> nodes) { 730 void ViewManagerClientImpl::OnRootAdded(Array<NodeDataPtr> nodes) {
748 AddRoot(BuildNodeTree(this, nodes)); 731 AddRoot(BuildNodeTree(this, nodes));
749 } 732 }
750 733
751 void ViewManagerClientImpl::OnServerChangeIdAdvanced(
752 Id next_server_change_id) {
753 next_server_change_id_ = next_server_change_id;
754 }
755
756 void ViewManagerClientImpl::OnNodeBoundsChanged(Id node_id, 734 void ViewManagerClientImpl::OnNodeBoundsChanged(Id node_id,
757 RectPtr old_bounds, 735 RectPtr old_bounds,
758 RectPtr new_bounds) { 736 RectPtr new_bounds) {
759 Node* node = GetNodeById(node_id); 737 Node* node = GetNodeById(node_id);
760 NodePrivate(node).LocalSetBounds(old_bounds.To<gfx::Rect>(), 738 NodePrivate(node).LocalSetBounds(old_bounds.To<gfx::Rect>(),
761 new_bounds.To<gfx::Rect>()); 739 new_bounds.To<gfx::Rect>());
762 } 740 }
763 741
764 void ViewManagerClientImpl::OnNodeHierarchyChanged( 742 void ViewManagerClientImpl::OnNodeHierarchyChanged(
765 Id node_id, 743 Id node_id,
766 Id new_parent_id, 744 Id new_parent_id,
767 Id old_parent_id, 745 Id old_parent_id,
768 Id server_change_id,
769 mojo::Array<NodeDataPtr> nodes) { 746 mojo::Array<NodeDataPtr> nodes) {
770 next_server_change_id_ = server_change_id + 1;
771
772 BuildNodeTree(this, nodes); 747 BuildNodeTree(this, nodes);
773 748
774 Node* new_parent = GetNodeById(new_parent_id); 749 Node* new_parent = GetNodeById(new_parent_id);
775 Node* old_parent = GetNodeById(old_parent_id); 750 Node* old_parent = GetNodeById(old_parent_id);
776 Node* node = GetNodeById(node_id); 751 Node* node = GetNodeById(node_id);
777 if (new_parent) 752 if (new_parent)
778 NodePrivate(new_parent).LocalAddChild(node); 753 NodePrivate(new_parent).LocalAddChild(node);
779 else 754 else
780 NodePrivate(old_parent).LocalRemoveChild(node); 755 NodePrivate(old_parent).LocalRemoveChild(node);
781 } 756 }
782 757
783 void ViewManagerClientImpl::OnNodeReordered(Id node_id, 758 void ViewManagerClientImpl::OnNodeReordered(Id node_id,
784 Id relative_node_id, 759 Id relative_node_id,
785 OrderDirection direction, 760 OrderDirection direction) {
786 Id server_change_id) {
787 next_server_change_id_ = server_change_id + 1;
788
789 Node* node = GetNodeById(node_id); 761 Node* node = GetNodeById(node_id);
790 Node* relative_node = GetNodeById(relative_node_id); 762 Node* relative_node = GetNodeById(relative_node_id);
791 if (node && relative_node) { 763 if (node && relative_node)
792 NodePrivate(node).LocalReorder(relative_node, direction); 764 NodePrivate(node).LocalReorder(relative_node, direction);
793 }
794 } 765 }
795 766
796 void ViewManagerClientImpl::OnNodeDeleted(Id node_id, Id server_change_id) { 767 void ViewManagerClientImpl::OnNodeDeleted(Id node_id) {
797 next_server_change_id_ = server_change_id + 1;
798
799 Node* node = GetNodeById(node_id); 768 Node* node = GetNodeById(node_id);
800 if (node) 769 if (node)
801 NodePrivate(node).LocalDestroy(); 770 NodePrivate(node).LocalDestroy();
802 } 771 }
803 772
804 void ViewManagerClientImpl::OnNodeViewReplaced(Id node_id, 773 void ViewManagerClientImpl::OnNodeViewReplaced(Id node_id,
805 Id new_view_id, 774 Id new_view_id,
806 Id old_view_id) { 775 Id old_view_id) {
807 Node* node = GetNodeById(node_id); 776 Node* node = GetNodeById(node_id);
808 View* new_view = GetViewById(new_view_id); 777 View* new_view = GetViewById(new_view_id);
(...skipping 100 matching lines...) Expand 10 before | Expand all | Expand 10 after
909 878
910 // static 879 // static
911 void ViewManager::ConfigureIncomingConnection( 880 void ViewManager::ConfigureIncomingConnection(
912 ApplicationConnection* connection, 881 ApplicationConnection* connection,
913 ViewManagerDelegate* delegate) { 882 ViewManagerDelegate* delegate) {
914 connection->AddService<ViewManagerClientImpl>(delegate); 883 connection->AddService<ViewManagerClientImpl>(delegate);
915 } 884 }
916 885
917 } // namespace view_manager 886 } // namespace view_manager
918 } // namespace mojo 887 } // namespace mojo
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698