
This is a concept fully defined in the Web IDL spec and doesn't belong in the DOM directory/namespace - not even DOMException, despite the name :^)
71 lines
2 KiB
C++
71 lines
2 KiB
C++
/*
|
|
* Copyright (c) 2022, Linus Groh <linusg@serenityos.org>
|
|
*
|
|
* SPDX-License-Identifier: BSD-2-Clause
|
|
*/
|
|
|
|
#include <LibWeb/HTML/Window.h>
|
|
#include <LibWeb/Streams/AbstractOperations.h>
|
|
#include <LibWeb/Streams/ReadableStream.h>
|
|
|
|
namespace Web::Streams {
|
|
|
|
// https://streams.spec.whatwg.org/#rs-constructor
|
|
WebIDL::ExceptionOr<JS::NonnullGCPtr<ReadableStream>> ReadableStream::create_with_global_object(HTML::Window& window)
|
|
{
|
|
auto* readable_stream = window.heap().allocate<ReadableStream>(window.realm(), window);
|
|
|
|
return JS::NonnullGCPtr { *readable_stream };
|
|
}
|
|
|
|
ReadableStream::ReadableStream(HTML::Window& window)
|
|
: PlatformObject(window.realm())
|
|
{
|
|
set_prototype(&window.cached_web_prototype("ReadableStream"));
|
|
}
|
|
|
|
ReadableStream::~ReadableStream() = default;
|
|
|
|
void ReadableStream::visit_edges(Cell::Visitor& visitor)
|
|
{
|
|
Base::visit_edges(visitor);
|
|
visitor.visit(m_controller);
|
|
visitor.visit(m_reader);
|
|
visitor.visit(m_stored_error);
|
|
}
|
|
|
|
// https://streams.spec.whatwg.org/#readablestream-locked
|
|
bool ReadableStream::is_readable() const
|
|
{
|
|
// A ReadableStream stream is readable if stream.[[state]] is "readable".
|
|
return m_state == State::Readable;
|
|
}
|
|
|
|
// https://streams.spec.whatwg.org/#readablestream-closed
|
|
bool ReadableStream::is_closed() const
|
|
{
|
|
// A ReadableStream stream is closed if stream.[[state]] is "closed".
|
|
return m_state == State::Closed;
|
|
}
|
|
|
|
// https://streams.spec.whatwg.org/#readablestream-errored
|
|
bool ReadableStream::is_errored() const
|
|
{
|
|
// A ReadableStream stream is errored if stream.[[state]] is "errored".
|
|
return m_state == State::Errored;
|
|
}
|
|
// https://streams.spec.whatwg.org/#readablestream-locked
|
|
bool ReadableStream::is_locked() const
|
|
{
|
|
// A ReadableStream stream is locked if ! IsReadableStreamLocked(stream) returns true.
|
|
return is_readable_stream_locked(*this);
|
|
}
|
|
|
|
// https://streams.spec.whatwg.org/#is-readable-stream-disturbed
|
|
bool ReadableStream::is_disturbed() const
|
|
{
|
|
// A ReadableStream stream is disturbed if stream.[[disturbed]] is true.
|
|
return m_disturbed;
|
|
}
|
|
|
|
}
|