| Index: mojo/services/view_manager/view_manager_connection.cc | 
| diff --git a/mojo/services/view_manager/view_manager_connection.cc b/mojo/services/view_manager/view_manager_connection.cc | 
| index c3053c0d5899575b48c79fd70fcb5d9168d6c87b..0d717ab413bc10235302be9add9df4543f1549e1 100644 | 
| --- a/mojo/services/view_manager/view_manager_connection.cc | 
| +++ b/mojo/services/view_manager/view_manager_connection.cc | 
| @@ -331,6 +331,11 @@ bool ViewManagerConnection::CanSetView(const Node* node, | 
| return (view && view_id.connection_id == id_) || view_id == ViewId(); | 
| } | 
|  | 
| +bool ViewManagerConnection::CanSetFocus(const Node* node) const { | 
| +  // TODO(beng): security. | 
| +  return true; | 
| +} | 
| + | 
| bool ViewManagerConnection::CanGetNodeTree(const Node* node) const { | 
| return node && | 
| (IsNodeDescendantOfRoots(node) || node->id().connection_id == id_); | 
| @@ -695,6 +700,17 @@ void ViewManagerConnection::SetViewContents( | 
| callback.Run(true); | 
| } | 
|  | 
| +void ViewManagerConnection::SetFocus(Id node_id, | 
| +                                     const Callback<void(bool)> & callback) { | 
| +  bool success = false; | 
| +  Node* node = GetNode(NodeIdFromTransportId(node_id)); | 
| +  if (CanSetFocus(node)) { | 
| +    success = true; | 
| +    node->window()->Focus(); | 
| +  } | 
| +  callback.Run(success); | 
| +} | 
| + | 
| void ViewManagerConnection::SetNodeBounds( | 
| Id node_id, | 
| RectPtr bounds, | 
|  |