aboutsummaryrefslogtreecommitdiffstats
path: root/components/script/parse/html.rs
diff options
context:
space:
mode:
Diffstat (limited to 'components/script/parse/html.rs')
-rw-r--r--components/script/parse/html.rs15
1 files changed, 12 insertions, 3 deletions
diff --git a/components/script/parse/html.rs b/components/script/parse/html.rs
index a2dd0109ed1..d7e1535e487 100644
--- a/components/script/parse/html.rs
+++ b/components/script/parse/html.rs
@@ -6,11 +6,12 @@
use document_loader::DocumentLoader;
use dom::bindings::codegen::Bindings::DocumentBinding::DocumentMethods;
+use dom::bindings::codegen::Bindings::HTMLTemplateElementBinding::HTMLTemplateElementMethods;
use dom::bindings::codegen::Bindings::NodeBinding::NodeMethods;
-use dom::bindings::codegen::InheritTypes::ProcessingInstructionCast;
use dom::bindings::codegen::InheritTypes::{CharacterDataCast, DocumentTypeCast};
-use dom::bindings::codegen::InheritTypes::{ElementCast, HTMLScriptElementCast};
-use dom::bindings::codegen::InheritTypes::{HTMLFormElementDerived, NodeCast};
+use dom::bindings::codegen::InheritTypes::{ElementCast, HTMLFormElementDerived};
+use dom::bindings::codegen::InheritTypes::{HTMLScriptElementCast, HTMLTemplateElementCast};
+use dom::bindings::codegen::InheritTypes::{NodeCast, ProcessingInstructionCast};
use dom::bindings::js::{JS, Root};
use dom::bindings::js::{RootedReference};
use dom::characterdata::CharacterDataTypeId;
@@ -43,12 +44,20 @@ use util::str::DOMString;
impl<'a> TreeSink for servohtmlparser::Sink {
type Handle = JS<Node>;
+
fn get_document(&mut self) -> JS<Node> {
let doc = self.document.root();
let node = NodeCast::from_ref(doc.r());
JS::from_ref(node)
}
+ fn get_template_contents(&self, target: JS<Node>) -> JS<Node> {
+ let target = target.root();
+ let template = HTMLTemplateElementCast::to_ref(&*target)
+ .expect("tried to get template contents of non-HTMLTemplateElement in HTML parsing");
+ JS::from_ref(NodeCast::from_ref(&*template.Content()))
+ }
+
fn same_node(&self, x: JS<Node>, y: JS<Node>) -> bool {
x == y
}