diff options
4 files changed, 30 insertions, 30 deletions
diff --git a/components/script/dom/xmlhttprequest.rs b/components/script/dom/xmlhttprequest.rs index 24a93225d2b..24bd012f105 100644 --- a/components/script/dom/xmlhttprequest.rs +++ b/components/script/dom/xmlhttprequest.rs @@ -995,20 +995,9 @@ impl XMLHttpRequest { } } - //FIXME: add support for override_mime_type and override_charset + //FIXME: add support for XML encoding guess stuff using XML spec fn text_response(&self) -> String { - let mut encoding = UTF_8 as EncodingRef; - match self.response_headers.borrow().get() { - Some(&ContentType(mime::Mime(_, _, ref params))) => { - for &(ref name, ref value) in params { - if name == &mime::Attr::Charset { - encoding = encoding_from_whatwg_label(&value.to_string()).unwrap_or(encoding); - } - } - }, - None => {} - } - + let encoding = self.final_charset().unwrap_or(UTF_8); // According to Simon, decode() should never return an error, so unwrap()ing // the result should be fine. XXXManishearth have a closer look at this later @@ -1102,6 +1091,34 @@ impl XMLHttpRequest { } Ok(()) } + + fn final_charset(&self) -> Option<EncodingRef> { + if self.override_charset.borrow().is_some() { + self.override_charset.borrow().clone() + } else { + match self.response_headers.borrow().get() { + Some(&ContentType(ref mime)) => { + let value = mime.get_param(mime::Attr::Charset); + value.and_then(|value|{ + encoding_from_whatwg_label(value) + }) + } + None => { None } + } + } + } + + #[allow(dead_code)] + fn final_mime_type(&self) -> Option<Mime> { + if self.override_mime_type.borrow().is_some() { + self.override_mime_type.borrow().clone() + } else { + match self.response_headers.borrow().get() { + Some(&ContentType(ref mime)) => { Some(mime.clone()) }, + None => { None } + } + } + } } trait Extractable { diff --git a/tests/wpt/metadata/XMLHttpRequest/overridemimetype-headers-received-state-force-shiftjis.htm.ini b/tests/wpt/metadata/XMLHttpRequest/overridemimetype-headers-received-state-force-shiftjis.htm.ini deleted file mode 100644 index d1e0a0d2114..00000000000 --- a/tests/wpt/metadata/XMLHttpRequest/overridemimetype-headers-received-state-force-shiftjis.htm.ini +++ /dev/null @@ -1,5 +0,0 @@ -[overridemimetype-headers-received-state-force-shiftjis.htm] - type: testharness - [XMLHttpRequest: overrideMimeType() in HEADERS RECEIVED state, enforcing Shift-JIS encoding] - expected: FAIL - diff --git a/tests/wpt/metadata/XMLHttpRequest/overridemimetype-open-state-force-utf-8.htm.ini b/tests/wpt/metadata/XMLHttpRequest/overridemimetype-open-state-force-utf-8.htm.ini deleted file mode 100644 index 8138e2ed72a..00000000000 --- a/tests/wpt/metadata/XMLHttpRequest/overridemimetype-open-state-force-utf-8.htm.ini +++ /dev/null @@ -1,6 +0,0 @@ -[overridemimetype-open-state-force-utf-8.htm] - type: testharness - expected: TIMEOUT - [XMLHttpRequest: overrideMimeType() in open state, enforcing UTF-8 encoding] - expected: TIMEOUT - diff --git a/tests/wpt/metadata/XMLHttpRequest/overridemimetype-unsent-state-force-shiftjis.htm.ini b/tests/wpt/metadata/XMLHttpRequest/overridemimetype-unsent-state-force-shiftjis.htm.ini deleted file mode 100644 index 625100da359..00000000000 --- a/tests/wpt/metadata/XMLHttpRequest/overridemimetype-unsent-state-force-shiftjis.htm.ini +++ /dev/null @@ -1,6 +0,0 @@ -[overridemimetype-unsent-state-force-shiftjis.htm] - type: testharness - expected: TIMEOUT - [XMLHttpRequest: overrideMimeType() in unsent state, enforcing Shift-JIS encoding] - expected: TIMEOUT - |