// services/network/public/mojom/cert_verifier_service.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_NETWORK_PUBLIC_MOJOM_CERT_VERIFIER_SERVICE_MOJOM_TEST_UTILS_H_
#define SERVICES_NETWORK_PUBLIC_MOJOM_CERT_VERIFIER_SERVICE_MOJOM_TEST_UTILS_H_

#include "services/network/public/mojom/cert_verifier_service.mojom.h"


namespace cert_verifier::mojom {


class  URLLoaderFactoryConnectorInterceptorForTesting : public URLLoaderFactoryConnector {
  virtual URLLoaderFactoryConnector* GetForwardingInterface() = 0;
  void CreateURLLoaderFactory(::mojo::PendingReceiver<::network::mojom::URLLoaderFactory> url_loader_factory) override;
};
class  URLLoaderFactoryConnectorAsyncWaiter {
 public:
  explicit URLLoaderFactoryConnectorAsyncWaiter(URLLoaderFactoryConnector* proxy);

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

  ~URLLoaderFactoryConnectorAsyncWaiter();

 private:
  URLLoaderFactoryConnector* const proxy_;
};


class  CertVerifierServiceInterceptorForTesting : public CertVerifierService {
  virtual CertVerifierService* GetForwardingInterface() = 0;
  void EnableNetworkAccess(::mojo::PendingRemote<::network::mojom::URLLoaderFactory> url_loader_factory, ::mojo::PendingRemote<URLLoaderFactoryConnector> reconnector) override;
  void Verify(const ::net::CertVerifier::RequestParams& params, const ::net::NetLogSource& net_log_source, ::mojo::PendingRemote<CertVerifierRequest> cert_verifier_request) override;
  void Verify2QwacBinding(const std::string& binding, const std::string& hostname, const ::scoped_refptr<::net::X509Certificate>& tls_certificate, const ::net::NetLogSource& net_log_source, Verify2QwacBindingCallback callback) override;
  void SetConfig(const ::net::CertVerifier::Config& config) override;
};
class  CertVerifierServiceAsyncWaiter {
 public:
  explicit CertVerifierServiceAsyncWaiter(CertVerifierService* proxy);

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

  ~CertVerifierServiceAsyncWaiter();
  void Verify2QwacBinding(
      const std::string& binding, const std::string& hostname, const ::scoped_refptr<::net::X509Certificate>& tls_certificate, const ::net::NetLogSource& net_log_source, ::scoped_refptr<::net::X509Certificate>* out_verified_cert);
  ::scoped_refptr<::net::X509Certificate> Verify2QwacBinding(const std::string& binding, const std::string& hostname, const ::scoped_refptr<::net::X509Certificate>& tls_certificate, const ::net::NetLogSource& net_log_source);

 private:
  CertVerifierService* const proxy_;
};


class  CertVerifierServiceClientInterceptorForTesting : public CertVerifierServiceClient {
  virtual CertVerifierServiceClient* GetForwardingInterface() = 0;
  void OnCertVerifierChanged() override;
};
class  CertVerifierServiceClientAsyncWaiter {
 public:
  explicit CertVerifierServiceClientAsyncWaiter(CertVerifierServiceClient* proxy);

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

  ~CertVerifierServiceClientAsyncWaiter();

 private:
  CertVerifierServiceClient* const proxy_;
};


class  CertVerifierRequestInterceptorForTesting : public CertVerifierRequest {
  virtual CertVerifierRequest* GetForwardingInterface() = 0;
  void Complete(const ::net::CertVerifyResult& result, int32_t net_error) override;
};
class  CertVerifierRequestAsyncWaiter {
 public:
  explicit CertVerifierRequestAsyncWaiter(CertVerifierRequest* proxy);

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

  ~CertVerifierRequestAsyncWaiter();

 private:
  CertVerifierRequest* const proxy_;
};




}  // cert_verifier::mojom

#endif  // SERVICES_NETWORK_PUBLIC_MOJOM_CERT_VERIFIER_SERVICE_MOJOM_TEST_UTILS_H_