#ifndef SERVICES_NETWORK_TEST_CHUNKED_DATA_PIPE_GETTER_H_
#define SERVICES_NETWORK_TEST_CHUNKED_DATA_PIPE_GETTER_H_
#include <memory>
#include "base/run_loop.h"
#include "mojo/public/cpp/bindings/pending_remote.h"
#include "mojo/public/cpp/bindings/receiver.h"
#include "mojo/public/cpp/system/data_pipe.h"
#include "services/network/public/mojom/chunked_data_pipe_getter.mojom.h"
namespace network {
class TestChunkedDataPipeGetter : public mojom::ChunkedDataPipeGetter {
public:
TestChunkedDataPipeGetter();
TestChunkedDataPipeGetter(const TestChunkedDataPipeGetter&) = delete;
TestChunkedDataPipeGetter& operator=(const TestChunkedDataPipeGetter&) =
delete;
~TestChunkedDataPipeGetter() override;
mojo::PendingRemote<mojom::ChunkedDataPipeGetter> GetDataPipeGetterRemote();
void ClosePipe();
GetSizeCallback WaitForGetSize();
mojo::ScopedDataPipeProducerHandle WaitForStartReading();
private:
void GetSize(GetSizeCallback get_size_callback) override;
void StartReading(mojo::ScopedDataPipeProducerHandle pipe) override;
std::unique_ptr<base::RunLoop> get_size_run_loop_;
std::unique_ptr<base::RunLoop> start_reading_run_loop_;
mojo::Receiver<mojom::ChunkedDataPipeGetter> receiver_{this};
mojo::ScopedDataPipeProducerHandle write_pipe_;
GetSizeCallback get_size_callback_;
bool received_size_callback_ = false;
};
}
#endif