From d26d95b41901980282a6fc3d4ef3186cb2349562 Mon Sep 17 00:00:00 2001 From: gterzian <2792687+gterzian@users.noreply.github.com> Date: Thu, 11 Jul 2024 18:35:33 +0800 Subject: add default controller init in stream constructor --- components/script/dom/readablestream.rs | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/components/script/dom/readablestream.rs b/components/script/dom/readablestream.rs index ca07a89d3d1..a3ccb02a43c 100644 --- a/components/script/dom/readablestream.rs +++ b/components/script/dom/readablestream.rs @@ -93,7 +93,7 @@ impl ReadableStream { /// pub fn Constructor( cx: SafeJSContext, - _global: &GlobalScope, + global: &GlobalScope, _proto: Option, underlying_source: Option<*mut JSObject>, _strategy: &QueuingStrategy, @@ -101,7 +101,7 @@ impl ReadableStream { // Step 1 rooted!(in(*cx) let underlying_source_obj = underlying_source.unwrap_or(ptr::null_mut())); // Step 2 - let _underlying_source_dict = if !underlying_source_obj.is_null() { + let underlying_source_dict = if !underlying_source_obj.is_null() { rooted!(in(*cx) let obj_val = ObjectValue(underlying_source_obj.get())); match JsUnderlyingSource::new(cx, obj_val.handle()) { Ok(ConversionResult::Success(val)) => val, @@ -115,8 +115,20 @@ impl ReadableStream { } else { JsUnderlyingSource::empty() }; - // TODO - Err(Error::NotFound) + + let controller = if underlying_source_dict.type_.is_some() { + // TODO: byte controller. + todo!() + } else { + ReadableStreamDefaultController::new( + global, + UnderlyingSourceType::Js(underlying_source_dict), + ) + }; + Ok(ReadableStream::new( + global, + Controller::ReadableStreamDefaultController(controller), + )) } #[allow(crown::unrooted_must_root)] -- cgit v1.2.3