From c0b5eeef575356b05472a5a6759c9eaedbe9cd4d Mon Sep 17 00:00:00 2001 From: OJ Kwon Date: Fri, 23 Mar 2018 12:11:41 -0700 Subject: [PATCH] feat(webidl): expose arraybuffer overload in body idl --- components/script/body.rs | 3 ++- components/script/dom/request.rs | 6 ++++++ components/script/dom/response.rs | 6 ++++++ components/script/dom/webidls/Body.webidl | 2 +- 4 files changed, 15 insertions(+), 2 deletions(-) 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();