Auto merge of #10503 - canaltinova:master, r=KiChjang

Replaced SendParam with BodyInit

Replaced SendParam with BodyInit. Fixes #9433 .

<!-- Reviewable:start -->
---
This change is [<img src="https://reviewable.io/review_button.svg" height="35" align="absmiddle" alt="Reviewable"/>](https://reviewable.io/reviews/servo/servo/10503)
<!-- Reviewable:end -->
This commit is contained in:
bors-servo 2016-04-10 03:38:08 +05:30
commit e10ab5ae53

View file

@ -10,9 +10,9 @@ use dom::bindings::codegen::Bindings::BlobBinding::BlobMethods;
use dom::bindings::codegen::Bindings::EventHandlerBinding::EventHandlerNonNull; use dom::bindings::codegen::Bindings::EventHandlerBinding::EventHandlerNonNull;
use dom::bindings::codegen::Bindings::WindowBinding::WindowMethods; use dom::bindings::codegen::Bindings::WindowBinding::WindowMethods;
use dom::bindings::codegen::Bindings::XMLHttpRequestBinding; use dom::bindings::codegen::Bindings::XMLHttpRequestBinding;
use dom::bindings::codegen::Bindings::XMLHttpRequestBinding::BodyInit;
use dom::bindings::codegen::Bindings::XMLHttpRequestBinding::XMLHttpRequestMethods; use dom::bindings::codegen::Bindings::XMLHttpRequestBinding::XMLHttpRequestMethods;
use dom::bindings::codegen::Bindings::XMLHttpRequestBinding::XMLHttpRequestResponseType; use dom::bindings::codegen::Bindings::XMLHttpRequestBinding::XMLHttpRequestResponseType;
use dom::bindings::codegen::UnionTypes::BlobOrStringOrURLSearchParams;
use dom::bindings::conversions::{ToJSValConvertible}; use dom::bindings::conversions::{ToJSValConvertible};
use dom::bindings::error::{Error, ErrorResult, Fallible}; use dom::bindings::error::{Error, ErrorResult, Fallible};
use dom::bindings::global::{GlobalRef, GlobalRoot}; use dom::bindings::global::{GlobalRef, GlobalRoot};
@ -65,8 +65,6 @@ use url::percent_encoding::{utf8_percent_encode, USERNAME_ENCODE_SET, PASSWORD_E
use util::prefs; use util::prefs;
use util::str::DOMString; use util::str::DOMString;
pub type SendParam = BlobOrStringOrURLSearchParams;
#[derive(JSTraceable, PartialEq, Copy, Clone, HeapSizeOf)] #[derive(JSTraceable, PartialEq, Copy, Clone, HeapSizeOf)]
enum XMLHttpRequestState { enum XMLHttpRequestState {
Unsent = 0, Unsent = 0,
@ -530,7 +528,7 @@ impl XMLHttpRequestMethods for XMLHttpRequest {
} }
// https://xhr.spec.whatwg.org/#the-send()-method // https://xhr.spec.whatwg.org/#the-send()-method
fn Send(&self, data: Option<SendParam>) -> ErrorResult { fn Send(&self, data: Option<BodyInit>) -> ErrorResult {
// Step 1, 2 // Step 1, 2
if self.ready_state.get() != XMLHttpRequestState::Opened || self.send_flag.get() { if self.ready_state.get() != XMLHttpRequestState::Opened || self.send_flag.get() {
return Err(Error::InvalidState); return Err(Error::InvalidState);
@ -1397,21 +1395,21 @@ impl XHRTimeoutCallback {
trait Extractable { trait Extractable {
fn extract(&self) -> (Vec<u8>, Option<DOMString>); fn extract(&self) -> (Vec<u8>, Option<DOMString>);
} }
impl Extractable for SendParam { impl Extractable for BodyInit {
// https://fetch.spec.whatwg.org/#concept-bodyinit-extract // https://fetch.spec.whatwg.org/#concept-bodyinit-extract
fn extract(&self) -> (Vec<u8>, Option<DOMString>) { fn extract(&self) -> (Vec<u8>, Option<DOMString>) {
match *self { match *self {
BlobOrStringOrURLSearchParams::String(ref s) => { BodyInit::String(ref s) => {
let encoding = UTF_8 as EncodingRef; let encoding = UTF_8 as EncodingRef;
(encoding.encode(s, EncoderTrap::Replace).unwrap(), (encoding.encode(s, EncoderTrap::Replace).unwrap(),
Some(DOMString::from("text/plain;charset=UTF-8"))) Some(DOMString::from("text/plain;charset=UTF-8")))
}, },
BlobOrStringOrURLSearchParams::URLSearchParams(ref usp) => { BodyInit::URLSearchParams(ref usp) => {
// Default encoding is UTF-8. // Default encoding is UTF-8.
(usp.serialize(None).into_bytes(), (usp.serialize(None).into_bytes(),
Some(DOMString::from("application/x-www-form-urlencoded;charset=UTF-8"))) Some(DOMString::from("application/x-www-form-urlencoded;charset=UTF-8")))
}, },
BlobOrStringOrURLSearchParams::Blob(ref b) => { BodyInit::Blob(ref b) => {
let data = b.get_data(); let data = b.get_data();
let content_type = if b.Type().as_ref().is_empty() { let content_type = if b.Type().as_ref().is_empty() {
None None