mirror of
https://github.com/servo/servo.git
synced 2025-07-01 20:43:39 +01:00
Auto merge of #8739 - jitendra29:finalMimeAndCharsetHelper, r=eefriedman
M1504: Implement final charset support for text_response method Following changes have been made: * Added final_mime_type and final_charset helper methods to return the appropriate final mime/charset values * Modified the text_response method to use the final_charset instead of directly using the response charset <!-- Reviewable:start --> [<img src="https://reviewable.io/review_button.png" height=40 alt="Review on Reviewable"/>](https://reviewable.io/reviews/servo/servo/8739) <!-- Reviewable:end -->
This commit is contained in:
commit
6ec454b7f5
4 changed files with 30 additions and 30 deletions
|
@ -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 {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue