diff options
author | Arya Nair <aryaajitnair@gmail.com> | 2025-03-26 00:54:47 +0530 |
---|---|---|
committer | GitHub <noreply@github.com> | 2025-03-25 19:24:47 +0000 |
commit | 80fc64d0631244b4e165ecd1151b079bdfc2a2a4 (patch) | |
tree | b2c9c622234243150e54d6a4b49745c02e3f273b /components/script/dom/readablestream.rs | |
parent | 5a5e49ce47677eab0985cf2407a33051972178a3 (diff) | |
download | servo-80fc64d0631244b4e165ecd1151b079bdfc2a2a4.tar.gz servo-80fc64d0631244b4e165ecd1151b079bdfc2a2a4.zip |
feat: add CanGc argument in get_dictionary_property (#36156)
* feat: add CanGc argument in get_dictionary_property
Signed-off-by: Arya Nair <aryaajitnair@gmail.com>
* feat: add CanGc argument in get_dictionary_property
Signed-off-by: Arya Nair <aryaajitnair@gmail.com>
---------
Signed-off-by: Arya Nair <aryaajitnair@gmail.com>
Diffstat (limited to 'components/script/dom/readablestream.rs')
-rw-r--r-- | components/script/dom/readablestream.rs | 23 |
1 files changed, 17 insertions, 6 deletions
diff --git a/components/script/dom/readablestream.rs b/components/script/dom/readablestream.rs index 6f2fe166820..f8b23072e66 100644 --- a/components/script/dom/readablestream.rs +++ b/components/script/dom/readablestream.rs @@ -197,8 +197,14 @@ impl Callback for PipeTo { } else { rooted!(in(*cx) let object = result.to_object()); rooted!(in(*cx) let mut done = UndefinedValue()); - get_dictionary_property(*cx, object.handle(), "done", done.handle_mut()) - .unwrap() + get_dictionary_property( + *cx, + object.handle(), + "done", + done.handle_mut(), + can_gc, + ) + .unwrap() } }; // If any chunks have been read but not yet written, write them to dest. @@ -347,7 +353,7 @@ impl PipeTo { rooted!(in(*cx) let object = chunk.to_object()); rooted!(in(*cx) let mut bytes = UndefinedValue()); let has_value = - get_dictionary_property(*cx, object.handle(), "value", bytes.handle_mut()) + get_dictionary_property(*cx, object.handle(), "value", bytes.handle_mut(), can_gc) .expect("Chunk should have a value."); if !bytes.is_undefined() && has_value { // Write the chunk. @@ -1932,14 +1938,18 @@ impl ReadableStreamMethods<crate::DomTypeHolder> for ReadableStream { #[allow(unsafe_code)] /// Get the `done` property of an object that a read promise resolved to. -pub(crate) fn get_read_promise_done(cx: SafeJSContext, v: &SafeHandleValue) -> Result<bool, Error> { +pub(crate) fn get_read_promise_done( + cx: SafeJSContext, + v: &SafeHandleValue, + can_gc: CanGc, +) -> Result<bool, Error> { if !v.is_object() { return Err(Error::Type("Unknown format for done property.".to_string())); } unsafe { rooted!(in(*cx) let object = v.to_object()); rooted!(in(*cx) let mut done = UndefinedValue()); - match get_dictionary_property(*cx, object.handle(), "done", done.handle_mut()) { + match get_dictionary_property(*cx, object.handle(), "done", done.handle_mut(), can_gc) { Ok(true) => match bool::from_jsval(*cx, done.handle(), ()) { Ok(ConversionResult::Success(val)) => Ok(val), Ok(ConversionResult::Failure(error)) => Err(Error::Type(error.to_string())), @@ -1956,6 +1966,7 @@ pub(crate) fn get_read_promise_done(cx: SafeJSContext, v: &SafeHandleValue) -> R pub(crate) fn get_read_promise_bytes( cx: SafeJSContext, v: &SafeHandleValue, + can_gc: CanGc, ) -> Result<Vec<u8>, Error> { if !v.is_object() { return Err(Error::Type( @@ -1965,7 +1976,7 @@ pub(crate) fn get_read_promise_bytes( unsafe { rooted!(in(*cx) let object = v.to_object()); rooted!(in(*cx) let mut bytes = UndefinedValue()); - match get_dictionary_property(*cx, object.handle(), "value", bytes.handle_mut()) { + match get_dictionary_property(*cx, object.handle(), "value", bytes.handle_mut(), can_gc) { Ok(true) => { match Vec::<u8>::from_jsval(*cx, bytes.handle(), ConversionBehavior::EnforceRange) { Ok(ConversionResult::Success(val)) => Ok(val), |