aboutsummaryrefslogtreecommitdiffstats
path: root/components/script/dom
diff options
context:
space:
mode:
authorGregory Terzian <gterzian@users.noreply.github.com>2020-06-05 15:08:57 +0800
committerGregory Terzian <gterzian@users.noreply.github.com>2020-06-05 15:08:57 +0800
commitdc690653da22343aeb5ea47cea52f5a71d900a06 (patch)
tree5b0f5c8ceb5f72e0d55378e5f4bb93822f3fbe4d /components/script/dom
parent8536cee72cca0f8a4d9f7a14b47a8b16ed356179 (diff)
downloadservo-dc690653da22343aeb5ea47cea52f5a71d900a06.tar.gz
servo-dc690653da22343aeb5ea47cea52f5a71d900a06.zip
update XHR send to use XMLHttpRequestBodyInit
Diffstat (limited to 'components/script/dom')
-rw-r--r--components/script/dom/webidls/XMLHttpRequest.webidl7
-rw-r--r--components/script/dom/xmlhttprequest.rs40
2 files changed, 16 insertions, 31 deletions
diff --git a/components/script/dom/webidls/XMLHttpRequest.webidl b/components/script/dom/webidls/XMLHttpRequest.webidl
index 097b4f7177c..2c043b9407a 100644
--- a/components/script/dom/webidls/XMLHttpRequest.webidl
+++ b/components/script/dom/webidls/XMLHttpRequest.webidl
@@ -12,8 +12,11 @@
* http://www.openwebfoundation.org/legal/the-owf-1-0-agreements/owfa-1-0.
*/
+// https://fetch.spec.whatwg.org/#typedefdef-xmlhttprequestbodyinit
+typedef (Blob or BufferSource or FormData or DOMString or URLSearchParams) XMLHttpRequestBodyInit;
+
// https://fetch.spec.whatwg.org/#bodyinit
-typedef (Blob or BufferSource or FormData or DOMString or URLSearchParams or ReadableStream) BodyInit;
+typedef (ReadableStream or XMLHttpRequestBodyInit) BodyInit;
enum XMLHttpRequestResponseType {
"",
@@ -54,7 +57,7 @@ interface XMLHttpRequest : XMLHttpRequestEventTarget {
attribute boolean withCredentials;
readonly attribute XMLHttpRequestUpload upload;
[Throws]
- void send(optional (Document or BodyInit)? data = null);
+ void send(optional (Document or XMLHttpRequestBodyInit)? data = null);
void abort();
// response
diff --git a/components/script/dom/xmlhttprequest.rs b/components/script/dom/xmlhttprequest.rs
index 553cfcb40b0..03a5f5c7bff 100644
--- a/components/script/dom/xmlhttprequest.rs
+++ b/components/script/dom/xmlhttprequest.rs
@@ -8,7 +8,7 @@ use crate::dom::bindings::cell::DomRefCell;
use crate::dom::bindings::codegen::Bindings::WindowBinding::WindowMethods;
use crate::dom::bindings::codegen::Bindings::XMLHttpRequestBinding::XMLHttpRequestMethods;
use crate::dom::bindings::codegen::Bindings::XMLHttpRequestBinding::XMLHttpRequestResponseType;
-use crate::dom::bindings::codegen::UnionTypes::DocumentOrBodyInit;
+use crate::dom::bindings::codegen::UnionTypes::DocumentOrXMLHttpRequestBodyInit;
use crate::dom::bindings::conversions::ToJSValConvertible;
use crate::dom::bindings::error::{Error, ErrorResult, Fallible};
use crate::dom::bindings::inheritance::Castable;
@@ -547,7 +547,7 @@ impl XMLHttpRequestMethods for XMLHttpRequest {
}
// https://xhr.spec.whatwg.org/#the-send()-method
- fn Send(&self, data: Option<DocumentOrBodyInit>) -> ErrorResult {
+ fn Send(&self, data: Option<DocumentOrXMLHttpRequestBodyInit>) -> ErrorResult {
// Step 1, 2
if self.ready_state.get() != XMLHttpRequestState::Opened || self.send_flag.get() {
return Err(Error::InvalidState);
@@ -560,7 +560,7 @@ impl XMLHttpRequestMethods for XMLHttpRequest {
};
// Step 4 (first half)
let mut extracted_or_serialized = match data {
- Some(DocumentOrBodyInit::Document(ref doc)) => {
+ Some(DocumentOrXMLHttpRequestBodyInit::Document(ref doc)) => {
let bytes = Vec::from(serialize_document(&doc)?.as_ref());
let content_type = if doc.is_html_document() {
"text/html;charset=UTF-8"
@@ -577,7 +577,7 @@ impl XMLHttpRequestMethods for XMLHttpRequest {
source: BodySource::Object,
})
},
- Some(DocumentOrBodyInit::Blob(ref b)) => {
+ Some(DocumentOrXMLHttpRequestBodyInit::Blob(ref b)) => {
let extracted_body = b.extract(&self.global()).expect("Couldn't extract body.");
if !extracted_body.in_memory() && self.sync.get() {
warn!("Sync XHR with not in-memory Blob as body not supported");
@@ -586,20 +586,20 @@ impl XMLHttpRequestMethods for XMLHttpRequest {
Some(extracted_body)
}
},
- Some(DocumentOrBodyInit::FormData(ref formdata)) => Some(
+ Some(DocumentOrXMLHttpRequestBodyInit::FormData(ref formdata)) => Some(
formdata
.extract(&self.global())
.expect("Couldn't extract body."),
),
- Some(DocumentOrBodyInit::String(ref str)) => {
+ Some(DocumentOrXMLHttpRequestBodyInit::String(ref str)) => {
Some(str.extract(&self.global()).expect("Couldn't extract body."))
},
- Some(DocumentOrBodyInit::URLSearchParams(ref urlsp)) => Some(
+ Some(DocumentOrXMLHttpRequestBodyInit::URLSearchParams(ref urlsp)) => Some(
urlsp
.extract(&self.global())
.expect("Couldn't extract body."),
),
- Some(DocumentOrBodyInit::ArrayBuffer(ref typedarray)) => {
+ Some(DocumentOrXMLHttpRequestBodyInit::ArrayBuffer(ref typedarray)) => {
let bytes = typedarray.to_vec();
let total_bytes = bytes.len();
let global = self.global();
@@ -611,7 +611,7 @@ impl XMLHttpRequestMethods for XMLHttpRequest {
source: BodySource::Object,
})
},
- Some(DocumentOrBodyInit::ArrayBufferView(ref typedarray)) => {
+ Some(DocumentOrXMLHttpRequestBodyInit::ArrayBufferView(ref typedarray)) => {
let bytes = typedarray.to_vec();
let total_bytes = bytes.len();
let global = self.global();
@@ -623,25 +623,6 @@ impl XMLHttpRequestMethods for XMLHttpRequest {
source: BodySource::Object,
})
},
- Some(DocumentOrBodyInit::ReadableStream(ref stream)) => {
- if self.sync.get() {
- warn!("Sync XHR with ReadableStream as body not supported");
- None
- } else {
- if stream.is_locked() || stream.is_disturbed() {
- return Err(Error::Type(
- "The body's stream is disturbed or locked".to_string(),
- ));
- }
-
- Some(ExtractedBody {
- stream: stream.clone(),
- total_bytes: None,
- content_type: None,
- source: BodySource::Null,
- })
- }
- },
None => None,
};
@@ -725,7 +706,8 @@ impl XMLHttpRequestMethods for XMLHttpRequest {
match content_type {
Some(content_type) => {
let encoding = match data {
- Some(DocumentOrBodyInit::String(_)) | Some(DocumentOrBodyInit::Document(_)) =>
+ Some(DocumentOrXMLHttpRequestBodyInit::String(_)) |
+ Some(DocumentOrXMLHttpRequestBodyInit::Document(_)) =>
// XHR spec differs from http, and says UTF-8 should be in capitals,
// instead of "utf-8", which is what Hyper defaults to. So not
// using content types provided by Hyper.