| Index: mojo/services/public/cpp/view_manager/lib/view_manager_synchronizer.cc
|
| diff --git a/mojo/services/public/cpp/view_manager/lib/view_manager_synchronizer.cc b/mojo/services/public/cpp/view_manager/lib/view_manager_synchronizer.cc
|
| index 16e232150324f70d0af6387a60ced967d552ad38..3568ae5e80fe44420632efd3499f0ac30c9eaeeb 100644
|
| --- a/mojo/services/public/cpp/view_manager/lib/view_manager_synchronizer.cc
|
| +++ b/mojo/services/public/cpp/view_manager/lib/view_manager_synchronizer.cc
|
| @@ -477,6 +477,27 @@ class EmbedTransaction : public ViewManagerTransaction {
|
| DISALLOW_COPY_AND_ASSIGN(EmbedTransaction);
|
| };
|
|
|
| +class SetFocusTransaction : public ViewManagerTransaction {
|
| + public:
|
| + SetFocusTransaction(Id node_id, ViewManagerSynchronizer* synchronizer)
|
| + : ViewManagerTransaction(synchronizer),
|
| + node_id_(node_id) {}
|
| + virtual ~SetFocusTransaction() {}
|
| +
|
| + private:
|
| + // Overridden from ViewManagerTransaction:
|
| + virtual void DoCommit() OVERRIDE {
|
| + service()->SetFocus(node_id_, ActionCompletedCallback());
|
| + }
|
| + virtual void DoActionCompleted(bool success) OVERRIDE {
|
| + // TODO(beng): recovery?
|
| + }
|
| +
|
| + const Id node_id_;
|
| +
|
| + DISALLOW_COPY_AND_ASSIGN(SetFocusTransaction);
|
| +};
|
| +
|
| ViewManagerSynchronizer::ViewManagerSynchronizer(ViewManagerDelegate* delegate)
|
| : connected_(false),
|
| connection_id_(0),
|
| @@ -585,6 +606,12 @@ void ViewManagerSynchronizer::SetViewContents(Id view_id,
|
| Sync();
|
| }
|
|
|
| +void ViewManagerSynchronizer::SetFocus(Id node_id) {
|
| + DCHECK(connected_);
|
| + pending_transactions_.push_back(new SetFocusTransaction(node_id, this));
|
| + Sync();
|
| +}
|
| +
|
| void ViewManagerSynchronizer::Embed(const String& url, Id node_id) {
|
| DCHECK(connected_);
|
| pending_transactions_.push_back(new EmbedTransaction(url, node_id, this));
|
|
|