Browse Source

LibWeb: Implement releaseLock interface for ReadableStreamBYOBReader

Shannon Booth 1 year ago
parent
commit
6e9aeccf90

+ 11 - 0
Userland/Libraries/LibWeb/Streams/ReadableStreamBYOBReader.cpp

@@ -30,6 +30,17 @@ WebIDL::ExceptionOr<JS::NonnullGCPtr<ReadableStreamBYOBReader>> ReadableStreamBY
     return reader;
 }
 
+// https://streams.spec.whatwg.org/#byob-reader-release-lock
+void ReadableStreamBYOBReader::release_lock()
+{
+    // 1. If this.[[stream]] is undefined, return.
+    if (!m_stream)
+        return;
+
+    // 2. Perform ! ReadableStreamBYOBReaderRelease(this).
+    readable_stream_byob_reader_release(*this);
+}
+
 void ReadableStreamBYOBReader::visit_edges(Cell::Visitor& visitor)
 {
     Base::visit_edges(visitor);

+ 2 - 0
Userland/Libraries/LibWeb/Streams/ReadableStreamBYOBReader.h

@@ -41,6 +41,8 @@ public:
 
     virtual ~ReadableStreamBYOBReader() override = default;
 
+    void release_lock();
+
     Vector<NonnullRefPtr<ReadIntoRequest>>& read_into_requests() { return m_read_into_requests; }
 
 private:

+ 1 - 1
Userland/Libraries/LibWeb/Streams/ReadableStreamBYOBReader.idl

@@ -8,6 +8,6 @@ interface ReadableStreamBYOBReader {
 
     // FIXME: Implement
     // Promise<ReadableStreamReadResult> read(ArrayBufferView view);
-    // undefined releaseLock();
+    undefined releaseLock();
 };
 ReadableStreamBYOBReader includes ReadableStreamGenericReader;