| Index: Source/modules/fetch/DataConsumerHandleTestUtil.cpp
|
| diff --git a/Source/modules/fetch/DataConsumerHandleTestUtil.cpp b/Source/modules/fetch/DataConsumerHandleTestUtil.cpp
|
| index 19c76b9dbae1b1c574896af456652052acbea50c..92da77fe458f48641caa4767dd8be3d852abecc5 100644
|
| --- a/Source/modules/fetch/DataConsumerHandleTestUtil.cpp
|
| +++ b/Source/modules/fetch/DataConsumerHandleTestUtil.cpp
|
| @@ -53,4 +53,59 @@ void DataConsumerHandleTestUtil::Thread::shutdown()
|
| m_waitableEvent->signal();
|
| }
|
|
|
| +class DataConsumerHandleTestUtil::ReplayingHandle::ReaderImpl final : public Reader {
|
| +public:
|
| + ReaderImpl(PassRefPtr<Context> context, Client* client)
|
| + : m_context(context)
|
| + {
|
| + m_context->attachReader(client);
|
| + }
|
| + ~ReaderImpl()
|
| + {
|
| + m_context->detachReader();
|
| + }
|
| +
|
| + Result read(void* buffer, size_t size, Flags flags, size_t* readSize) override
|
| + {
|
| + const void* src = nullptr;
|
| + Result result = beginRead(&src, flags, readSize);
|
| + if (result != Ok)
|
| + return result;
|
| + *readSize = std::min(*readSize, size);
|
| + memcpy(buffer, src, *readSize);
|
| + return endRead(*readSize);
|
| + }
|
| + Result beginRead(const void** buffer, Flags flags, size_t* available) override
|
| + {
|
| + return m_context->beginRead(buffer, flags, available);
|
| + }
|
| + Result endRead(size_t readSize) override
|
| + {
|
| + return m_context->endRead(readSize);
|
| + }
|
| +
|
| +private:
|
| + RefPtr<Context> m_context;
|
| +};
|
| +
|
| +DataConsumerHandleTestUtil::ReplayingHandle::ReplayingHandle()
|
| + : m_context(Context::create())
|
| +{
|
| +}
|
| +
|
| +DataConsumerHandleTestUtil::ReplayingHandle::~ReplayingHandle()
|
| +{
|
| + m_context->detachHandle();
|
| +}
|
| +
|
| +WebDataConsumerHandle::Reader* DataConsumerHandleTestUtil::ReplayingHandle::obtainReaderInternal(Client* client)
|
| +{
|
| + return new ReaderImpl(m_context, client);
|
| +}
|
| +
|
| +void DataConsumerHandleTestUtil::ReplayingHandle::add(const Command& command)
|
| +{
|
| + m_context->add(command);
|
| +}
|
| +
|
| } // namespace blink
|
|
|