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

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


namespace cert_verifier::mojom::blink {


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

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

  ~URLLoaderFactoryConnectorAsyncWaiter();

 private:
  URLLoaderFactoryConnector* const proxy_;
};


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

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

  ~CertVerifierServiceAsyncWaiter();
  void Verify2QwacBinding(
      const ::blink::String& binding, const ::blink::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 ::blink::String& binding, const ::blink::String& hostname, const ::scoped_refptr<::net::X509Certificate>& tls_certificate, const ::net::NetLogSource& net_log_source);

 private:
  CertVerifierService* const proxy_;
};


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

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

  ~CertVerifierServiceClientAsyncWaiter();

 private:
  CertVerifierServiceClient* const proxy_;
};


class BLINK_PLATFORM_EXPORT CertVerifierRequestInterceptorForTesting : public CertVerifierRequest {
  virtual CertVerifierRequest* GetForwardingInterface() = 0;
  void Complete(::network::mojom::blink::CertVerifyResultPtr result, int32_t net_error) override;
};
class BLINK_PLATFORM_EXPORT CertVerifierRequestAsyncWaiter {
 public:
  explicit CertVerifierRequestAsyncWaiter(CertVerifierRequest* proxy);

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

  ~CertVerifierRequestAsyncWaiter();

 private:
  CertVerifierRequest* const proxy_;
};




}  // cert_verifier::mojom::blink

#endif  // SERVICES_NETWORK_PUBLIC_MOJOM_CERT_VERIFIER_SERVICE_MOJOM_BLINK_TEST_UTILS_H_