// services/network/public/mojom/proxy_resolving_socket.mojom-blink-test-utils.h is auto generated by mojom_bindings_generator.py, do not edit

// Copyright 2019 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#ifndef SERVICES_NETWORK_PUBLIC_MOJOM_PROXY_RESOLVING_SOCKET_MOJOM_BLINK_TEST_UTILS_H_
#define SERVICES_NETWORK_PUBLIC_MOJOM_PROXY_RESOLVING_SOCKET_MOJOM_BLINK_TEST_UTILS_H_

#include "services/network/public/mojom/proxy_resolving_socket.mojom-blink.h"
#include "third_party/blink/public/platform/web_common.h"


namespace network::mojom::blink {


class BLINK_PLATFORM_EXPORT ProxyResolvingSocketInterceptorForTesting : public ProxyResolvingSocket {
  virtual ProxyResolvingSocket* GetForwardingInterface() = 0;
  void UpgradeToTLS(const ::net::HostPortPair& host_port_pair, const ::net::MutableNetworkTrafficAnnotationTag& traffic_annotation, ::mojo::PendingReceiver<::network::mojom::blink::TLSClientSocket> receiver, ::mojo::PendingRemote<::network::mojom::blink::SocketObserver> observer, UpgradeToTLSCallback callback) override;
};
class BLINK_PLATFORM_EXPORT ProxyResolvingSocketAsyncWaiter {
 public:
  explicit ProxyResolvingSocketAsyncWaiter(ProxyResolvingSocket* proxy);

  ProxyResolvingSocketAsyncWaiter(const ProxyResolvingSocketAsyncWaiter&) = delete;
  ProxyResolvingSocketAsyncWaiter& operator=(const ProxyResolvingSocketAsyncWaiter&) = delete;

  ~ProxyResolvingSocketAsyncWaiter();
  void UpgradeToTLS(
      const ::net::HostPortPair& host_port_pair, const ::net::MutableNetworkTrafficAnnotationTag& traffic_annotation, ::mojo::PendingReceiver<::network::mojom::blink::TLSClientSocket> receiver, ::mojo::PendingRemote<::network::mojom::blink::SocketObserver> observer, int32_t* out_net_error, ::mojo::ScopedDataPipeConsumerHandle* out_receive_stream, ::mojo::ScopedDataPipeProducerHandle* out_send_stream);
  

 private:
  ProxyResolvingSocket* const proxy_;
};


class BLINK_PLATFORM_EXPORT ProxyResolvingSocketFactoryInterceptorForTesting : public ProxyResolvingSocketFactory {
  virtual ProxyResolvingSocketFactory* GetForwardingInterface() = 0;
  void CreateProxyResolvingSocket(const ::blink::KURL& url, ::network::mojom::blink::NetworkAnonymizationKeyPtr network_anonymization_key, ProxyResolvingSocketOptionsPtr options, const ::net::MutableNetworkTrafficAnnotationTag& traffic_annotation, ::mojo::PendingReceiver<ProxyResolvingSocket> socket, ::mojo::PendingRemote<::network::mojom::blink::SocketObserver> observer, CreateProxyResolvingSocketCallback callback) override;
};
class BLINK_PLATFORM_EXPORT ProxyResolvingSocketFactoryAsyncWaiter {
 public:
  explicit ProxyResolvingSocketFactoryAsyncWaiter(ProxyResolvingSocketFactory* proxy);

  ProxyResolvingSocketFactoryAsyncWaiter(const ProxyResolvingSocketFactoryAsyncWaiter&) = delete;
  ProxyResolvingSocketFactoryAsyncWaiter& operator=(const ProxyResolvingSocketFactoryAsyncWaiter&) = delete;

  ~ProxyResolvingSocketFactoryAsyncWaiter();
  void CreateProxyResolvingSocket(
      const ::blink::KURL& url, ::network::mojom::blink::NetworkAnonymizationKeyPtr network_anonymization_key, ProxyResolvingSocketOptionsPtr options, const ::net::MutableNetworkTrafficAnnotationTag& traffic_annotation, ::mojo::PendingReceiver<ProxyResolvingSocket> socket, ::mojo::PendingRemote<::network::mojom::blink::SocketObserver> observer, int32_t* out_result, std::optional<::net::IPEndPoint>* out_local_addr, std::optional<::net::IPEndPoint>* out_peer_addr, ::mojo::ScopedDataPipeConsumerHandle* out_receive_stream, ::mojo::ScopedDataPipeProducerHandle* out_send_stream);
  

 private:
  ProxyResolvingSocketFactory* const proxy_;
};




}  // network::mojom::blink

#endif  // SERVICES_NETWORK_PUBLIC_MOJOM_PROXY_RESOLVING_SOCKET_MOJOM_BLINK_TEST_UTILS_H_