diff options
Diffstat (limited to 'components/script/fetch.rs')
-rw-r--r-- | components/script/fetch.rs | 28 |
1 files changed, 16 insertions, 12 deletions
diff --git a/components/script/fetch.rs b/components/script/fetch.rs index 44c790a354e..9166914cda7 100644 --- a/components/script/fetch.rs +++ b/components/script/fetch.rs @@ -149,7 +149,7 @@ pub fn Fetch( // Step 7. Let responseObject be null. // NOTE: We do initialize the object earlier earlier so we can use it to track errors let response = Response::new(global, can_gc); - response.Headers().set_guard(Guard::Immutable); + response.Headers(can_gc).set_guard(Guard::Immutable); // Step 2. Let requestObject be the result of invoking the initial value of Request as constructor // with input and init as arguments. If this throws an exception, reject p with it and return p. @@ -231,35 +231,39 @@ impl FetchResponseListener for FetchContext { promise.reject_error(Error::Type("Network error occurred".to_string())); self.fetch_promise = Some(TrustedPromise::new(promise)); let response = self.response_object.root(); - response.set_type(DOMResponseType::Error); + response.set_type(DOMResponseType::Error, CanGc::note()); response.error_stream(Error::Type("Network error occurred".to_string())); return; }, // Step 4.2 Ok(metadata) => match metadata { FetchMetadata::Unfiltered(m) => { - fill_headers_with_metadata(self.response_object.root(), m); + fill_headers_with_metadata(self.response_object.root(), m, CanGc::note()); self.response_object .root() - .set_type(DOMResponseType::Default); + .set_type(DOMResponseType::Default, CanGc::note()); }, FetchMetadata::Filtered { filtered, .. } => match filtered { FilteredMetadata::Basic(m) => { - fill_headers_with_metadata(self.response_object.root(), m); - self.response_object.root().set_type(DOMResponseType::Basic); + fill_headers_with_metadata(self.response_object.root(), m, CanGc::note()); + self.response_object + .root() + .set_type(DOMResponseType::Basic, CanGc::note()); }, FilteredMetadata::Cors(m) => { - fill_headers_with_metadata(self.response_object.root(), m); - self.response_object.root().set_type(DOMResponseType::Cors); + fill_headers_with_metadata(self.response_object.root(), m, CanGc::note()); + self.response_object + .root() + .set_type(DOMResponseType::Cors, CanGc::note()); }, FilteredMetadata::Opaque => { self.response_object .root() - .set_type(DOMResponseType::Opaque); + .set_type(DOMResponseType::Opaque, CanGc::note()); }, FilteredMetadata::OpaqueRedirect(url) => { let r = self.response_object.root(); - r.set_type(DOMResponseType::Opaqueredirect); + r.set_type(DOMResponseType::Opaqueredirect, CanGc::note()); r.set_final_url(url); }, }, @@ -317,8 +321,8 @@ impl ResourceTimingListener for FetchContext { } } -fn fill_headers_with_metadata(r: DomRoot<Response>, m: Metadata) { - r.set_headers(m.headers); +fn fill_headers_with_metadata(r: DomRoot<Response>, m: Metadata, can_gc: CanGc) { + r.set_headers(m.headers, can_gc); r.set_status(&m.status); r.set_final_url(m.final_url); r.set_redirected(m.redirected); |