Index: mojo/services/network/network_service_impl.cc |
diff --git a/mojo/services/network/network_service_impl.cc b/mojo/services/network/network_service_impl.cc |
index b86bcec5a3269157bd5381364fc255552814b44b..6026686e60bb4de47c5cbb7a079aa1525519b23f 100644 |
--- a/mojo/services/network/network_service_impl.cc |
+++ b/mojo/services/network/network_service_impl.cc |
@@ -16,9 +16,11 @@ |
namespace mojo { |
-NetworkServiceImpl::NetworkServiceImpl(ApplicationConnection* connection, |
+NetworkServiceImpl::NetworkServiceImpl(InterfaceRequest<NetworkService> request, |
+ ApplicationConnection* connection, |
NetworkContext* context) |
- : context_(context), |
+ : binding_(this, request.Pass()), |
+ context_(context), |
origin_(GURL(connection->GetRemoteApplicationURL()).GetOrigin()) { |
} |
@@ -41,25 +43,27 @@ void NetworkServiceImpl::CreateURLLoader(InterfaceRequest<URLLoader> loader) { |
} |
void NetworkServiceImpl::GetCookieStore(InterfaceRequest<CookieStore> store) { |
- BindToRequest(new CookieStoreImpl(context_, origin_), &store); |
+ new CookieStoreImpl(store.Pass(), context_, origin_); |
} |
void NetworkServiceImpl::CreateWebSocket(InterfaceRequest<WebSocket> socket) { |
- BindToRequest(new WebSocketImpl(context_), &socket); |
+ new WebSocketImpl(socket.Pass(), context_); |
} |
void NetworkServiceImpl::CreateTCPBoundSocket( |
NetAddressPtr local_address, |
InterfaceRequest<TCPBoundSocket> bound_socket, |
const CreateTCPBoundSocketCallback& callback) { |
- scoped_ptr<TCPBoundSocketImpl> bound(new TCPBoundSocketImpl); |
+ scoped_ptr<TCPBoundSocketImpl> bound( |
+ new TCPBoundSocketImpl(bound_socket.Pass())); |
int net_error = bound->Bind(local_address.Pass()); |
if (net_error != net::OK) { |
callback.Run(MakeNetworkError(net_error), NetAddressPtr()); |
return; |
} |
NetAddressPtr resulting_local_address(bound->GetLocalAddress()); |
- BindToRequest(bound.release(), &bound_socket); |
+ // Release the implementation and let its lifecycle be managed by the pipe. |
+ ignore_result(bound.release()); |
callback.Run(MakeNetworkError(net::OK), resulting_local_address.Pass()); |
} |