diff --git a/components/script/body.rs b/components/script/body.rs index 21c4d49b58c..435f755aa07 100644 --- a/components/script/body.rs +++ b/components/script/body.rs @@ -27,7 +27,8 @@ pub enum BodyType { Blob, FormData, Json, - Text + Text, + ArrayBuffer } pub enum FetchedData { diff --git a/components/script/dom/request.rs b/components/script/dom/request.rs index 85998533ae9..b3bb2f1afe1 100644 --- a/components/script/dom/request.rs +++ b/components/script/dom/request.rs @@ -611,6 +611,12 @@ impl RequestMethods for Request { fn Json(&self) -> Rc { consume_body(self, BodyType::Json) } + + #[allow(unrooted_must_root)] + // https://fetch.spec.whatwg.org/#dom-body-arraybuffer + fn ArrayBuffer(&self) -> Rc { + consume_body(self, BodyType::ArrayBuffer) + } } impl BodyOperations for Request { diff --git a/components/script/dom/response.rs b/components/script/dom/response.rs index e4af7f48187..ff806a5bf8f 100644 --- a/components/script/dom/response.rs +++ b/components/script/dom/response.rs @@ -354,6 +354,12 @@ impl ResponseMethods for Response { fn Json(&self) -> Rc { consume_body(self, BodyType::Json) } + + #[allow(unrooted_must_root)] + // https://fetch.spec.whatwg.org/#dom-body-arraybuffer + fn ArrayBuffer(&self) -> Rc { + consume_body(self, BodyType::ArrayBuffer) + } } fn serialize_without_fragment(url: &ServoUrl) -> &str { diff --git a/components/script/dom/webidls/Body.webidl b/components/script/dom/webidls/Body.webidl index bb7aa5c6859..1ea45746e73 100644 --- a/components/script/dom/webidls/Body.webidl +++ b/components/script/dom/webidls/Body.webidl @@ -10,7 +10,7 @@ interface Body { readonly attribute boolean bodyUsed; - // [NewObject] Promise arrayBuffer(); + [NewObject] Promise arrayBuffer(); [NewObject] Promise blob(); [NewObject] Promise formData(); [NewObject] Promise json();