refactor: add CanGc as argument to Promise::reject_native (#35640)

Signed-off-by: Yerkebulan Tulibergenov <yerkebulan@gmail.com>
This commit is contained in:
Yerkebulan Tulibergenov 2025-02-24 19:58:36 -08:00 committed by GitHub
parent 3c3b6cfdc4
commit 31199076ec
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
18 changed files with 148 additions and 136 deletions

View file

@ -281,14 +281,14 @@ struct TransmitBodyPromiseHandler {
impl Callback for TransmitBodyPromiseHandler {
/// Step 5 of <https://fetch.spec.whatwg.org/#concept-request-transmit-body>
fn callback(&self, cx: JSContext, v: HandleValue, _realm: InRealm, _can_gc: CanGc) {
fn callback(&self, cx: JSContext, v: HandleValue, _realm: InRealm, can_gc: CanGc) {
let is_done = match get_read_promise_done(cx, &v) {
Ok(is_done) => is_done,
Err(_) => {
// Step 5.5, the "otherwise" steps.
// TODO: terminate fetch.
let _ = self.control_sender.send(BodyChunkRequest::Done);
return self.stream.stop_reading();
return self.stream.stop_reading(can_gc);
},
};
@ -296,7 +296,7 @@ impl Callback for TransmitBodyPromiseHandler {
// Step 5.3, the "done" steps.
// TODO: queue a fetch task on request to process request end-of-body.
let _ = self.control_sender.send(BodyChunkRequest::Done);
return self.stream.stop_reading();
return self.stream.stop_reading(can_gc);
}
let chunk = match get_read_promise_bytes(cx, &v) {
@ -304,7 +304,7 @@ impl Callback for TransmitBodyPromiseHandler {
Err(_) => {
// Step 5.5, the "otherwise" steps.
let _ = self.control_sender.send(BodyChunkRequest::Error);
return self.stream.stop_reading();
return self.stream.stop_reading(can_gc);
},
};
@ -330,10 +330,10 @@ struct TransmitBodyPromiseRejectionHandler {
impl Callback for TransmitBodyPromiseRejectionHandler {
/// <https://fetch.spec.whatwg.org/#concept-request-transmit-body>
fn callback(&self, _cx: JSContext, _v: HandleValue, _realm: InRealm, _can_gc: CanGc) {
fn callback(&self, _cx: JSContext, _v: HandleValue, _realm: InRealm, can_gc: CanGc) {
// Step 5.4, the "rejection" steps.
let _ = self.control_sender.send(BodyChunkRequest::Error);
self.stream.stop_reading();
self.stream.stop_reading(can_gc);
}
}
@ -640,7 +640,9 @@ impl ConsumeBodyPromiseHandler {
FetchedData::FormData(f) => self.result_promise.resolve_native(&f, can_gc),
FetchedData::Bytes(b) => self.result_promise.resolve_native(&b, can_gc),
FetchedData::ArrayBuffer(a) => self.result_promise.resolve_native(&a, can_gc),
FetchedData::JSException(e) => self.result_promise.reject_native(&e.handle()),
FetchedData::JSException(e) => {
self.result_promise.reject_native(&e.handle(), can_gc)
},
};
},
Err(err) => self.result_promise.reject_error(err),
@ -661,7 +663,7 @@ impl Callback for ConsumeBodyPromiseHandler {
let is_done = match get_read_promise_done(cx, &v) {
Ok(is_done) => is_done,
Err(err) => {
stream.stop_reading();
stream.stop_reading(can_gc);
// When read is fulfilled with a value that doesn't matches with neither of the above patterns.
return self.result_promise.reject_error(err);
},
@ -674,7 +676,7 @@ impl Callback for ConsumeBodyPromiseHandler {
let chunk = match get_read_promise_bytes(cx, &v) {
Ok(chunk) => chunk,
Err(err) => {
stream.stop_reading();
stream.stop_reading(can_gc);
// When read is fulfilled with a value that matches with neither of the above patterns
return self.result_promise.reject_error(err);
},