|
@@ -39,4 +39,24 @@ void ReadableStreamBYOBRequest::visit_edges(Cell::Visitor& visitor)
|
|
|
visitor.visit(m_view);
|
|
|
}
|
|
|
|
|
|
+WebIDL::ExceptionOr<void> ReadableStreamBYOBRequest::respond(u64 bytes_written)
|
|
|
+{
|
|
|
+ // 1. If this.[[controller]] is undefined, throw a TypeError exception.
|
|
|
+ if (!m_controller)
|
|
|
+ return WebIDL::SimpleException { WebIDL::SimpleExceptionType::TypeError, "Controller is undefined"_string };
|
|
|
+
|
|
|
+ // 2. If ! IsDetachedBuffer(this.[[view]].[[ArrayBuffer]]) is true, throw a TypeError exception.
|
|
|
+ if (m_view->viewed_array_buffer()->is_detached())
|
|
|
+ return WebIDL::SimpleException { WebIDL::SimpleExceptionType::TypeError, "Unable to respond to detached ArrayBuffer"_string };
|
|
|
+
|
|
|
+ // 3. Assert: this.[[view]].[[ByteLength]] > 0.
|
|
|
+ VERIFY(m_view->viewed_array_buffer()->byte_length() > 0);
|
|
|
+
|
|
|
+ // 4. Assert: this.[[view]].[[ViewedArrayBuffer]].[[ByteLength]] > 0.
|
|
|
+ VERIFY(m_view->viewed_array_buffer()->byte_length() > 0);
|
|
|
+
|
|
|
+ // 5. Perform ? ReadableByteStreamControllerRespond(this.[[controller]], bytesWritten).
|
|
|
+ return readable_byte_stream_controller_respond(*m_controller, bytes_written);
|
|
|
+}
|
|
|
+
|
|
|
}
|