| 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 029d203fa895c7583ec5e8ee881a80f4d2d7c23e..d42c403d32253c86b27a36be8e9888642487ecfe 100644
|
| --- a/mojo/services/view_manager/view_manager_connection.cc
|
| +++ b/mojo/services/view_manager/view_manager_connection.cc
|
| @@ -34,7 +34,8 @@ void GetDescendants(const Node* node, std::vector<const Node*>* nodes) {
|
|
|
| ViewManagerConnection::ViewManagerConnection(RootNodeManager* root_node_manager)
|
| : root_node_manager_(root_node_manager),
|
| - id_(0) {
|
| + id_(root_node_manager_->GetAndAdvanceNextConnectionId()),
|
| + delete_on_connection_error_(false) {
|
| }
|
|
|
| ViewManagerConnection::~ViewManagerConnection() {
|
| @@ -87,7 +88,7 @@ const View* ViewManagerConnection::GetView(const ViewId& id) const {
|
| }
|
|
|
| void ViewManagerConnection::SetRoots(const Array<TransportNodeId>& node_ids) {
|
| - DCHECK_EQ(0, id_); // Only valid before connection established.
|
| + DCHECK(roots_.empty());
|
| NodeIdSet roots;
|
| for (size_t i = 0; i < node_ids.size(); ++i) {
|
| DCHECK(GetNode(NodeIdFromTransportId(node_ids[i])));
|
| @@ -198,8 +199,8 @@ void ViewManagerConnection::ProcessViewDeleted(const ViewId& view,
|
| }
|
|
|
| void ViewManagerConnection::OnConnectionError() {
|
| - // TODO(sky): figure out if need to cleanup here if this
|
| - // ViewManagerConnection is the result of a Connect().
|
| + if (delete_on_connection_error_)
|
| + delete this;
|
| }
|
|
|
| bool ViewManagerConnection::CanRemoveNodeFromParent(const Node* node) const {
|
| @@ -614,10 +615,6 @@ void ViewManagerConnection::OnNodeViewReplaced(const Node* node,
|
| }
|
|
|
| void ViewManagerConnection::OnConnectionEstablished() {
|
| - DCHECK_EQ(0, id_); // Should only get OnConnectionEstablished() once.
|
| -
|
| - id_ = root_node_manager_->GetAndAdvanceNextConnectionId();
|
| -
|
| root_node_manager_->AddConnection(this);
|
|
|
| std::vector<const Node*> to_send;
|
|
|