| Index: mojo/services/public/cpp/view_manager/lib/view_manager_client_impl.cc | 
| diff --git a/mojo/services/public/cpp/view_manager/lib/view_manager_client_impl.cc b/mojo/services/public/cpp/view_manager/lib/view_manager_client_impl.cc | 
| index 860beb57c3b8982f2b90e0151fe028722e731789..9421e180ed388d1ab0f0bcdbd4652c91d80d3d40 100644 | 
| --- a/mojo/services/public/cpp/view_manager/lib/view_manager_client_impl.cc | 
| +++ b/mojo/services/public/cpp/view_manager/lib/view_manager_client_impl.cc | 
| @@ -92,8 +92,16 @@ class RootObserver : public ViewObserver { | 
| }; | 
|  | 
| ViewManagerClientImpl::ViewManagerClientImpl(ViewManagerDelegate* delegate, | 
| -                                             Shell* shell) | 
| -    : connected_(false), connection_id_(0), next_id_(1), delegate_(delegate) { | 
| +                                             Shell* shell, | 
| +                                             ScopedMessagePipeHandle handle, | 
| +                                             bool delete_on_error) | 
| +    : connected_(false), | 
| +      connection_id_(0), | 
| +      next_id_(1), | 
| +      delegate_(delegate), | 
| +      binding_(this, handle.Pass()), | 
| +      service_(binding_.client()), | 
| +      delete_on_error_(delete_on_error) { | 
| } | 
|  | 
| ViewManagerClientImpl::~ViewManagerClientImpl() { | 
| @@ -199,8 +207,9 @@ void ViewManagerClientImpl::Embed( | 
| Id view_id, | 
| ServiceProviderPtr service_provider) { | 
| DCHECK(connected_); | 
| -  service_->Embed(url, view_id, service_provider.Pass(), | 
| -                  ActionCompletedCallback()); | 
| +  service_->Embed(url, view_id, | 
| +      MakeRequest<ServiceProvider>(service_provider.PassMessagePipe()), | 
| +      ActionCompletedCallback()); | 
| } | 
|  | 
| void ViewManagerClientImpl::AddView(View* view) { | 
| @@ -231,13 +240,6 @@ View* ViewManagerClientImpl::GetViewById(Id id) { | 
| } | 
|  | 
| //////////////////////////////////////////////////////////////////////////////// | 
| -// ViewManagerClientImpl, InterfaceImpl overrides: | 
| - | 
| -void ViewManagerClientImpl::OnConnectionEstablished() { | 
| -  service_ = client(); | 
| -} | 
| - | 
| -//////////////////////////////////////////////////////////////////////////////// | 
| // ViewManagerClientImpl, ViewManagerClient implementation: | 
|  | 
| void ViewManagerClientImpl::OnEmbed( | 
| @@ -395,6 +397,13 @@ void ViewManagerClientImpl::OnActiveWindowChanged(Id old_focused_window, | 
| Id new_focused_window) {} | 
|  | 
| //////////////////////////////////////////////////////////////////////////////// | 
| +// OnConnectionError, private: | 
| +void ViewManagerClientImpl::OnConnectionError() { | 
| +  if (delete_on_error_) | 
| +    delete this; | 
| +} | 
| + | 
| +//////////////////////////////////////////////////////////////////////////////// | 
| // ViewManagerClientImpl, private: | 
|  | 
| void ViewManagerClientImpl::RemoveRoot(View* root) { | 
|  |