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 "mojo/public/cpp/application/application.h" | 9 #include "mojo/public/cpp/application/application.h" |
10 #include "mojo/public/cpp/application/connect.h" | 10 #include "mojo/public/cpp/application/connect.h" |
(...skipping 459 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
470 virtual void DoActionCompleted(bool success) OVERRIDE { | 470 virtual void DoActionCompleted(bool success) OVERRIDE { |
471 // TODO(beng): recovery? | 471 // TODO(beng): recovery? |
472 } | 472 } |
473 | 473 |
474 const String url_; | 474 const String url_; |
475 const Id node_id_; | 475 const Id node_id_; |
476 | 476 |
477 DISALLOW_COPY_AND_ASSIGN(EmbedTransaction); | 477 DISALLOW_COPY_AND_ASSIGN(EmbedTransaction); |
478 }; | 478 }; |
479 | 479 |
| 480 class SetFocusTransaction : public ViewManagerTransaction { |
| 481 public: |
| 482 SetFocusTransaction(Id node_id, ViewManagerSynchronizer* synchronizer) |
| 483 : ViewManagerTransaction(synchronizer), |
| 484 node_id_(node_id) {} |
| 485 virtual ~SetFocusTransaction() {} |
| 486 |
| 487 private: |
| 488 // Overridden from ViewManagerTransaction: |
| 489 virtual void DoCommit() OVERRIDE { |
| 490 service()->SetFocus(node_id_, ActionCompletedCallback()); |
| 491 } |
| 492 virtual void DoActionCompleted(bool success) OVERRIDE { |
| 493 // TODO(beng): recovery? |
| 494 } |
| 495 |
| 496 const Id node_id_; |
| 497 |
| 498 DISALLOW_COPY_AND_ASSIGN(SetFocusTransaction); |
| 499 }; |
| 500 |
480 ViewManagerSynchronizer::ViewManagerSynchronizer(ViewManagerDelegate* delegate) | 501 ViewManagerSynchronizer::ViewManagerSynchronizer(ViewManagerDelegate* delegate) |
481 : connected_(false), | 502 : connected_(false), |
482 connection_id_(0), | 503 connection_id_(0), |
483 next_id_(1), | 504 next_id_(1), |
484 next_server_change_id_(0), | 505 next_server_change_id_(0), |
485 delegate_(delegate) {} | 506 delegate_(delegate) {} |
486 | 507 |
487 ViewManagerSynchronizer::~ViewManagerSynchronizer() { | 508 ViewManagerSynchronizer::~ViewManagerSynchronizer() { |
488 while (!nodes_.empty()) { | 509 while (!nodes_.empty()) { |
489 IdToNodeMap::iterator it = nodes_.begin(); | 510 IdToNodeMap::iterator it = nodes_.begin(); |
(...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
578 } | 599 } |
579 | 600 |
580 void ViewManagerSynchronizer::SetViewContents(Id view_id, | 601 void ViewManagerSynchronizer::SetViewContents(Id view_id, |
581 const SkBitmap& contents) { | 602 const SkBitmap& contents) { |
582 DCHECK(connected_); | 603 DCHECK(connected_); |
583 pending_transactions_.push_back( | 604 pending_transactions_.push_back( |
584 new SetViewContentsTransaction(view_id, contents, this)); | 605 new SetViewContentsTransaction(view_id, contents, this)); |
585 Sync(); | 606 Sync(); |
586 } | 607 } |
587 | 608 |
| 609 void ViewManagerSynchronizer::SetFocus(Id node_id) { |
| 610 DCHECK(connected_); |
| 611 pending_transactions_.push_back(new SetFocusTransaction(node_id, this)); |
| 612 Sync(); |
| 613 } |
| 614 |
588 void ViewManagerSynchronizer::Embed(const String& url, Id node_id) { | 615 void ViewManagerSynchronizer::Embed(const String& url, Id node_id) { |
589 DCHECK(connected_); | 616 DCHECK(connected_); |
590 pending_transactions_.push_back(new EmbedTransaction(url, node_id, this)); | 617 pending_transactions_.push_back(new EmbedTransaction(url, node_id, this)); |
591 Sync(); | 618 Sync(); |
592 } | 619 } |
593 | 620 |
594 void ViewManagerSynchronizer::AddNode(ViewTreeNode* node) { | 621 void ViewManagerSynchronizer::AddNode(ViewTreeNode* node) { |
595 DCHECK(nodes_.find(node->id()) == nodes_.end()); | 622 DCHECK(nodes_.find(node->id()) == nodes_.end()); |
596 nodes_[node->id()] = node; | 623 nodes_[node->id()] = node; |
597 } | 624 } |
(...skipping 205 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
803 // ViewManager, public: | 830 // ViewManager, public: |
804 | 831 |
805 // static | 832 // static |
806 void ViewManager::Create(Application* application, | 833 void ViewManager::Create(Application* application, |
807 ViewManagerDelegate* delegate) { | 834 ViewManagerDelegate* delegate) { |
808 application->AddService<ViewManagerSynchronizer>(delegate); | 835 application->AddService<ViewManagerSynchronizer>(delegate); |
809 } | 836 } |
810 | 837 |
811 } // namespace view_manager | 838 } // namespace view_manager |
812 } // namespace mojo | 839 } // namespace mojo |
OLD | NEW |