blob: 6a45d075b46253b2a2a1cfcd25729e1bcb534eb0 [file]
// Copyright 2016 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef FormDataBytesConsumer_h
#define FormDataBytesConsumer_h
#include "modules/ModulesExport.h"
#include "modules/fetch/BytesConsumer.h"
#include "platform/heap/Handle.h"
#include "wtf/Forward.h"
#include "wtf/PassRefPtr.h"
namespace blink {
class DOMArrayBuffer;
class DOMArrayBufferView;
class EncodedFormData;
class FormDataBytesConsumer final : public BytesConsumer {
public:
explicit MODULES_EXPORT FormDataBytesConsumer(const String&);
explicit MODULES_EXPORT FormDataBytesConsumer(DOMArrayBuffer*);
explicit MODULES_EXPORT FormDataBytesConsumer(DOMArrayBufferView*);
MODULES_EXPORT FormDataBytesConsumer(const void* data, size_t);
MODULES_EXPORT FormDataBytesConsumer(ExecutionContext*,
PassRefPtr<EncodedFormData>);
MODULES_EXPORT static FormDataBytesConsumer* createForTesting(
ExecutionContext* executionContext,
PassRefPtr<EncodedFormData> formData,
BytesConsumer* consumer) {
return new FormDataBytesConsumer(executionContext, std::move(formData),
consumer);
}
// BytesConsumer implementation
Result beginRead(const char** buffer, size_t* available) override {
return m_impl->beginRead(buffer, available);
}
Result endRead(size_t readSize) override { return m_impl->endRead(readSize); }
PassRefPtr<BlobDataHandle> drainAsBlobDataHandle(
BlobSizePolicy policy) override {
return m_impl->drainAsBlobDataHandle(policy);
}
PassRefPtr<EncodedFormData> drainAsFormData() override {
return m_impl->drainAsFormData();
}
void setClient(BytesConsumer::Client* client) override {
m_impl->setClient(client);
}
void clearClient() override { m_impl->clearClient(); }
void cancel() override { m_impl->cancel(); }
PublicState getPublicState() const override {
return m_impl->getPublicState();
}
Error getError() const override { return m_impl->getError(); }
String debugName() const override { return m_impl->debugName(); }
DEFINE_INLINE_TRACE() {
visitor->trace(m_impl);
BytesConsumer::trace(visitor);
}
private:
MODULES_EXPORT FormDataBytesConsumer(ExecutionContext*,
PassRefPtr<EncodedFormData>,
BytesConsumer*);
const Member<BytesConsumer> m_impl;
};
} // namespace blink
#endif // FormDataBytesConsumer_h