JSReadableStreamReaderCustom.cpp [plain text]
#include "config.h"
#if ENABLE(STREAMS_API)
#include "JSReadableStreamReader.h"
#include "ExceptionCode.h"
#include "JSDOMPromise.h"
#include "JSReadableStream.h"
#include "ReadableJSStream.h"
#include <runtime/Error.h>
#include <runtime/IteratorOperations.h>
#include <wtf/NeverDestroyed.h>
using namespace JSC;
namespace WebCore {
JSValue JSReadableStreamReader::closed(ExecState* exec) const
{
if (m_closedPromiseDeferred)
return m_closedPromiseDeferred->promise();
const_cast<JSReadableStreamReader*>(this)->m_closedPromiseDeferred.set(exec->vm(), JSPromiseDeferred::create(exec, globalObject()));
impl().closed(DeferredWrapper(exec, globalObject(), m_closedPromiseDeferred.get()));
return m_closedPromiseDeferred->promise();
}
EncodedJSValue JSC_HOST_CALL constructJSReadableStreamReader(ExecState* exec)
{
if (!exec->argumentCount())
return throwVMError(exec, createTypeError(exec, ASCIILiteral("ReadableStreamReader constructor takes a ReadableStream as parameter")));
JSReadableStream* stream = jsDynamicCast<JSReadableStream*>(exec->argument(0));
if (!stream)
return throwVMError(exec, createTypeError(exec, ASCIILiteral("ReadableStreamReader constructor parameter is not a ReadableStream")));
if (stream->impl().locked())
return throwVMError(exec, createTypeError(exec, ASCIILiteral("ReadableStreamReader constructor parameter is a locked ReadableStream")));
ExceptionCode ec = 0;
EncodedJSValue value = JSValue::encode(toJS(exec, stream->globalObject(), stream->impl().getReader(ec)));
ASSERT(!ec);
return value;
}
}
#endif