aboutsummaryrefslogtreecommitdiffstats
path: root/components/script/dom/servoparser/mod.rs
diff options
context:
space:
mode:
Diffstat (limited to 'components/script/dom/servoparser/mod.rs')
-rw-r--r--components/script/dom/servoparser/mod.rs31
1 files changed, 17 insertions, 14 deletions
diff --git a/components/script/dom/servoparser/mod.rs b/components/script/dom/servoparser/mod.rs
index e64580f68c1..cacd54d2f1a 100644
--- a/components/script/dom/servoparser/mod.rs
+++ b/components/script/dom/servoparser/mod.rs
@@ -35,9 +35,8 @@ use html5ever::{Attribute, ExpandedName, LocalName, QualName};
use html5ever::buffer_queue::BufferQueue;
use html5ever::tendril::{StrTendril, ByteTendril, IncompleteUtf8};
use html5ever::tree_builder::{NodeOrText, TreeSink, NextParserState, QuirksMode, ElementFlags};
-use hyper::header::ContentType;
-use hyper::mime::{Mime, SubLevel, TopLevel};
use hyper_serde::Serde;
+use mime::{self, Mime};
use msg::constellation_msg::PipelineId;
use net_traits::{FetchMetadata, FetchResponseListener, Metadata, NetworkError};
use network_listener::PreInvoke;
@@ -697,10 +696,11 @@ impl FetchResponseListener for ParserContext {
},
Err(_) => None,
};
- let content_type = metadata
+ let content_type: Option<Mime> = metadata
.clone()
.and_then(|meta| meta.content_type)
- .map(Serde::into_inner);
+ .map(Serde::into_inner)
+ .map(Into::into);
let parser = match ScriptThread::page_headers_available(&self.id, metadata) {
Some(parser) => parser,
None => return,
@@ -712,7 +712,7 @@ impl FetchResponseListener for ParserContext {
self.parser = Some(Trusted::new(&*parser));
match content_type {
- Some(ContentType(Mime(TopLevel::Image, _, _))) => {
+ Some(ref mime) if mime.type_() == mime::IMAGE => {
self.is_synthesized_document = true;
let page = "<html><body></body></html>".into();
parser.push_string_input_chunk(page);
@@ -725,14 +725,14 @@ impl FetchResponseListener for ParserContext {
doc_body.AppendChild(&DomRoot::upcast::<Node>(img)).expect("Appending failed");
},
- Some(ContentType(Mime(TopLevel::Text, SubLevel::Plain, _))) => {
+ Some(ref mime) if mime.type_() == mime::TEXT && mime.subtype() == mime::PLAIN => {
// https://html.spec.whatwg.org/multipage/#read-text
let page = "<pre>\n".into();
parser.push_string_input_chunk(page);
parser.parse_sync();
parser.tokenizer.borrow_mut().set_plaintext_state();
},
- Some(ContentType(Mime(TopLevel::Text, SubLevel::Html, _))) => {
+ Some(ref mime) if mime.type_() == mime::TEXT && mime.subtype() == mime::HTML => {
// Handle text/html
if let Some(reason) = ssl_error {
self.is_synthesized_document = true;
@@ -749,15 +749,18 @@ impl FetchResponseListener for ParserContext {
parser.parse_sync();
}
},
- Some(ContentType(Mime(TopLevel::Text, SubLevel::Xml, _))) | // Handle text/xml, application/xml
- Some(ContentType(Mime(TopLevel::Application, SubLevel::Xml, _))) => {},
- Some(ContentType(Mime(TopLevel::Application, SubLevel::Ext(ref sub), _)))
- if sub.as_str() == "xhtml+xml".to_owned() => {}, // Handle xhtml (application/xhtml+xml)
- Some(ContentType(Mime(toplevel, sublevel, _))) => {
+ // Handle text/xml, application/xml
+ Some(ref mime) if (mime.type_() == mime::TEXT && mime.subtype() == mime::XML) ||
+ (mime.type_() == mime::APPLICATION && mime.subtype() == mime::XML) => {},
+ Some(ref mime) if mime.type_() == mime::APPLICATION &&
+ mime.subtype().as_str() == "xhtml" &&
+ mime.suffix() == Some(mime::XML)
+ => {}, // Handle xhtml (application/xhtml+xml)
+ Some(ref mime) => {
// Show warning page for unknown mime types.
let page = format!("<html><body><p>Unknown content type ({}/{}).</p></body></html>",
- toplevel.as_str(),
- sublevel.as_str());
+ mime.type_().as_str(),
+ mime.subtype().as_str());
self.is_synthesized_document = true;
parser.push_string_input_chunk(page);
parser.parse_sync();