Supervised user whitelists: Cleanup
[chromium-blink-merge.git] / mojo / services / network / network_service_impl.cc
blobed4db49930c1425e4775b12c00f84958ff9bd866
1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 #include "mojo/services/network/network_service_impl.h"
7 #include "mojo/services/network/cookie_store_impl.h"
8 #include "mojo/services/network/net_adapters.h"
9 #include "mojo/services/network/tcp_bound_socket_impl.h"
10 #include "mojo/services/network/udp_socket_impl.h"
11 #include "mojo/services/network/url_loader_impl.h"
12 #include "mojo/services/network/web_socket_impl.h"
13 #include "third_party/mojo/src/mojo/public/cpp/application/application_connection.h"
15 namespace mojo {
17 NetworkServiceImpl::NetworkServiceImpl(ApplicationConnection* connection,
18 NetworkContext* context)
19 : context_(context),
20 origin_(GURL(connection->GetRemoteApplicationURL()).GetOrigin()) {
23 NetworkServiceImpl::~NetworkServiceImpl() {
26 void NetworkServiceImpl::CreateURLLoader(InterfaceRequest<URLLoader> loader) {
27 // TODO(darin): Plumb origin_. Use for CORS.
28 // The loader will delete itself when the pipe is closed, unless a request is
29 // in progress. In which case, the loader will delete itself when the request
30 // is finished.
31 new URLLoaderImpl(context_, loader.Pass());
34 void NetworkServiceImpl::GetCookieStore(InterfaceRequest<CookieStore> store) {
35 BindToRequest(new CookieStoreImpl(context_, origin_), &store);
38 void NetworkServiceImpl::CreateWebSocket(InterfaceRequest<WebSocket> socket) {
39 BindToRequest(new WebSocketImpl(context_), &socket);
42 void NetworkServiceImpl::CreateTCPBoundSocket(
43 NetAddressPtr local_address,
44 InterfaceRequest<TCPBoundSocket> bound_socket,
45 const Callback<void(NetworkErrorPtr, NetAddressPtr)>& callback) {
46 scoped_ptr<TCPBoundSocketImpl> bound(new TCPBoundSocketImpl);
47 int net_error = bound->Bind(local_address.Pass());
48 if (net_error != net::OK) {
49 callback.Run(MakeNetworkError(net_error), NetAddressPtr());
50 return;
52 NetAddressPtr resulting_local_address(bound->GetLocalAddress());
53 BindToRequest(bound.release(), &bound_socket);
54 callback.Run(MakeNetworkError(net::OK), resulting_local_address.Pass());
57 void NetworkServiceImpl::CreateTCPConnectedSocket(
58 NetAddressPtr remote_address,
59 ScopedDataPipeConsumerHandle send_stream,
60 ScopedDataPipeProducerHandle receive_stream,
61 InterfaceRequest<TCPConnectedSocket> client_socket,
62 const Callback<void(NetworkErrorPtr, NetAddressPtr)>& callback) {
63 // TODO(brettw) implement this. We need to know what type of socket to use
64 // so we can create the right one (i.e. to pass to TCPSocket::Open) before
65 // doing the connect.
66 callback.Run(MakeNetworkError(net::ERR_NOT_IMPLEMENTED), NetAddressPtr());
69 void NetworkServiceImpl::CreateUDPSocket(InterfaceRequest<UDPSocket> request) {
70 // The lifetime of this UDPSocketImpl is bound to that of the underlying pipe.
71 new UDPSocketImpl(request.Pass());
74 } // namespace mojo