aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--components/script/dom/element.rs22
-rw-r--r--components/script/parse/html.rs16
2 files changed, 12 insertions, 26 deletions
diff --git a/components/script/dom/element.rs b/components/script/dom/element.rs
index 37bf2d2ca23..cc3a6304eb3 100644
--- a/components/script/dom/element.rs
+++ b/components/script/dom/element.rs
@@ -1172,11 +1172,10 @@ impl<'a> ElementMethods for JSRef<'a, Element> {
}
fn SetInnerHTML(self, value: DOMString) -> Fallible<()> {
- // 1. Let fragment be the result of invoking the fragment parsing algorithm
- // with the new value as markup, and the context object as the context element.
- // 2. Replace all with fragment within the context object.
let context_node: JSRef<Node> = NodeCast::from_ref(self);
+ // Step 1.
let frag = try!(context_node.parse_fragment(value));
+ // Step 2.
Node::replace_all(Some(NodeCast::from_ref(frag.root().r())), context_node);
Ok(())
}
@@ -1188,22 +1187,18 @@ impl<'a> ElementMethods for JSRef<'a, Element> {
fn SetOuterHTML(self, value: DOMString) -> Fallible<()> {
let context_document = document_from_node(self).root();
let context_node: JSRef<Node> = NodeCast::from_ref(self);
- // 1. Let parent be the context object's parent.
+ // Step 1.
let context_parent = match context_node.parent_node() {
- // 2. If parent is null, terminate these steps.
+ // Step 2.
None => return Ok(()),
Some(parent) => parent.root()
};
let parent: Root<Node> = match context_parent.r().type_id() {
- // 3. If parent is a Document, throw a DOMException
- // with name "NoModificationAllowedError" exception.
+ // Step 3.
NodeTypeId::Document => return Err(NoModificationAllowed),
- // 4. If parent is a DocumentFragment, let parent be a new Element with
- // body as its local name,
- // The HTML namespace as its namespace, and
- // The context object's node document as its node document.
+ // Step 4.
NodeTypeId::DocumentFragment => {
let body_elem = Element::create(QualName::new(ns!(HTML), atom!(body)),
None, context_document.r(),
@@ -1214,10 +1209,9 @@ impl<'a> ElementMethods for JSRef<'a, Element> {
_ => context_node.parent_node().unwrap().root()
};
- // 5. Let fragment be the result of invoking the fragment parsing algorithm with
- // the new value as markup, and parent as the context element.
- // 6. Replace the context object with fragment within the context object's parent.
+ // Step 5.
let frag = try!(parent.r().parse_fragment(value));
+ // Step 6.
try!(context_parent.r().ReplaceChild(NodeCast::from_ref(frag.root().r()),
context_node));
Ok(())
diff --git a/components/script/parse/html.rs b/components/script/parse/html.rs
index ad8c56ba613..f6cf86bf122 100644
--- a/components/script/parse/html.rs
+++ b/components/script/parse/html.rs
@@ -336,24 +336,16 @@ pub fn parse_html_fragment(context_node: JSRef<Node>, input: DOMString) -> Vec<T
let context_document = document_from_node(context_node).root();
let url = context_document.r().url();
- // 1. Create a new Document node, and mark it as being an HTML document.
+ // Step 1.
let document = Document::new(window.r(), Some(url.clone()),
IsHTMLDocument::HTMLDocument,
None, None,
DocumentSource::FromParser).root();
- // 2. If the node document of the context element is in quirks mode,
- // then let the Document be in quirks mode. Otherwise,
- // the node document of the context element is in limited-quirks mode,
- // then let the Document be in limited-quirks mode. Otherwise,
- // leave the Document in no-quirks mode.
+ // Step 2.
document.r().set_quirks_mode(context_document.r().quirks_mode());
- // 11. Set the parser's form element pointer to the nearest node to
- // the context element that is a form element (going straight up
- // the ancestor chain, and including the element itself, if it
- // is a form element), if any. (If there is no such form element,
- // the form element pointer keeps its initial value, null.)
+ // Step 11.
let form = context_node.inclusive_ancestors()
.find(|element| element.is_htmlformelement());
let fragment_context = FragmentContext {
@@ -362,7 +354,7 @@ pub fn parse_html_fragment(context_node: JSRef<Node>, input: DOMString) -> Vec<T
};
parse_html(document.r(), HTMLInput::InputString(input), &url, Some(fragment_context));
- // "14. Return the child nodes of root, in tree order."
+ // Step 14.
let root_element = document.r().GetDocumentElement().expect("no document element").root();
let root_node: JSRef<Node> = NodeCast::from_ref(root_element.r());
root_node.children()