aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--components/script/dom/xmlhttprequest.rs43
-rw-r--r--tests/wpt/metadata/XMLHttpRequest/overridemimetype-headers-received-state-force-shiftjis.htm.ini5
-rw-r--r--tests/wpt/metadata/XMLHttpRequest/overridemimetype-open-state-force-utf-8.htm.ini6
-rw-r--r--tests/wpt/metadata/XMLHttpRequest/overridemimetype-unsent-state-force-shiftjis.htm.ini6
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
-