// third_party/blink/public/mojom/blob/blob_registry.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 THIRD_PARTY_BLINK_PUBLIC_MOJOM_BLOB_BLOB_REGISTRY_MOJOM_BLINK_TEST_UTILS_H_
#define THIRD_PARTY_BLINK_PUBLIC_MOJOM_BLOB_BLOB_REGISTRY_MOJOM_BLINK_TEST_UTILS_H_

#include "third_party/blink/public/mojom/blob/blob_registry.mojom-blink.h"
#include "third_party/blink/renderer/platform/platform_export.h"


namespace blink::mojom::blink {


class PLATFORM_EXPORT ProgressClientInterceptorForTesting : public ProgressClient {
  virtual ProgressClient* GetForwardingInterface() = 0;
  void OnProgress(uint64_t delta) override;
};
class PLATFORM_EXPORT ProgressClientAsyncWaiter {
 public:
  explicit ProgressClientAsyncWaiter(ProgressClient* proxy);

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

  ~ProgressClientAsyncWaiter();

 private:
  ProgressClient* const proxy_;
};


class PLATFORM_EXPORT BlobRegistryInterceptorForTesting : public BlobRegistry {
  virtual BlobRegistry* GetForwardingInterface() = 0;
  void Register(::mojo::PendingReceiver<::blink::mojom::blink::Blob> blob, const ::blink::String& uuid, const ::blink::String& content_type, const ::blink::String& content_disposition, ::blink::Vector<::blink::mojom::blink::DataElementPtr> elements, RegisterCallback callback) override;
  void RegisterFromStream(const ::blink::String& content_type, const ::blink::String& content_disposition, uint64_t length_hint, ::mojo::ScopedDataPipeConsumerHandle data, ::mojo::PendingAssociatedRemote<ProgressClient> progress_client, RegisterFromStreamCallback callback) override;
};
class PLATFORM_EXPORT BlobRegistryAsyncWaiter {
 public:
  explicit BlobRegistryAsyncWaiter(BlobRegistry* proxy);

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

  ~BlobRegistryAsyncWaiter();
  void Register(
      ::mojo::PendingReceiver<::blink::mojom::blink::Blob> blob, const ::blink::String& uuid, const ::blink::String& content_type, const ::blink::String& content_disposition, ::blink::Vector<::blink::mojom::blink::DataElementPtr> elements);
  
  void RegisterFromStream(
      const ::blink::String& content_type, const ::blink::String& content_disposition, uint64_t length_hint, ::mojo::ScopedDataPipeConsumerHandle data, ::mojo::PendingAssociatedRemote<ProgressClient> progress_client, ::scoped_refptr<::blink::BlobDataHandle>* out_blob);
  ::scoped_refptr<::blink::BlobDataHandle> RegisterFromStream(const ::blink::String& content_type, const ::blink::String& content_disposition, uint64_t length_hint, ::mojo::ScopedDataPipeConsumerHandle data, ::mojo::PendingAssociatedRemote<ProgressClient> progress_client);

 private:
  BlobRegistry* const proxy_;
};




}  // blink::mojom::blink

#endif  // THIRD_PARTY_BLINK_PUBLIC_MOJOM_BLOB_BLOB_REGISTRY_MOJOM_BLINK_TEST_UTILS_H_