aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNupur Baghel <nupurbaghel@gmail.com>2018-02-07 16:41:19 +0530
committerNupur Baghel <nupurbaghel@gmail.com>2018-02-09 09:32:56 +0530
commitd02422408e43ee279da81c091dd295e199d6b842 (patch)
treeea047bb3a0599856c3018e478953edd78b5d1d28
parent1662fd735731fcdd6184b4b89f8eb704357fd102 (diff)
downloadservo-d02422408e43ee279da81c091dd295e199d6b842.tar.gz
servo-d02422408e43ee279da81c091dd295e199d6b842.zip
Updated content_type of Document and XMLDocument from DOCString to Mime
-rw-r--r--components/script/dom/document.rs21
-rw-r--r--components/script/dom/domimplementation.rs9
-rw-r--r--components/script/dom/domparser.rs2
-rw-r--r--components/script/dom/xmldocument.rs5
-rw-r--r--components/script/dom/xmlhttprequest.rs5
-rw-r--r--components/script/script_thread.rs2
6 files changed, 23 insertions, 21 deletions
diff --git a/components/script/dom/document.rs b/components/script/dom/document.rs
index 436d4e71d1a..d51af513c4c 100644
--- a/components/script/dom/document.rs
+++ b/components/script/dom/document.rs
@@ -98,6 +98,7 @@ use ipc_channel::ipc::{self, IpcSender};
use js::jsapi::{JSContext, JSObject, JSRuntime};
use js::jsapi::JS_GetRuntime;
use metrics::{InteractiveFlag, InteractiveMetrics, InteractiveWindow, ProfilerMetadataFactory, ProgressiveWebMetric};
+use mime::{Mime, TopLevel, SubLevel};
use msg::constellation_msg::{BrowsingContextId, Key, KeyModifiers, KeyState, TopLevelBrowsingContextId};
use net_traits::{FetchResponseMsg, IpcSend, ReferrerPolicy};
use net_traits::CookieSource::NonHTTP;
@@ -236,7 +237,8 @@ pub struct Document {
node: Node,
window: Dom<Window>,
implementation: MutNullableDom<DOMImplementation>,
- content_type: DOMString,
+ #[ignore_malloc_size_of = "type from external crate"]
+ content_type: Mime,
last_modified: Option<String>,
encoding: Cell<&'static Encoding>,
has_browsing_context: bool,
@@ -2197,7 +2199,7 @@ impl Document {
url: Option<ServoUrl>,
origin: MutableOrigin,
is_html_document: IsHTMLDocument,
- content_type: Option<DOMString>,
+ content_type: Option<Mime>,
last_modified: Option<String>,
activity: DocumentActivity,
source: DocumentSource,
@@ -2222,12 +2224,12 @@ impl Document {
has_browsing_context: has_browsing_context == HasBrowsingContext::Yes,
implementation: Default::default(),
content_type: match content_type {
- Some(string) => string,
- None => DOMString::from(match is_html_document {
+ Some(mime_data) => mime_data,
+ None => Mime::from(match is_html_document {
// https://dom.spec.whatwg.org/#dom-domimplementation-createhtmldocument
- IsHTMLDocument::HTMLDocument => "text/html",
+ IsHTMLDocument::HTMLDocument => Mime(TopLevel::Text, SubLevel::Html, vec![]),
// https://dom.spec.whatwg.org/#concept-document-content-type
- IsHTMLDocument::NonHTMLDocument => "application/xml",
+ IsHTMLDocument::NonHTMLDocument => Mime(TopLevel::Application, SubLevel::Xml, vec![]),
}),
},
last_modified: last_modified,
@@ -2339,7 +2341,7 @@ impl Document {
url: Option<ServoUrl>,
origin: MutableOrigin,
doctype: IsHTMLDocument,
- content_type: Option<DOMString>,
+ content_type: Option<Mime>,
last_modified: Option<String>,
activity: DocumentActivity,
source: DocumentSource,
@@ -2889,7 +2891,7 @@ impl DocumentMethods for Document {
// https://dom.spec.whatwg.org/#dom-document-content_type
fn ContentType(&self) -> DOMString {
- self.content_type.clone()
+ DOMString::from(self.content_type.to_string())
}
// https://dom.spec.whatwg.org/#dom-document-doctype
@@ -2969,7 +2971,8 @@ impl DocumentMethods for Document {
local_name.make_ascii_lowercase();
}
- let ns = if self.is_html_document || self.content_type == "application/xhtml+xml" {
+ let is_xhtml = self.content_type.0 == TopLevel::Application && self.content_type.1.as_str() == "xhtml+xml";
+ let ns = if self.is_html_document || is_xhtml {
ns!(html)
} else {
ns!()
diff --git a/components/script/dom/domimplementation.rs b/components/script/dom/domimplementation.rs
index c25908e67a7..c93182aab6e 100644
--- a/components/script/dom/domimplementation.rs
+++ b/components/script/dom/domimplementation.rs
@@ -24,6 +24,7 @@ use dom::node::Node;
use dom::text::Text;
use dom::xmldocument::XMLDocument;
use dom_struct::dom_struct;
+use mime::{Mime, TopLevel, SubLevel};
use script_traits::DocumentActivity;
// https://dom.spec.whatwg.org/#domimplementation
@@ -72,9 +73,9 @@ impl DOMImplementationMethods for DOMImplementation {
let namespace = namespace_from_domstring(maybe_namespace.to_owned());
let content_type = match namespace {
- ns!(html) => "application/xhtml+xml",
- ns!(svg) => "image/svg+xml",
- _ => "application/xml"
+ ns!(html) => Mime(TopLevel::Application, SubLevel::Ext("xhtml+xml".to_string()), vec![]),
+ ns!(svg) => Mime(TopLevel::Image, SubLevel::Ext("svg+xml".to_string()), vec![]),
+ _ => Mime(TopLevel::Application, SubLevel::Xml, vec![])
};
// Step 1.
@@ -83,7 +84,7 @@ impl DOMImplementationMethods for DOMImplementation {
None,
self.document.origin().clone(),
IsHTMLDocument::NonHTMLDocument,
- Some(DOMString::from(content_type)),
+ Some(content_type),
None,
DocumentActivity::Inactive,
DocumentSource::NotFromParser,
diff --git a/components/script/dom/domparser.rs b/components/script/dom/domparser.rs
index c0de086569a..2d293d0a184 100644
--- a/components/script/dom/domparser.rs
+++ b/components/script/dom/domparser.rs
@@ -54,7 +54,7 @@ impl DOMParserMethods for DOMParser {
ty: DOMParserBinding::SupportedType)
-> Fallible<DomRoot<Document>> {
let url = self.window.get_url();
- let content_type = DOMString::from(ty.as_str());
+ let content_type = ty.as_str().parse().expect("Supported type is not a MIME type");
let doc = self.window.Document();
let loader = DocumentLoader::new(&*doc.loader());
match ty {
diff --git a/components/script/dom/xmldocument.rs b/components/script/dom/xmldocument.rs
index 68764eb1080..abd5ed64635 100644
--- a/components/script/dom/xmldocument.rs
+++ b/components/script/dom/xmldocument.rs
@@ -16,6 +16,7 @@ use dom::window::Window;
use dom_struct::dom_struct;
use js::jsapi::JSContext;
use js::jsapi::JSObject;
+use mime::Mime;
use script_traits::DocumentActivity;
use servo_url::{MutableOrigin, ServoUrl};
use std::ptr::NonNull;
@@ -32,7 +33,7 @@ impl XMLDocument {
url: Option<ServoUrl>,
origin: MutableOrigin,
is_html_document: IsHTMLDocument,
- content_type: Option<DOMString>,
+ content_type: Option<Mime>,
last_modified: Option<String>,
activity: DocumentActivity,
source: DocumentSource,
@@ -59,7 +60,7 @@ impl XMLDocument {
url: Option<ServoUrl>,
origin: MutableOrigin,
doctype: IsHTMLDocument,
- content_type: Option<DOMString>,
+ content_type: Option<Mime>,
last_modified: Option<String>,
activity: DocumentActivity,
source: DocumentSource,
diff --git a/components/script/dom/xmlhttprequest.rs b/components/script/dom/xmlhttprequest.rs
index 4e56661f0c4..33c62a38cd5 100644
--- a/components/script/dom/xmlhttprequest.rs
+++ b/components/script/dom/xmlhttprequest.rs
@@ -1271,10 +1271,7 @@ impl XMLHttpRequest {
Ok(parsed) => Some(parsed),
Err(_) => None // Step 7
};
- let mime_type = self.final_mime_type();
- let content_type = mime_type.map(|mime|{
- DOMString::from(format!("{}", mime))
- });
+ let content_type = self.final_mime_type();
Document::new(win,
HasBrowsingContext::No,
parsed_url,
diff --git a/components/script/script_thread.rs b/components/script/script_thread.rs
index c6f9dda250c..fd5fe44962f 100644
--- a/components/script/script_thread.rs
+++ b/components/script/script_thread.rs
@@ -2183,7 +2183,7 @@ impl ScriptThread {
let content_type = metadata.content_type
.as_ref()
- .map(|&Serde(ContentType(ref mimetype))| DOMString::from(mimetype.to_string()));
+ .map(|&Serde(ContentType(ref mimetype))| mimetype.clone());
let loader = DocumentLoader::new_with_threads(self.resource_threads.clone(),
Some(final_url.clone()));