// services/proxy_resolver/public/mojom/proxy_resolver.mojom-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_PROXY_RESOLVER_PUBLIC_MOJOM_PROXY_RESOLVER_MOJOM_TEST_UTILS_H_
#define SERVICES_PROXY_RESOLVER_PUBLIC_MOJOM_PROXY_RESOLVER_MOJOM_TEST_UTILS_H_

#include "services/proxy_resolver/public/mojom/proxy_resolver.mojom.h"


namespace proxy_resolver::mojom {


class  HostResolverRequestClientInterceptorForTesting : public HostResolverRequestClient {
  virtual HostResolverRequestClient* GetForwardingInterface() = 0;
  void ReportResult(int32_t error, const std::vector<::net::IPAddress>& result) override;
};
class  HostResolverRequestClientAsyncWaiter {
 public:
  explicit HostResolverRequestClientAsyncWaiter(HostResolverRequestClient* proxy);

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

  ~HostResolverRequestClientAsyncWaiter();

 private:
  HostResolverRequestClient* const proxy_;
};


class  ProxyResolverInterceptorForTesting : public ProxyResolver {
  virtual ProxyResolver* GetForwardingInterface() = 0;
  void GetProxyForUrl(const ::GURL& url, const ::net::NetworkAnonymizationKey& network_anonymization_key, ::mojo::PendingRemote<ProxyResolverRequestClient> client) override;
};
class  ProxyResolverAsyncWaiter {
 public:
  explicit ProxyResolverAsyncWaiter(ProxyResolver* proxy);

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

  ~ProxyResolverAsyncWaiter();

 private:
  ProxyResolver* const proxy_;
};


class  ProxyResolverRequestClientInterceptorForTesting : public ProxyResolverRequestClient {
  virtual ProxyResolverRequestClient* GetForwardingInterface() = 0;
  void ReportResult(int32_t error, const ::net::ProxyInfo& proxy_info) override;
  void Alert(const std::string& error) override;
  void OnError(int32_t line_number, const std::string& error) override;
  void ResolveDns(const std::string& host, ::net::ProxyResolveDnsOperation operation, const ::net::NetworkAnonymizationKey& network_anonymization_key, ::mojo::PendingRemote<HostResolverRequestClient> client) override;
};
class  ProxyResolverRequestClientAsyncWaiter {
 public:
  explicit ProxyResolverRequestClientAsyncWaiter(ProxyResolverRequestClient* proxy);

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

  ~ProxyResolverRequestClientAsyncWaiter();

 private:
  ProxyResolverRequestClient* const proxy_;
};


class  ProxyResolverFactoryInterceptorForTesting : public ProxyResolverFactory {
  virtual ProxyResolverFactory* GetForwardingInterface() = 0;
  void CreateResolver(const std::string& pac_script, ::mojo::PendingReceiver<ProxyResolver> receiver, ::mojo::PendingRemote<ProxyResolverFactoryRequestClient> client) override;
};
class  ProxyResolverFactoryAsyncWaiter {
 public:
  explicit ProxyResolverFactoryAsyncWaiter(ProxyResolverFactory* proxy);

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

  ~ProxyResolverFactoryAsyncWaiter();

 private:
  ProxyResolverFactory* const proxy_;
};


class  ProxyResolverFactoryRequestClientInterceptorForTesting : public ProxyResolverFactoryRequestClient {
  virtual ProxyResolverFactoryRequestClient* GetForwardingInterface() = 0;
  void ReportResult(int32_t error) override;
  void Alert(const std::string& error) override;
  void OnError(int32_t line_number, const std::string& error) override;
  void ResolveDns(const std::string& host, ::net::ProxyResolveDnsOperation operation, const ::net::NetworkAnonymizationKey& network_anonymization_key, ::mojo::PendingRemote<HostResolverRequestClient> client) override;
};
class  ProxyResolverFactoryRequestClientAsyncWaiter {
 public:
  explicit ProxyResolverFactoryRequestClientAsyncWaiter(ProxyResolverFactoryRequestClient* proxy);

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

  ~ProxyResolverFactoryRequestClientAsyncWaiter();

 private:
  ProxyResolverFactoryRequestClient* const proxy_;
};




}  // proxy_resolver::mojom

#endif  // SERVICES_PROXY_RESOLVER_PUBLIC_MOJOM_PROXY_RESOLVER_MOJOM_TEST_UTILS_H_